What Distinguishes Great Software Engineers?
Effective decision-making may be an overlooked skill for developers.
This week I read What Distinguishes Great Software Engineers?, a paper by Microsoft researchers Paul Luo Li, Amy J. Ko, and Andrew Begel. This research study sought to identify the most important attributes that distinguish great engineers. The findings are valuable to leaders who hire or coach developers, as well as developers who are aspiring to grow their skills and careers.
My summary of the paper
Software engineering research has long aspired to develop an understanding of what it means to be a “great” engineer. Early research used metrics like lines of code to attempt to quantify differences between great engineers and ordinary ones, leading to the popular software engineering meme of the “10x developer”.
Numerous recent studies have led to an understanding that personality traits, technical abilities, and interpersonal skills collectively combine to distinguish great engineers. One such model of specific attributes was developed by the authors of this paper in a previous study, as shown below.
Although we have a model for attributes of great engineers, there’s still a lack of an understanding of the relative importance of these characteristics. To answer this, the authors of this paper surveyed 1,926 senior engineers across 67 counties and conducted 77 follow-up interviews to determine the relative importance of the attributes.
The top five attributes that distinguish great engineers
The study ranked attributes based on developers’ ratings of whether an attribute was essential for “greatness”. The analysis yielded the top five attributes that distinguish great engineers: “writing good code, adjusting behaviors to account for future value and costs, practicing informed decision-making, avoiding making others’ jobs harder, and learning continuously.” The authors also interviewed developers to understand why the top five attributes were perceived as the most important.
As a software developer, having a clear path for career progression or personal mastery has always felt elusive. There’s a lot of industry attention right now on improving IC Staff+ career paths for engineers, but there’s still a great deal of ambiguity surrounding what it means to be an engineer of that level.
This study brings an interesting perspective to this conversation by shining a light on what developers themselves view as distinguishing someone as a great engineer. I think that both leaders and developers can benefit from this research by helping inform the way we approach hiring, upskilling, and growth in our profession.
Other recommended reads
“Paper cuts” — a lens for understanding the developer experience | Rebecca Murphey, Engineering Manager - Developer Productivity at Stripe
Rebecca shares how Stripe’s DevProd team sought to understand, and then improve, their developer experience. One idea she shared: “we would make it really easy for engineers to complain about things… We called the complaints submitted by engineers ‘paper cuts,’ and added cute buttons to most engineering tools’ UIs to make them easy to submit. Engineers could tell us what was going wrong for them in the moment—in their editor, on a wiki page, in Slack, in GitHub… We quickly realized just how many blind spots we had into the lived experiences of software engineers.”
Calculate the Cost of Delay for the problem you want to solve | Crystal Hirschorn, Director of Platform, SRE, and Developer Experience at Snyk
When making a business case for investing in developer experience improvements, calculate and report the cost of delay. “If we have 100 engineers, what happens if our build takes 20 minutes? What happens if it takes 30 minutes, 40 minutes, or if we bring it down to five minutes?… You start to see just how much money you're wasting.”
How to interview a VP of Engineering | Karim Fanous, VPE at StrongDM
Karim shares some of the questions he’s encountered in VPE interviews from different groups (e.g., questions from CTOs, CEOs, etc.).
That’s it for this week! If you know someone who would enjoy this newsletter, please consider sharing it with them.
As always, reach out with thoughts about this newsletter on Twitter at @abinoda, or reply to this email.