Defining a Distinguished Engineer
I learned a lot about myself and the way big companies are organized over the past year or so. I had mentioned a bit in a previous blog post and podcast about “the N + 1 shithead problem” (from Bryan Cantrill’s talk on leadership). To reiterate, the “N +1 shithead problem” occurs when you are demotivated by seeing people who are a level above you behave poorly, or more bluntly when they behave like a shithead. I know from experience what a huge demotivator this is and after talking to several other folks I realized this is quite common.
When faced with this demotivator, I found myself thinking “why would I want to be at their level, when once I get there I’ll just be one amongst the dipshits.” It’s a horrible feeling to have and I’d love to have a model that resembles what I think of as a distinguished engineer or technical fellow.
In this post I will define what it means to me to be a distinguished engineer or technical fellow and maybe others that agree will modify their ladders to incentivize people to resemble these qualities.
Technical Leader
The first thing people think of when they think of a distinguished engineer is that they are a technical leader. I fully agree. A technical leader should understand all parts of a system. They can also be dropped into a new system and pick up the way it is architected and designed with relative ease. I think this is an important distinction to make. It’s good to be an expert in a field, but only being an expert is limiting. It’s also important to understand the full picture and that takes general knowledge. I think having a general knowledge of things outside your area of expertise is key if you choose to gain expertise in something.
Value learning
A technical leader should always realize that there is more to learn. One cannot be an expert in everything and you can have a general knowledge of most things without fully understanding the details within. A technical leader should always strive to continue to learn and persuade others to continue to learn as well.
Empower others
A technical leader should build up others and empower their colleagues to do things that are more challenging than what they might think they are capable of. This is key for growing other members of an organization. I personally believe you don’t need a high title to take on a hard task, you just need the support and faith that you are capable of handling it. That support should come from the distinguished engineer and be reflected in their behavior towards others.
A technical leader should also make time for growing and mentoring others.
They should be approachable and communicate with their peers and colleagues in
a way that makes them approachable. They should welcome newcomers to the team
and treat them as peers from day one.
Give constructive technical criticism
A distinguished engineer should never tear others down but they should be capable of giving constructive criticism on technical work. This does not mean finding something wrong just to prove their brilliance; no, that would make them the brilliant jerk. Constructive criticism means teaching others to make their work better when there are problems, while also encouraging them to iterate and empowering them to succeed.
Have strong opinions loosely held
A technical leader should be able to have strong opinions loosely held on designs and architecture. They do not need to have opinions on everything, that would be pedantic. Technical leaders should be able to use their experience to help others succeed, while also empowering others to own solutions. Technical leaders should not pass down solutions to problems but allow others to learn by letting others come up with solutions themselves. This is where good constructive criticism (from above) can come into play.
Great communicator and bridge
A technical leader should have strong communication skills and be able to articulate the “why” of a problem as well as articulate the technical details of designs. They should never communicate in a derogatory manner. They should always communicate to others as peers and colleagues.
At times, technical leaders will need to act as a bridge between teams. It is really important to be able to clearly communicate then as well as always.
Humility and empathy
A technical leader should not be driven by ego but by a constant urge to learn
and grow both themselves and their colleagues. They should have empathy for
others and portray kindness towards their peers and colleagues.
Prioritize shipping and decisiveness
A technical leader should value shipping and decisiveness. They should not be susceptible to analysis paralysis. At the end of the day most people have jobs to get things out the door and this should be a priority. Of course, shipping should not come with the trade off of burning out a team or setting the company on fire.
Customer focused
Technical leaders should always seek feedback from their customers. This might
be the internal customers of their infrastructure or external customers if they
are on a product team. The best technical leaders are capable of empathizing
with customers and iterating quickly on customer feedback.
Build resilient systems
A part of being a technical leader is having the experience of building
multiple systems in the past. Distinguished engineers should be able to
anticipate various failures from their past experiences and build systems that
will not create the same failures. Of course no system is perfect so they
should be able to learn from the failures they cannot anticipate as well. This
is a cycle that they can then use when building the next system.
Value quality, performance, and security
Great technical leaders value quality, performance, and security in what they build. They
stay up to date on advancements and research in technology so that they might be able to use
new techniques for bettering their solutions. Technical leaders should also build with respect for users and their privacy.
Value maintainability
Technical leaders should value writing code that is easy to maintain and easy
to understand. They should value unit and integration tests as well as making
sure if a bug is fixed it has a test to make sure there is not a regression.
Technical leaders should use code comments, not as a garnish, but to denote
things a reader would need to know. This could be details of a code section
that fixes a specific bug or maybe reasoning behind why something is written
a certain way. Documenting context is super valuable and helpful for maintainability.
Community
Good technical leaders are also leaders in the outside communities. This can include giving talks on various things they have built as well as mentoring others in the community or the workplace.
Learn from external community
If you silo yourself to only learning within your company, you are missing out on a world of experiences and expertise different than yours from the external community. Technical leaders realize this and place importance on learning from the larger world of computing than just their solo.
Value listening and be open to feedback
By gaining feedback and making yourself visible to an external community, leaders avoid a dunning-kruger like effect of only growing inside an echo chamber. It is always valuable to see where the rest of the industry is focusing and how technical leaders at other companies are solving problems. Technical leaders realize that there is much to learn from people with different experiences than their own. They should always be open to listening to others.
Humility
Technical leaders should always remain humble and modest. The best technical leaders know that it’s not possible for them to know everything and will prioritize keeping an open mind to always be learning.
Call upon other experts
The best technical leaders know when they need to call on experts in specific areas for help or feedback on certain designs or architecture. By participating in the external community, leaders form strong networks and bonds with fellow engineers they can call on when they need them. Technical leaders should always be eager to use these relationships when they need them or introduce others to these folks if they could use their expertise.
Value research
Along with being able to call upon other experts, technical leaders should
value well researched solutions. They should strive to learn from prior art.
Have fun
Always make sure to have fun and not take yourself too seriously!
These are just a few of the things I think define a strong technical leader and engineer. I am sure I will grow this list as I personally grow myself every day.
Most importantly you must actually do these things. Actions speak louder than
words.