Code And Kindness

A Blog About Software Engineering and Management Careers

How to Become a World Class Engineer

woman coding on computer

I’ve put a lot of thought into what separates “world class engineers”. Part of the reason is because I spend so much time hiring and building teams, but part of it is just my general curiosity around how I can improve myself. Knowing which attributes are important to build up lets me self-analyze and find areas of improvement. I’ve concluded that there are three factors that stand out as the most important: Code, Kindness, and Curiosity.

Code

The first of these areas, Code, represents all things technical about your job, whatever that may be. This is the most straightforward to understand but it’s something that can be daunting. A world class engineer not only knows how to use their tech stack and toolset, but also knows the underpinning of how it works. Having a deep understanding of how all the features work helps you design the best solutions.

Know Your Code

Let’s say in your primary job you are a front-end React and JavaScript Engineer. Knowing how to build a website with React isn’t enough to separate you from every other engineer. Do you know the advanced features of JavaScript (closures, async / await, prototypical inheritance)?  Or do you only have a surface level understanding of how they work? Having a deep understanding of your main language and tools helps you focus less on managing your tools and makes it faster for you to solve problems.

After you know your language of choice backwards and forwards, you should master your environment. Going back to the JavaScript example, do you know how JavaScript runs in the browser?  Is it compiled? Interpreted? And what are the difference between those two anyways?  How does JavaScript interact with the DOM?  These are the type of advanced questions you should be able to answer as you start to differentiate yourself from the pack. This doesn’t just apply to front-end engineering or JavaScript. If you are a back-end C# or Java programmer, you should know how the .NET framework or JVM work.

Why do these things matter?  Because knowing how things work underneath is what differentiates your ability to make something that “just works” to being able to make something that is a world class user experience or service. Understanding the nuance of a platform means you know how performance works, what limitations there are, and what pitfalls to avoid. It also helps you teach others those best practices, which is one of the key things that makes the difference between a Junior and Senior engineer.

As a side note, this same thing applies to being a manager and working with people. You should understand the fundamentals of what makes peoples, teams and organizations work and know what tools to use to solve the most common challenges teams faces.

Don’t be an X-End Engineer

I often hear people call themselves a “front-end” or “back-end” engineer. This is one of the biggest career limiters I’ve seen. People seem to have caught on, and instead have turned to the term “full stack”, thinking that it somehow makes you more valuable. More often than not, when people say full stack, they mean they know just enough about both to be dangerous but really prefer one over the other. It’s important not to restrict yourself to a particular part of your system. Understanding how entire system works end to end is what makes it possible to make great applications. How the server caches data can change how you should request it from the client. Different types of data access can have different latency characteristics which can impact how you design your front-end UI.

When I worked on the Xbox Console store, we used a “back-end for front-end model”, meaning we designed our back end specifically for our client and because all of the engineers knew how the system worked end to end, we designed a highly cohesive system that was performance optimized for the customer scenarios that mattered most. Even if you don’t have to work on the “other end” directly, being able to speak the language of the other side helps you communicate more directly and have empathy for the problems those engineers are trying to solve.

The last big reason to know both sides of the stack is that as you grow in your career you will be limited if you don’t understand the entire platform. If you are the Engineering Director or Architect of a team, it doesn’t matter where you come from. You need to understand the tradeoffs of performance and scale vs cost for the organization. The sooner you break the habit of being one dimensional the faster you will grow into larger roles.

Your Tool of Choice Should be the Tool You Need

Along those same lines, people also get trapped into preferring a certain technology. Tech is a rapidly changing world and frameworks change fast. Even without the change over time, different companies use different technologies. Restricting yourself constrains your career choices and prevents you from learning from different technological approaches, which you can bring with you across tech stacks.

In my early years I thought WPF and XAML were the best technologies for front-end development, but when I left Microsoft (the first time) I learned the world of JavaScript and web development and my eyes opened to a different way of doing things. I often thought .NET was the greatest technology for creating backends until I saw the simplicity and ease of deployment of node. No technology is perfect, but a broad understanding of what’s out there helps you make informed decisions and be more open to using the right tool for the right job.

Kindness

It’s easy to assume that being smart and knowledgeable is all you need to be world class but that isn’t enough. Kindness to others stands for the social and emotional aspect of working on an engineering project.

Be Kind to Others

Great things are built by teams, and no one wants to work with a jerk. Amazing engineers inspire others and rally them to build great things by going the extra mile. They design the best products not because they know everything themselves, but because they are inclusive and gather the best ideas from everyone no matter where they come from. When you are someone people want to work with, great teams will form around you because people will want to either want to follow you across projects, or they will recommend your teams as a great place to work.

Be Kind to Yourself

Kindness to yourself is also needed. It is critical to make sure you take care of yourself both physically and mentally. It’s hard to solve difficult problems if you are constantly tired from lack of sleep or your body is run down or low on energy from a bad diet. It can be easy to mirror the stereotype of the sloppy engineer who knows everything but doesn’t bother with hygiene or any type of self-care. But self-care leads to better physical health and better emotional health, which lowers barriers to working with others (if you’ve ever been hangry or moody because you were tired you know what I mean). To be frank it’s also hard to pay attention to someone’s great ideas if you can’t stop being distracted by their body odor or disheveled appearance. This applies to communication style too. Learning to communicate effectively isn’t just about politics, it’s about making it efficient to disseminate ideas and work in teams.

Kindness Builds Strong Teams

Highly performing teams make mistakes. What makes them highly effective is that they learn from these mistakes without judgement; they look at problems objectively which allows them to improve. A team that has kindness instilled in them most likely also has psychological safety as a key component. Team members need to feel safe so they can share ideas without fear of being judged. This increases ideation and generates more innovative and novel ideas, which in turn improves the output of the team. So don’t judge yourself, but also don’t judge others. Give everyone the benefit of the doubt (even if you think they don’t deserve it) and instead of judging stay curious.

Curiosity

Curiosity is foundational to advancing in your career. World class engineers never stop learning. When a new technology comes out, they are the first to want to understand it. When something goes wrong, its not enough for them to just fix it, they want to know the root cause and how to prevent it from happening again. Curiosity often plays into group dynamics. If someone disagrees with them, they don’t dig in, they suspend judgement, stay curious, and ask “how might I be wrong?”.

Be Curious about Everything

If you find yourself trying to get things done as fast as possible without truly understanding what is going on, you probably have a curiosity problem. Try to understand why you aren’t interested in going deeper. There is beauty in almost everything. If you can get your mind to appreciate all types of systems, you will find natural motivation to dig deeper into the technology that matters (and even into the ones that don’t).

Curiosity is powerful and can be transformative. Curiosity drives innovation because instead of immediately shutting down ideas you instead think, “how could we make that work?”. It helps you linger on an idea just a little bit longer, which can be all you need to have that AHA moment. Instead of thinking “python always sucks”, you change your thinking to “when is python the right tool for the job?”.

Be Curious About How You Think

One of the fastest methods of improving yourself is through what is known as meta-cognition. This is the ability to think about how you think. What are your biases?  What is your process for inventing and coming up with new ideas? Many metacognitive techniques like learning to be mindful take your learning to the next level and change how effective you can be as an engineer because they improve your frameworks and how you view the world.

To grow yourself into a world class engineer, think about these areas and find out where you struggle. Not everyone wants to be best in class at what they do, and that is okay, but if you do these are the right areas to focus on.