How to go from Junior to Senior Developer
Tags: career
Published: 2020-08-11 09:33:19

In software development, seniority has **nothing** to do with age. Seniority does not happen to you automatically as the years go by. You do not become a senior developer in the same way you become a senior citizen. Unfortunately, many people I work with equate gray hair with seniority and authority. Let’s look at what makes a person a “Senior Developer” so you can work towards that goal.

Your expectation cannot be to be promoted to senior roles by waiting long enough. It is not a badge you earn by “just doing the work for a few years”. One can spend many years doing the work they have been assigned and never get better at it. Seniority is the ability to move things forward, and to help those around you get better at their job. Pure development skills, while important, are only a part of what defines seniority.

## Know how to get things done

You do not need to treat every challenge as if it was your first. As you work, you build a repertoire of both successful and unsuccessful approaches. When encountering new problems, find parallels to earlier situations and transfer your learnings. The larger your repertoire, the better you know how to approach (or not approach) a new challenge. As you try different things, you will learn how to get things done faster than when you had no idea what you were doing.

## Learn how to find solutions

You are not expected to have the answers to all possible questions. Instead, you need to be able to find solutions to them. Instead of randomly throwing more code at a problem, take a step back and understand it first. What conditions are necessary to reproduce a bug? If there are any error messages, what do they hint at?

Knowing how to google a problem is a valuable skill to have. It requires you to be able to put your issue in words, and ones that others were likely to also have used. When you come across a solution, do not blindly copy it from StackOverflow and hope it works. Figure out _why_ it works so you can adjust it if necessary.

## Do more than your job description requires

You will not get promoted because you are good at the job you have now. If you want a different position, you need to prove you can handle it before you have it. Show people that they can trust you with additional responsibilities _now_. Instead of sticking to exactly what your job description says, do what you see as necessary. Do not make excuses that boil down to “not my job”.

If you think your meetings are too long, help them go faster while you’re in them. If your tasks are not well-defined, support those defining them. Help improve an imperfect status quo instead of silently accepting it as fact. Complaining about things without trying to improve them is a junior move. Take on additional responsibilities to enable change, whether that is “your job” or not.

## Focus on the outcome

There are infinite things we could work on in any given minute. It is important to focus on the tasks that have the biggest impact on the success of the product and business. Despite what it says in many job descriptions, nobody hires developers to write and test code. They also don’t hire sales people to have phone calls, carpenters to work with wood, or cooks to use knives.

Code is a tool used to achieve a desired outcome, which is to move the business forward. Follow the Pareto principle: 80% of the effects come from 20% of the causes. Focus on the 20% of your work that are important and skip the others, at least for now. If you don’t know what those 20% are, find out by asking others. You will occasionally have to accept bugs, unhandled edge cases, and ugly code for this. While we strive for perfection, ironing out every last detail often gets in the way of finishing work. Suggest ways to achieve the result faster instead of blindly doing exactly as you have been told.

## Help those around you get better

Those with lots of experience need to teach those less experienced. Many hire Junior developers, hoping to shape them into more effective ones. These people can only grow if given extra attention.

Teaching can take different forms which take varying amounts of effort. Very few of them look like traditional classroom teaching. Writing code that is easy to understand is one form of teaching. Instead of writing clever code that is hard to read, write code that others can learn from. Take the time in code reviews to explain the benefits of different solutions. Sit down with others to show them a few tricks you learned over the years.

Take the time necessary to help others get better. Budget for it so you don’t have to hide behind the excuse of “I am too busy”. It does not matter if your job description explicitly requires you to do this. If there is something you can teach others so they can improve, do so for the benefit of everybody.

## Motivate your peers

No developer is an island. Real change does not happen by a single person following a senior mindset. When working in teams, help everyone feel heard and empowered to take action. Everybody regardless of their role, title, or job tenure can shape their environment. Help everybody around you become aware of the power they have over their own situation. Show everyone they are allowed (and required) to suggest new ideas and improvements.

## Manage expectations

Early in your career, you might feel pressured to hit impossible deadlines. The list of requirements is too long, and you are never given enough time. You don’t have to sleep in the office to save time. Know when to step back and take a break, and _do_ take regular breaks.

Instead of trying to force something, be honest with yourself and others about what is realistic. Overworking yourself is not a badge of honor, it is a sign of improperly managed expectations. You need to learn to say “no” when confronted with unrealistic requests. Learn to articulate why something might be more effort than assumed by others. This is much easier if you can suggest alternatives at the same time.

## Work on it and yourself

All these suggestions follow the same theme: build a solid set of skills and focus on those around you. A senior title represents that others can trust you with many different responsibilities. You don’t need to have these attributes immediately. Seniority is not a switch one can flip. Identify the first action you can take to develop in this direction. Observe and learn from others and make many small adjustments over time. What seems daunting now will feel entirely natural to you if you allow yourself to find what works for you.