What makes a senior developer? Certainly not seniority. So what are are the qualities and behaviours that earn the trust and respect from engineers across the floor?
I might come back to this in a couple of years and laugh, but this is my criteria in 2020.
- They live in fuzzy places. Things are rarely in black and white. Making the right call requires knowing the context. Senior developers are overly curious, cautious and communicative while exploring nuance in problems and perspectives.
- They make pragmatic business decisions. The job is to create business value; everything else is in service of that goal. Technologies, refactoring, TDD, end-to-end tests – these are techniques to achieve an objective, and not objectives in themselves.
- They empathize with the customer. Seniors are motivated to understand the unique problems experienced from the other's point of view, and understand that the job isn't done until it's in service of the customer. They also understand that "customer" applies very broadly – for example, a stakeholder on their project.
- They manage expectations. A senior engineer is able to effectively interface with a variety of stakeholders across disciplines. They gather requirements and boil them down to actionable acceptance criteria. They give updates early and often, and are masters of risk mitigation. They anticipate changing requirements and are ready to adapt to external pressures.
- They are stingy. All code is debt. Senior developers appreciate simple design and intentional architecture. Code is reviewed in terms of quality attributes: understandable, testable, reliable, performant. Codebases are discoverable, expressive, modular. They refactor old code before adding new code, with the goal of reduced cognitive load through well-known patterns and clean abstractions.
- They are tactical. Senior developers employ discovery sessions, technical spikes, prototypes, agendas and checklists. They do small things exceptionally well, and they're masters of breaking big things down.
- They practice their soft skills. Written communication must be exceptionally clear, doubly so for a remote team. They form relationships and entrust others with responsibilities. They model consistent temperament and are diplomatic in tough situations. They know when to smile and walk away.
- They facilitate collective wisdom. Senior developers model strong opinions loosely held. A well-established premise will result in a productive argument, but a senior will encourage debate and celebrate when their mind has been changed.
- They have a Promethean mindset. Keen on new technologies, frameworks, methodologies, paradigms. A senior knows how to bring new ideas to the team, knows how to innovate without reducing product velocity.
- They focus on team growth. Seniors are willing to coach. They look for opportunities to get others involved and contributing – both in code and in discussions. They peer program, and diagram their solutions. A real 10x engineer is someone who is a force multiplier across the entire team.