In this week's Ladybug Podcast episode we chatted about the skills it takes to level up from a junior to a senior developer.
Before jumping into this topic I want to preface this with the fact that every single employer has different qualifications for what constitutes a senior developer, and just because you're a senior developer at one company doesn't necessarily mean you'll be a senior developer at another company.
Nothing frustrates me more than seeing "I became a senior developer in six months after joining the tech industry" blog posts. Not only do they instill a sense of inferiority in developers who take longer than six months, but there are many factors that go into a promotion.
Having a computer science degree, having a social media following, having a backlog of content to showcase your skills, and having excess time outside of your 9–5 job are all examples of privilege that facilitate your ability to become a senior developer.
As an industry, we must stop perpetuating this idea that if you hustle hard enough, it only takes "X" months to become a senior developer. It may take you sixth months, or it may take you six years. Don't let anyone influence your idea of how long it should take you to achieve a promotion.
Talk with your manager. Find out which boxes you need to check off before becoming a senior developer, and block out the noise that is present on social media.
But despite each company having their own definition of what it takes to become a senior developer, there are a few characteristics which all senior developer exhibit. Today we'll take a look at five of these characteristics which will jumpstart your progress towards becoming a senior developer.
Independence or freedom.
One of the primary qualities of a senior developer is having autonomy, or being independent. As a senior developer, you're expected to deliver work without needing much assistance. This doesn't mean you can't ask questions(in fact, you should ask questions), but it means that if you're given a task you're able to construct a solution and you know what questions to ask if you get stuck.
Autonomy is one of the characteristics I have struggled with for several years. Early on in my programming career, I felt lost. It's absurdly nerve-wracking to pair with senior team members and watch them seamlessly navigate their way through the code. How do they know where to start? How did they know this bug was originating in this file? How did they know to ask this specific person for help?
I'll let you in on a secret: all of these questions can be answered with "it just takes time and experience." It's safe to bet that your team members also felt this impending sense of impostor syndrome when they joined the company. And no matter how much programming experience you have, joining a new company with a new tech stack and new colleagues will always require time to acclimate.
When I joined Spotify this July, my manager and colleagues told me it would take at least six months to feel self-sufficient and productive. It's important to set appropriate and realistic expectations for yourself when joining a new company (especially as an entry-level developer).
But if your goal is to be promoted to a senior developer role, you must start exhibiting autonomy with your work tasks.
The power or opportunity to act or take charge before others do.
Before promoting you to a senior developer, your manager wants to see that you take the initiative to find challenging tasks and help team members in need.
If you finish your task early, actively seek out other tasks or bugs that you can work on. If you see a team member struggling with their task, offer your assistance. If you see additional areas outside of your team to get involved, like helping to plan an internal conference or mentor a new team member, go for it!
You should also keep a list of your accomplishments. This will make it easier to reach the next level as you won't be scrambling to remember what you accomplished the past year.
Don't wait around for someone to give you work: actively seek out new and challenging work and write down your accomplishments.
The imparting or exchanging of information by speaking, writing or using some other medium.
Ahh "soft skills", every programmer's favorite area to excel in. I personally don't understand why "soft skills" are taught as a lesser skill for programmers. The higher up the ladder you climb, the more important your communication skills become.
The ability to write and speak effectively has many benefits. Whether it's impressing your colleagues during a technical presentation or writing up an internal blog post, communication is key.
To become a senior developer you must be good at explaining not just what you're doing, but why. This is especially important when mentoring more junior team members.
Understanding and conveying the why behind tasks will solidify the skills you're learning as well as the skills you're teaching.
The process of finding solutions to difficult or complex issues.
Problem solving is an undervalued skill for all developers because it's not necessarily a skill developers are taught in bootcamp or degree programs. The ability to solve complex problems will arise throughout your career and will scale in complexity the longer you spend in the industry.
Learning how to problem solve early-on in your career will put you at an advantage when looking to achieve a promotion. I won't delve into the specifics of problem solving in this post but let's take a look at the general process.
First, you must identify and clarify the problem. Problems are often more nuanced than we initially perceive. What are you trying to solve? Are there dependent sub-problems that must be solved along the way?
Once you understand the problem you should list the possible solutions. What are the different ways you can solve the problem?
Now you're ready to evaluate your options. What benefits and drawbacks does each solution present? Are there performance implications for a solution? What about accessibility concerns?
You're now ready to select an option and build it. If you realize along the way that your solution isn't technically feasible or you encounter an unforeseen issue, you can always go back to step three and reevaluate your options.
Lastly, you can document your solution so that your team members can understand why you selected the solution you did.
Problem solving is an invaluable skill and it's undeniably one you'll need to become a senior developer.
A period of time during which a person receives guidance from a mentor.
One of the biggest factors in becoming a senior developer is the ability to mentor another team member. Mentorship is often though of as a formal relationship wherein the mentor has all the answers to the mentee's questions. This is an archaic definition of mentorship.
Mentorship is a symbiotic relationship where both parties are gaining knowledge. While most of the information will flow from the mentor to the mentee, the mentor should also be open to learning from their counterparts.
Mentors also shouldn't give out answers to the mentees' questions. Asking a question and receiving an answer has short-term benefits. Instead, a mentor's job is to guide the mentee towards the solution. By providing boundaries for your mentee to ideate and learn, their problem solving skills and confidence will grow more quickly.
As a senior developer you're expected to mentor more junior team members. It doesn't need to be formal (although a formal mentorship will serve your promotion more easily than an informal mentorship) but the act of supporting another team member will make strides towards your desired promotion.
The biggest piece of advice I can give to those looking to level up from a junior developer to a senior developer is to exhibit the characteristics of a senior developer before you have the title. If your company provides a chart with senior developer qualifications, make sure you're achieving the senior developer requirements before applying for a promotion.
And lastly, be patient. Being promoted to a senior developer can take months or years so don't compare yourself to other developers outside of your company.