What Makes a Great Software Engineer?

Author(s): P. Li, A. Ko, J. Zhu
Venue: International Conference on Software Engineering
Date: 2015

Type of Experiement: Survey/Multi-Case Study
Sample Size: 59
Class/Experience Level: Professional
Participant Selection: "Experienced" engineers across 13 divisions at Microsoft
Data Collection Method: Observation, Survey


In this paper, the authors share their research on what makes a good software engineer. They express that what we know about software-engineering expertise are vague stereotypes, such as 'excellent communicators' and 'great teammates', and share their desire for more specificity, breadth, rigor on this topic. In order to remedy this issue, they investigated the following three things about software engineers:

  • What do expert software engineers think are attributes of great software engineers?
  • Why are these attributes important for the engineering of software?
  • How do these attributes relate to each other?
  • To answer these questions, the authors performed semi-structured interviews on 59 Microsoft software engineers, spanning 13 Microsoft divisions, including several interviews with architect-level engineers with over 25 years of experience. The results of this identified a diverse set of 53 attributes of great software engineers. At a high level, the participants described great engineers as people who "are passionate about their jobs and are continuously improving; who develop and maintain practical decision-making models based on theory and experience; who grow their capability to produce software that are elegant, creative, and anticipate needs; who evaluate tradeoffs at multiple levels of abstraction, from low-level technical details to big picture strategies; and whom teammates trust and enjoy working with." The paper includes figures with these attributes and characteristics in more detail.