On Being a Senior Engineer
Link: https://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/Abstract
The article aims to define a list of traits that make an engineer "mature". All of them are either soft skills or only related to programming on a meta-level.
Notes
Since our field (web operations) is still quite young, it is not surprising that a lot of people have the title of "senior" while still being comparatively immature on a technical and non-technical level.
Therefor there is a difference to be made between "senior" engineers (by title) and "mature" engineers (by trait).
Characteristics of a mature engineer:
Mature engineers seek out constructive criticism of their designs
Engineers don't work in a void and once what they work on will get into other hands, problems might arise. Mature engineers want to find as many of these problems as possible as early in the process as possible.
Mature engineers understand the non-technical areas of how they are perceived.
Mature engineers want to be enjoyable teammates. While they don't shy away from giving (critic) feedback on other peoples work, they are not assholes while doing so.
the degree to which other people want to work with you is a direct indication on how successful you’ll be in your career as an engineer. Be the engineer that everyone wants to work with.
Mature engineers do not shy away from making estimates and are always trying to get better at it.
All businesses rely on estimates, so mature engineers need to be able to make estimates. Estimates are uncertain, but mature engineers do not shy away from working with some uncertainty and risk.
Mature engineers have an innate sense of anticipation, even if they don’t know they do.
(no notes on this one, wanted to have the headline in though)
Mature engineers understand that not all of their projects are filled with rockstar-on-stage work.
Getting things done might mean working on boring or tedious tasks, or do work that not many (or no) people will notice.
Mature engineers lift the skills and expertise of those around them.
Instead of just making things better, mature engineers aim to teach people how to get better in what they do. They want to share their knowledge.
Mature engineers understand the difference between mentorship and sponsorship, and develop a habit of the latter.
Mentors give advice. It's better to generate opportunity and visibility for people. E.g. suggesting good leads for projects or sharing something interesting someone else did.
Mature engineers make their trade-offs explicit when making judgments and decisions.
They know they operate on a spectrum. They can be efficient or thorough. There are tradeoffs to everything and they're okay with that.
When it becomes apparent that a solution is not scaling any longer, they get to work with an productive mindset (because they knew this day would come all along) instead of making passive-aggressive remarks.
Mature engineers don’t practice CYAE (“Cover Your Ass Engineering”)
Mature engineers stand up and accept the responsibility given to them. If they find they don’t have the requisite authority to be held accountable for their work, they seek out ways to rectify that.
Mature engineers are empathetic.
They understand different stakeholders in a project have different goals an perspectives. They can view a project from the perspective of someone else, which allows them to navigate their work more effectively.
They don’t make empty complaints.
If they complain, the have though about it long enough to be able to offer a suggestion for a solution
Mature engineers are aware of cognitive biases
There are many cognitive biases and mature engineers are aware of how they might influence their judgement.
Mature engineers know the importance of (sometimes irrational) feelings people have.
People don't act rationally most of the time, they act based on emotions. Bad experiences with a certain framework in the past might cause people to not want to work with it again, even if the circumstances are completely different this time