What Distinguishes Great Software Engineers?[StoryTime Saturdays]
We will be looking into research by Microsoft into Software Development and Coding
To learn more about the newsletter, check our detailed About Page + FAQs
To help me understand you better, please fill out this anonymous, 2-min survey. If you liked this post, make sure you hit the heart icon in this email.
Recommend this publication to Substack 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.
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
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.
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.
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-
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.
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.
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.
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)”
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.
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-
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.
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.
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.
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.
Loved the post? Hate it? Want to talk to me about your crypto portfolio? Get my predictions on the UCL or MMA PPVs? Want an in-depth analysis of the best chocolate milk brands? Reach out to me by replying to this email, in the comments, or using the links below.
Stay Woke. I’ll see you living the dream.
Go kill all,
Devansh <3
Reach out to me on:
Instagram: https://www.instagram.com/iseethings404/
Message me on Twitter: https://twitter.com/Machine01776819
My LinkedIn: https://www.linkedin.com/in/devansh-devansh-516004168/
My content:
Read my articles: https://rb.gy/zn1aiu
My YouTube: https://rb.gy/88iwdd
Get a free stock on Robinhood. No risk to you, so not using the link is losing free money: https://join.robinhood.com/fnud75