There are many paths to becoming a senior developer. Likewise, there are many definitions of what a senior developer is. I have been fortunate to have access to some great senior developers who have been open to teaching and mentoring me along the way.

Now that I have been working in web development for two years, I wanted to share my thoughts about how to get to the next level. Others may feel differently, but I hope these tips will encourage you in your journey to become a senior developer.

Before I could write about becoming a senior developer, I had to define what it meant to be one. What follows is a set of principles or qualities that I believe defines senior developers, and concrete actions you can take to achieve these qualities.

A senior developer understands how the tools work, or has an intuition/expectation about how the tools work.

ACTION: Read and practice understanding other developers’ code (library code)

When learning a foreign language, you have to immerse yourself in the language and understand contextual usage. Reading library code exposes you to a language’s syntax and methods organized in a way that you may not yet be capable of. It also exposes you to design patterns that the developer(s) used in the library. Being able to read and understand the library code helps you gain experience on how to solve problems that the library code solves.

A senior developer usually knows that there is more than one way to do things, and understands these tradeoffs.

A senior developer understands appropriate use of advanced language syntax vs basic structure.

ACTION: Coach and be coached

When coaching someone, you are evaluating whether something can be simplified or it is necessarily complicated. Coaching reinforces the knowledge you are confident in. This a great way to deal with those pesky “unknown” unknowns, and help your team or the community as well. As a senior developer, you want to know where the gaps in your knowledge are. These gaps can be difficult to find. Coaching improves ability to communicate solutions and concepts, which is something a lot of people may struggle with.

You’ll also want to be coached yourself. You’ll want to learn more about design patterns and different approaches to solving problems. You’ll also want to ask about why certain architectural decisions are made, and their potential pros and cons (scalability versus performance). Have discussions with other senior developers where you ask: “How can I make this better?”

A senior developer has experience where their code is live (with users and you’re responsible for the consequences).

A senior developer makes large architectural decisions.

ACTION: Get experience on a projects with different lifespans

With a long life-cycle project, it is more difficult to get this kind of experience, so you will not learn as quickly. Live users force your cycle time to be shorter (when there is a bug, it needs to be fixed – now). You have to deal w/ scalability, such as a million users, or some users that have extreme cases, such as a million records. This forces you to deal with the consequences of early architectural decisions, and learn from those decisions. In the future, it will help you better consider the infrastructure needs of a project.

A senior developer understands how the tools work.

ACTION: Use new technology

Experimenting with new technology is a great way to improve problem-solving skills because you are learning a different approach to solving a problem. The new technology can increase your knowledge of design patterns, which are stable over time and more independent of a specific technology or language. For example, one of our senior developers improved his understanding of functional programming in Javascript by playing with Elixir for two hours.

A senior developer values consistency to standards (clean code, documentation).

A senior developer is opinionated / cares about code style.

ACTION: Build useful tools (plugins/ community resources)

When a you undertake the task of building a tool like a library or plugin that will be used either internally or externally, you have to develop an understanding of the constraints and requirements for building the tool. The interface needs to make sense. It needs to be designed to be consistent and intuitive (i.e. attribute ‘className’ vs ‘class’ for a React plugin element). This will also help you appreciate what libraries do for you, like handle edge cases.

ACTION: Learn or keep up to date with best practices by reading books/blogs

There are great reference books and community leaders to follow, and doing so is an important part of being a senior developer. This will help you stay up-to-date with what the community considers to be best practices, and if you choose to diverge from those practices you can do it in an informed way.

This library does not have to be a public project, but if others use and maintain it, it will help you enforce the policies of clean code and code style. And if it is public or used by others, documentation also becomes important. With this experience, your understanding of the ecosystem by which developers communicate and collaborate will grow as you develop a familiarity with those processes.

Don’t Rush Your Journey to Becoming a Senior Developer

In the end I have learned that accumulating experience and being patient with yourself is crucial to maintaining longevity in the quest to become a senior developer.

There are definitely many paths. Trying to do all the things at once can be overwhelming (and lead to burnout).

If you think you have too much on your plate right now, this video is a great resource.

Marshall Smith also contributed to this post.