Traits of Great Software Engineers- According to Microsoft

They conducted extensive research into the personality traits of great software engineers. This was the result.

Devansh
Geek Culture
10 min readNov 12, 2022

--

Join 31K+ AI People keeping in touch with the most important ideas in Machine Learning through my free newsletter over here

I talk about how mastery over software development will lead to amazing career gainzz,

And every week, I cover various concepts and ideas that will help you deepen your understanding of tech, become an exceptional developer, and ultimately thrive in a chaotic field like Tech.

Recently, I came across a Microsoft paper titled, What distinguishes great software engineers? In this post, I will be breaking it down and giving you some additional information on how you can implement some of these learning in your life in an actionable and sustainable way.

Of all these traits, which would you rank in your top 5? Let me know by replying to the comments/using my social media links.

In this email/post we will be covering the traits of great software engineers, how you can cultivate those interests most effectively, and become an absolute demon at software development. This paper also found some cardinal sins that bad engineers commit. We will cover these absolutely evil mistakes that you should avoid at all costs. I hope you’re excited because this is going to be a banger. Whether you’re a student looking to get better, an entry-level/mid developer who wants to zoom past the ladder, or a senior looking to make the right hires, this research will have a lot of relevance to you.

Key Highlights

  1. The 5 Traits of Amazing Developers- The golden 5 traits are- writing good code, adjusting behaviors to account for the future, informed decision-making, not making others’ jobs harder, and constantly learning. Notice how these overlap almost exactly with what I have been stressing in my content. The exceptional results subs have had is not a coincidence.
  2. How to develop these traits- Read more. It will impact all these traits. We will cover, what specifically you want to focus on for each individual trait in this article. But it all ties into reading more. Explore your interests. Expose yourself to new ideas and implementations (both technical and non-technical). At the very least, show up to this newsletter. Check out the recommended sources I share. I’m not paid any of them. I share/recommend them because they have a lot of value.
  3. The sins that bad engineers commit- There were 2 traits of the ones mentioned earlier that had negative ratings- hardworking (willing to put in 8 hour+ days) and trades favors (tit for tat). These are typically associated with positive traits, but the way things work out- these traits lead to negative results. We will cover what you should do instead.

Let’s get right into it. This is going to be one of the bestest weekends of your career.

The 5 Golden Traits

Take a look at the following quote, taken straight from the paper-

After synthesizing the findings, we believe that the top five distinguishing characteristics of great engineers are writing good code, adjusting behaviors to account for future value and costs, practicing informed decision-making, avoiding making others’ jobs harder, and learning continuously

How are the researchers defining each of these traits? Let’s see the meaning of each of these traits, as defined in the study-

  1. Writing good code-Pays attention to coding details and mentally capable of handling complexity. Nothing too shocking here. Without knowing how to write good code, nothing else comes together.
  2. Adjusting behaviors to account for future value and costs- Good developers are able to create solutions that maximize the current value of their work, in a way that is able to account for the future. Remember how I always talk about how developers need to understand economics to be amazing? This paper also mentions understanding economic concepts like Risk and Return.
  3. Practicing informed decision-making- “Great engineers differentiated themselves from others by going through the right processes for making informed decisions” That quote from the paper really explains all you need to know. Think back to my piece on the Math of Scale. Because of the scale tech operates at, good decisions can make millions. Bad decisions lose millions. One correct decision can be much better than 10 average ones. For an IRL example, read the article below.
  1. Avoid making others’ jobs harder- Remember, everything you build is a part of a bigger system. No one is paying you just to write code. You’re being paid to contribute to a system that will make money. If I create an amazing 99% accuracy AI model that shuts down the whole system because of all the data processing and resources it needs, then I’ve just created a bad model. As the authors state- “Great engineers distinguished themselves by making others’ jobs easier, helping them to make their decisions more efficiently (or, at minimum, they did not make them worse)
  2. Learning continuously- It’s not about where you are, but where you are willing and able to be. Learn consistently, and you will be legendary. Since you’ve subscribed to this newsletter of your own initiative and are most likely reading this on a weekend, I’d say you at least have the right attitude.

If you’re a regular reader here, none of these will shock you too much. These are the same values I always stress in all my content. Subs of mine that have implemented this have become much better developers. Their amazing career results are just a by-product of their new, more refined skillset. If you want my input in creating the best plan for you, reach out. We can help you create a customized action plan for you.

A summary of the traits discussed. Source

Now that we agree on these traits and why they matter so much, how can you develop them? Let’s do that next.

Cultivating these traits

Read more. YT videos on informative topics also count.

That’s really it. I could spin 20 stories, but this is what it boils down to.

Cool? We on the same page? Let’s cover the next part- what should you read?

There is a strong base of three types of reading material that will help you a ton. I share different examples of these 3 all the time. Any guesses for what they are?

Are you sure, you have no guesses?

I’ll give you a cookie if you get it correct.

