What Makes a Great Software Engineer? with Paul Li
“At the end of the day, to make changes [to software], it still takes a dev, a butt in a seat somewhere to type SD Commit.” – Partner Dev Manager, Windows
Good software engineers are essential to the engineering of good software. Regardless of the advances in technologies, processes, and tools, it still takes a software engineer—a butt in a seat somewhere—to decide what software to build and how to build it. It follows that understanding attributes of software engineering expertise is foundational to our world’s rapidly growing software ecosystem: companies want to hire and retrain great engineers, universities want to train great engineers, and young engineers want to know what it takes to become great.
The knowledge we do have about software engineering expertise vary greatly in specificity, scope, rigor, and recency. Many research studies address expertise only indirectly, and most studies consider only a small set of attributes. The volume of information we have available belies the lack of rigorous understanding. In this talk, we discuss findings about what expert engineers think are the attributes of software engineering expertise, based on 59 semi-structured interviews, spanning 13 Microsoft divisions, including several interviews with architect-level engineers with over 25 years of experience. We discuss and explain attributes spanning personality attributes, their decision-making abilities, interactions with teammates, and their software designs.
Paul Li is a Senior Data Scientist at Microsoft’s Windows and Devices Group, and is also a Ph.D. candidate at the University of Washington’s Information School. He has been a researcher and practitioner of software engineering for over a decade, with experiences at Avaya, ABB, IBM, and Microsoft. He received his B.A. in Mathematics from the University of Virginia in 2001, and a M.S. in Software Engineer from Carnegie Mellon University in 2007.