What Makes a Great Software Engineer According to Microsoft

Photo by Jonatan Pie on Unsplash

I’ve recently wondered what makes a great software engineer. Happily, I don’t need to as those scientists with glasses and clipboards at Microsoft Research have already worked out what makes a great software engineer.

To save you the effort of reading this article I’ll tell you. It’s three things:

  • Passion

  • Knowledge

  • Experience

If you want to know what to do with knowledge scroll to the end of the article.

If you’re still here because you really really want (what you really really want) to know what makes a great software engineer you’re in for a treat. Let me explain to you how you can supercharge your software engineering development journey and become OP in coding.

All 54 Attributes of Great Software Engineers

There are 54 attributes of great software engineers. Microsoft happily put this information into a diagram for us software developers.

Great software engineers are people who are passionate about their jobs and are continuously improving to always get better.

Not only that, but they also display the following attributes:

  • grow their software development capability

  • anticipate needs

  • evaluate tradeoffs at multiple levels of abstraction

  • understand low-level technical details as well as big-picture strategies

  • are trusted by teammates

  • are people who it is enjoyable to work with

That sounds great!

This is a pretty comprehensive vocabulary that could be used in promo reviews, annual reviews, and interview feedback.

I think this is a framework we can use to understand what types of attributes are important if you seek to be a great software developer. 

Teamwork? Sure, that is something we need throughout our team. Working to be better at your job? That makes sense.

Look down the list and you’ll see a checkbox list of things you should think about improving in your professional life. When you see the list perhaps you should start to work down it and begin making strides to improve in each aspect of your working life. 

What the Attributes Tell Us

There are several attributes that are listed here, and they will indeed be useful as a list for self-improvement. This list is also a boon to those who mentor engineers and managers of technical staff. 

Yet this tells us that most of our engineering managers are as a group unable to think outside the box and come up with novel ways to improve themselves or mentor colleagues.

The fact that this article seems to generate a list which is easily compatible with job descriptions and adverts tells us about recruiters. That they look for easy solutions and criteria for technical staff, and they have found Microsoft to be a willing ally in this venture, perhaps unwittingly. 

But…Toxicity

Consider this quote from the paper

study different articles and research papers on software development and stuff. So, they’re more up to date on newer technologies and newer ideas and thoughts of software architecture or software engineering in general… they are essentially continuing their education and continuing to look, to do things better, is a really big plus”

This certainly is (in their terminology), a big plus. What company would turn down an employee who will work for free? Exchange their labor for the promise of a promotion or a thank you isn’t a mark of a great software engineer but is a potential signal for a mug.

But…The Real Answer

It’s LeetCode, isn’t it?

LeetCode makes great software engineers. If not, why would so many companies rely on them to rate their potential employees?

I’d say this part of this article is a parody but frankly isn’t.

So What Should You Do?

Remember right at the start of this article I said the paper pointed to three attributes a great coder should have:

  • Passion

  • Knowledge

  • Experience

That means you know what to do. 

You should get a job that you’d do even if you were not paid (but please do not work with anyone for free).

You should work to build up your knowledge to make yourself an important part of your team. Read those programming books and learn.

Work on your experience. This doesn’t just mean working for some years but making sure that your work gives you valuable experience while you work and deliver great software.

I hope that makes sense for you.

Conclusion

No paper can tell you what will make you a great software engineer. That is because only you know your current work situation, skills, and career trajectory.

But think about making sure you offer passion, knowledge, and experience to any employee and you won’t go far wrong.

Previous
Previous

The 5 Types of Software Developer Jerks

Next
Next

Here is Why Scrum Grinds Developer’s Gears