There’s a question that seems to come around every few months, “what makes someone a senior developer?”, and it has been asked again recently. It’s often an ambiguous question that we try to quantify through things like: number of years of experience, number of technologies which someone is proficient, or what title’s they’ve held in previous companies. I wish I had a clear-cut answer, spoiler alert, I don’t. But I do want to examine some of the qualities that I consider “senior” when thinking about folks I’ve met and have had the pleasure of working with.
My elevator pitch for what differentiates a junior from a senior developer:
A junior developer is someone that can install a library and get everything working, follow standards and best practices. A senior developer is someone that can write the library. They write code with minimal errors that is maintainable, well documented, and serves a true purpose.
While this might serve as a good mental model for the technical capabilities of a senior developer, I don’t think it gives a sufficient gauge for well-rounded senior developer. As I continue to progress in my career, taking on larger and more challenging titles and projects, I’m continually reminded that “technology is the easy part”. Developers, programmers, and hackers, are no longer, and I’m not sure they ever were, the lone wolf, huddled in the basement under their hooded sweatshirt, they’re not anti-social beings, like movies might suggest. Developers are collaborators, solving business problems, they just happen to use programming languages and frameworks to accomplish their tasks. Senior developers need to be good at technology, efficient in implementing their solutions, and able to keep pace with changes in the business and industry, but that’s only a small part of their role.
A senior developer is someone who will lift up others around them. Through knowledge sharing, mentoring, and providing positive and constructive feedback. They are eager to learn and use best practices and the best tool for the job, while sharing what they learn with others. On their team, their company, or their community. They seek opportunities to help others grow.
A senior developer is someone who understands and can manage ambiguity and complexity. Business requirements, regulations, changes in the industry force us to be adaptable and resilient. A senior developer is able to work in the present while planning for the future.
To be a senior developer is different in different organizations, industries, and teams. The characteristic that holds most true is their ability to build maintainable solutions while supporting others to do the same.
This is a topic I want to explore more as we seem to have a lack of talented “senior” talent in the industry and more and more developers moving into senior roles.