What Makes a Great Software Engineer
Li, Paul Luo
MetadataShow full item record
Good software engineers are essential to the creation of good software. However, today, we lack a holistic, contextual, and real-world understanding of software engineering expertise. In this dissertation, we address this gap by investigating the thesis: “Experts involved in the creation of software view software engineering expertise as holistically encompassing internal personality attributes, attributes regarding engagement with others, in addition to technical capabilities in designing and writing code. Furthermore, the ability to make good decisions (e.g. choosing what software to write and how to write), which has not yet been articulated by previous research studies, is also critically important. The key aspects of being a great software engineer are: writing good code, adjusting behaviors to account for future values and costs, practicing informed decision-making, avoiding making others’ jobs harder, and learning continuously.” We interview 59 expert Microsoft software engineers to inductively understand what software engineering expertise entailed. We survey 1,926 more expert Microsoft software engineers to understand the relative importance of the 45 attributes of expertise derived from interviews, as well as to understand the influence of context on ratings. Finally, we interview 46 expert non-software-engineers who have collaborated with software engineers to understand their perspectives. We collectively consider all our data to answer the question: what makes a great software engineer?
- Information science