Our holy Trinity is the following-

  1. Material on the economics of different industries- Different industries have their own unique set of challenges, opportunities, and constraints. Reading about how people are tackling and solving these will help you gain a lot of perspective. Also helpful is understanding why certain solutions failed.
  2. Engineering Blogs- Organizations all over the world are putting out exceptional content on how they designed their systems/tackled challenges. They talk about the problems they faced, solutions they used, and some interesting insights. Make sure you read through them. Your favorite big company is publishing very high-quality writing. Read it to gain a better understanding of them. And learn how people are making moves in this world.
  3. Research Papers/Theoretical Material- Spend some time coming across different ideas in Math, Computer Science, and Software Engineering. Coming across different ideas and concepts will help you understand some of the nuances of the various solutions, and how to navigate trade-offs effectively.

To this base, add whatever interests you. Depending on your interests, goals, and inclinations you will spend your time on each of these differently. That’s fine. In the end, that will help you develop skills and ideas that are unique to you. And that is where you will make amazing career leaps.

Reading more will help you make better decisions. It will help you foresee some challenges you might face, know how different people solved them in related (or different domains), and what engineering decisions will give you the highest ROI. It will also expose you to various best practices/design decisions that will ultimately help you create code/solutions that are functional, performant, and easy to work with/modify.

Photo by Zan on Unsplash

Now let’s get into the deadly programming sins that you should avoid.

The 2 Deadly Sins for Developers

We’ve already covered the 2 terrible sins. Let’s talk about why they’re bad and what you can do instead.

Hard work

This might come as a shock to most of you. Hustle Culture really loves Sigmas that love to grind. And it is important to put in the work. If you’re trying to run a marathon, you have to put in the miles. No way around it. So why is this considered a bad thing-

However, if a developer is consistently finding themselves working 8-hour+ days, they’re probably doing something wrong. As I’ve said many times, it’s not about doing more but doing the right things. This is why I emphasize the need to take a step back at times and analyze things as a whole. As we’ve covered earlier 1 High Impact Decision > 10 Medium Impact decisions.

…workload for a developer is a function of management and planning happening above that developer. Usually long working hours are needed, because the planning was not good, the decisions made during the project lifecycle were bad, the change management wasn’t “agile” enough

-From the paper

The key is in chilling out. Instead of rushing into a problem, spend your time thinking of the details (forecasting the future). Pick the most impactful, simple areas to tackle. Keep the end goal in mind as you proceed. Less is more. Great results can be attained by doing very little (comparatively).

For those of you interested in Machine Learning, I made a video, some time ago, elaborating upon this. You can watch it below.

This is not to say that you will never have to do these long days. Challenges crop up all the time. Just don’t make those long days the norm. Most of your time should be spent thinking, planning, and considering details. The grind should be a very rare event. Not something that happens on a monthly basis.

Moving on to the second sin.

Trading Favors

Imagine you helped someone fix something. Then you called upon them to help you? What’s wrong with this?

Nothing. Absolutely nothing.

The problem becomes when people start forming clusters. You and your crew go to each for help. And help mostly each other. Not because of drama or anything in particular. Humans are tribal creatures so this is only natural. We will naturally gravitate to the people we are familiar with. So why is this a bad thing?

I covered Conway’s Law a while back. It shows that biases in team structures tend to propagate throughout the system. Trading favors amongst a group will add a layer of bias that will show up in the solutions.

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.

— Melvin E. Conway

There is a simple Tweak to solving this. Instead of helping/going to only a select few, reach out to more people. Actively pursue more and more people who might be able to help you. Post your challenges on the company boards/comm channels and work with a greater variety. This will allow you to avoid this problem while also allowing you to meet more people. Win-win.

I’m going to end this write-up with an interesting observation. Take a look at the ranking of all the traits, grouped by their type.

Even though Coding comes out on top, the top 10 is dominated by the personality class. Make of that what you will.

If you liked this write-up, you would like my daily email newsletter Technology Made Simple. It covers topics in Algorithm Design, Math, AI, Data Science, Recent Events in Tech, Software Engineering, and much more to make you a better developer. I am currently running a 20% discount for a WHOLE YEAR, so make sure to check it out. Using this discount will drop the prices-

800 INR (10 USD) → 533 INR (8 USD) per Month

8000 INR (100 USD) → 6400INR (80 USD) per year

You can learn more about the newsletter here

Reach out to me

Use the links below to check out my other content, learn more about tutoring, or just to say hi. Also, check out the free Robinhood referral link. We both get a free stock (you don’t have to put any money), and there is no risk to you. So not using it is just losing free money.

To help me understand you fill out this survey (anonymous)

Check out my other articles on Medium. : https://rb.gy/zn1aiu

My YouTube: https://rb.gy/88iwdd

Reach out to me on LinkedIn. Let’s connect: https://rb.gy/m5ok2y

My Instagram: https://rb.gy/gmvuy9

My Twitter: https://twitter.com/Machine01776819

If you’re looking to build a career in tech: https://codinginterviewsmadesimple.substack.com/

Get a free stock on Robinhood: https://join.robinhood.com/fnud75

--

--

Devansh
Geek Culture

Writing about AI, Math, the Tech Industry and whatever else interests me. Join my cult to gain inner peace and to support my crippling chocolate milk addiction