For many different reasons I have had to discuss quite a lot recently about the professionalism of some people, technical and non-technical. Sometimes, because a person feels that she (I will use the feminine as neutral gender) is not being treated fairly with respect of her category, or because her performance is disappointing for others, sometimes after unfair comparisons between colleagues, … As a common element, a diabolical concept was almost always being misused in these situations: Seniority.
Having several years of experience does not make you a better engineer per se. A very common case is that someone has experience with something but knows nothing (or knows little) about everything else. Worse than that, in some organizations the senior label is even used almost automatically to justify a promotion or a salary raise after a certain amount of years in the same job.
About 5 years ago John Allspaw (former CTO at Etsy) wrote an article called On Being a Senior Engineer that has aged very well. I would sign that article today, as it details perfectly what could be the differences between a senior engineer and a mature engineer. As the author says, you can expect a senior engineer to be a mature engineer, but sadly it’s not always like this.
In his article (I recommend its complete reading) Allspaw describes a list of traits or characteristics of mature engineers:
- Mature engineers seek out constructive criticism of their designs
- Mature engineers understand the non-technical areas of how they are perceived
- Mature engineers do not shy away from making estimates, and are always trying to get better at it
- Mature engineers have an innate sense of anticipation, even if they don’t know they do
- Mature engineers understand that not all of their projects are filled with rockstar-on-stage work
- Mature engineers lift the skills and expertise of those around them
- Mature engineers make their trade-offs explicit when making judgments and decisions
- Mature engineers don’t practice CYAE (“Cover Your Ass Engineering”)
- Mature engineers are empathetic
- Mature engineers are aware of cognitive biases
The first thing that you need to realize is that almost all the characteristics described are non-technical. Allspaw article can be can be summarized in this quote:
Being able to write a Bloom Filter in Erlang, or write multi-threaded C in your sleep is insufficient. None of that matters if no one wants to work with you. Mature engineers know that no matter how complete, elegant, or superior their designs are, it won’t matter if no one wants to work alongside them because they are assholes
If I had to choose, I’ll always pick a mature engineer over any so-called senior (or even ninja!) in a particular technology or programming language. In fact, I would not change a good junior for a ninja, but that is another story that will have to be told in another moment.