As a team lead, I coach and mentor many junior engineers. One topic that always comes up is "What does it mean to be a Senior Engineer?" That's easy, you just... have a four-year degree from an accredited college? Work for 10 years and don't get fired? Learn 3 front-end technologies? Check some boxes on a promotion form?
Defining what it means to be a Senior Engineer is an impossible task. If you talk to 10 people you'll get 11 different opinions. It's tempting to reduce an undefinable thing to "I know it when I see it". Unfortunately, that makes it too easy to inject bias. Instead, let's discuss three traits I have observed in excellent Senior Engineers. These traits are not fundamental to their Senior Engineer-ness. That is, you wouldn't see them on performance reviews or job descriptions. Despite this, these traits are fundamental to their excellent performance as Senior Engineers.
Grow Those Around Them
I can't stress the following enough: being right is not enough. It isn't enough for the Senior Engineer to know the right answer. It isn't enough for them to know and execute the right answer. It isn't even enough for them to know the right answer and help a more junior engineer implement it.
People often come to Senior Engineers for help. When that happens, an excellent Senior Engineer thinks "How do I teach them to solve this problem the next time it happens?". Investing in your team yields amazing returns. Training up our team means they can handle more problems without calling us. For example, while we're on vacation.
Comfortable With Uncertainty
Senior Engineers increasingly find themselves dealing problems for which there is no "right" answer. Systems engineering and integration, architecture, multi-team organization. There are no unit tests for that. At best there are varying degrees of "right enough" for the situation. If you're familiar with the Cynefin framework, this is the Complex domain of "unknown unknowns".
This means the best Senior Engineers live a fascinating contradiction. They are confident that they can solve any problem. Simultaneously, they are uncertain they already know the best way to solve it. Living this dichotomy is a conscious effort to mitigate the Dunning–Kruger effect. Good engineers are aware of the Dunning-Kruger effect. Senior Engineers work hard to avoid its pitfalls.
Being comfortable with uncertainty is essential when investigating unknowns. This is often where the most difficult problems lie, and where we can reap the greatest rewards. Investigative tasks are often poorly-defined. Even with a good definitions, exploring the unknown has many unanswerable questions.
For example, how long should we investigate one option before pivoting to another? Too little time means we missed some easy gains. Too much time and we've spent too much for an incremental gain. No one can know ahead of time how long is appropriate. A Senior Engineer has to be comfortable with making that determination.
I have something to learn from everyone I meet. -- Dave Mott
There are many ways to name the following concept. Which resonates with you will depend on your personal lens. "Curiosity mindset" or "growth mindset" resonate with some; others prefer "humility" or "egolessness". Whatever you call it, what is important is to be aware of your assumptions and biases. Moreso, to be aware that you must question those assumptions and biases routinely.
When a junior engineer doesn't believe an excellent Senior Engineer, the Senior Engineer must not get defensive, but curious. The Senior Engineer is curious about why others have a different belief. Disagreement isn't an opportunity to prove someone wrong. It's an opportunity to understand why they have a belief and show them another option. Further, a Senior Engineer is curious about why they hold the beliefs they do.
What About Technical Skills?
We've spent nearly a thousand words discussing Senior Engineers without mentioning technical ability. Strong technical skills are important. We've avoided talking about them for two reasons:
- They're assumed for a Senior Engineer
- Software development is very much a social endeavor
Senior Engineers aren't solely focused on building the function, or the page, or the story. Those are table stakes. Senior Engineers take a longer view. The code is critical today, but technical ability, good teammates, and good teams are what let us continue to build excellent products. Excellent Senior Engineers worry about building those as much as they do any feature.
Approach and mindset are as important to what makes a Senior Engineer as technical ability. Junior engineers, I know you're already watching and learning from Senior Engineers around you. I urge you to watch not only what they do, but how they do it.