A senior developer earns an average of $40k/year more than a junior developer (Source: Indeed.com), and often more than double. So what is the difference, and is it possible for a junior developer to climb faster up the ranks?
Yes, a junior developer can climb much faster up the ranks to senior developer skills, title, and pay.
Like them or hate them, these labels are useful to help managers fill important roles and determine fair pay. For example, you don’t want to hire a junior developer to architect a major upgrade to a legacy system, or a brand new mission-critical system upon which the survival of the company depends.
That said, you also don’t want to hire a team full of senior engineers who sometimes place a lower value on learning and knowledge sharing, and could create a culture of knowledge silos, increasing bus factor risk. By creating teams balanced with junior and senior developers, employers can develop a culture of information sharing and save money at the same time.
There are many real differences between junior and senior developers, and those differences matter a great deal. It’s ok to be a junior developer for a little while. Every one of us has been there, and smart hiring managers understand that junior developers play integral roles in software development teams.
Definitions
- Junior: 0–3 years’ experience. Some knowledge of the language and technology stack. Usually hungry to learn more. As of this writing (2020), Junior developers typically earn $59k — $100k per year from US-based companies.
- Mid-level: 1–3 years’ experience. Good working knowledge of the language and technology stack. Warning: Developers can get stuck in mid-level skills, titles, and pay for 10 years or more. Mid-level developers typically earn $110k — $150k.
- Senior Engineer: 3+ years’ experience (hiring managers are usually looking for 5+, but frequently make exceptions for exceptional candidates). Mastery of the language and tech stack. Knowledgeable of common patterns and anti-patterns. Good understanding of standard application protocols. Good knowledge of performance considerations. Good knowledge of common security hazards (e.g., OWASP top 10 list). Great mentors. Senior JavaScript engineers typically earn $125k — $200k.
- Principal/Architect: 5+ years’ experience (10+ years preferred). A principal or architect is usually responsible for the technical stewardship of an application or major components of a large application. Responsibilities may include greenfield architecture, re-architecture, systems design, and even delegation and approval of architecture proposals for the application. A principal engineer should be a great mentor and have a deep understanding of various application architectures and technology stacks. They should have the experience to weigh the pros and cons of various software design choices and also have the people skills to rally the team around the chosen solutions. Principals and Architects typically earn $138k — $230k.
How to Skip the Line
Almost everybody spends a little time with junior developer pay and responsibilities, but anybody willing to put in the time and effort has an opportunity to graduate to senior engineer pay and responsibilities in 2–3 years instead of 5–10. Unfortunately, this path is common:
- Years 1–3: Junior
- Years 4–6: Mid-level
- Years 6+: Senior
- Years 10+: Principal/Architect
It could be:
- Year 1: Junior
- Years 2–3: Mid-level
- Years 3+: Senior
- Years 5+: Principal/Architect
The difference in salary between these two paths can add up to a whole extra year’s worth of salary in the first 6 years of your career, but that’s not the only benefit. When you get great at your job, you also have more fun. And when you have fun, you also get more done. Your employer will notice and reward you with more trust, autonomy, and responsibility.
A college degree won’t get you recognized as senior any faster than being self taught, but it may result in a few thousand/year extra for the first 3 years. After 3 years, it makes very little difference unless you went to a great school with good alumni networks.
So what can you do to make the jump between junior and senior faster?
Deliberate Practice
In “Peak: Secrets from the New Science of Expertise,” we learn that deliberate practice is the key to learning.
Typically, you might learn to code by taking some classes, joining a bootcamp, or teaching yourself from books, online videos, blog posts, or Q&A sites. At first, it’s a struggle just to remember syntax and built-in functions, but you keep at it, and pretty soon, you automatically reach for a working solution to the immediate problem at hand. It becomes muscle memory.
You manage to get hired, and at first, the job is a challenge. Finding your way around the codebase and learning to deal with other people’s code is hard for about two months. And then you get more comfortable. Inside your first year, you start feeling like a pretty competent developer.
As you gain experience, you learn more things, like what HTTP response codes mean, how to deal with errors, and perhaps even how to defend against top security hazards. At this point, you have a good working knowledge of your job. You know enough to get by and (hopefully) not feel too much like an imposter.
And this is where most developers spend most of the rest of their careers. Your skills hit a plateau. Eventually, you get hired as a senior developer not because you have exceptional skills or knowledge as a developer, but because employers would feel silly saying you’re not senior after you’ve invested so many years.
If you’ve been coding for more than 3 years and you’re not yet considered senior, you may be missing a secret that separates average developers from 10x developers (yes, 10x differences are real).
It’s possible to get much, much better than average. That doesn’t mean write 10x more code, but instead write code that produces 10x more value: 10x more sales or 1/10th as many support requests because there are fewer critical bugs. Software performance is not about how many features you complete or how much code you type. It’s about how much value you create.
The difference between the most valuable code and the least valuable code can be astronomical at the global scale. Great managers understand that hiring a 10x developer isn’t about hiring a great hero who will singlehandedly drag your project to completion. Instead, the best way to leverage a 10x engineer is to share knowledge, establish great teamwork, and get the whole team performing 2x — 5x better. That requires excellent soft skills.
No matter how you measure performance, the potential benefit for you is that you can earn 2x — 3x more if you master the right skills early in your career.
What Should You Study?
Getting a great job starts with a great resume. Contrary to common belief, you don’t need a lot of great experience to write a great resume. If you’re junior, you can highlight that as a benefit and point out the learning materials you’ve devoured to ramp up. If you’ve got a demo app you built to showcase your skills, that can help you prove that you have what it takes to contribute, whether or not you’ve ever held a job before. Learn how to write a good resume.
Learn current syntax. While interviewing for jobs, you’ll often need to write code. Code like this won’t help you:
function add (a) {
return function (b) {
return a + b;
};
};
When you could have written this, instead:
const add = a => b => a + b;
Learn to compose software. All software development is composition: The act of breaking down big, complex problems into lots of smaller, easier-to-solve problems, and then composing those solutions to form the application. That’s why building blocks like functions, modules, objects, and classes exist: to compose. Learn how to compose software.
Learn functional programming basics. Functional programming’s focus on simple, composable building blocks and immutable state makes it an excellent fit for today’s web application architectures. It also tends to be more reusable, more flexible, and easier to refactor than procedural or object-heavy code. Almost all of JavaScript’s most popular libraries are functional, or inspired by functional approaches (e.g., React, Redux, Lodash, Ramda, RxJS, etc).
Learn how to work with objects. OOP isn’t going away any time soon, and you don’t have to abandon OOP to program in a functional style. Objects and encapsulation will continue to have their place. Learn aggregation, delegation, concatenation, and encapsulation. Class inheritance has not been able to keep up with more modular code reuse patterns, such as module imports and simple functions. It’s best to favor compositional reuse patterns over class inheritance whenever possible. To get started, stop using the extends
keyword and ask yourself if you can share and import functions from a module, instead.
Learn how to work with asynchronous processes. If we want to avoid timing dependency problems, there are many approaches, and some are better than others. Tools like promises and async/await will help. It may also be a good idea to learn how to work with streaming tools such as RxJS.
Learn standard developer tools. Most professional JavaScript developers will need an understanding of git and GitHub. As of 2020, most of the JavaScript world is also using Visual Studio Code to edit source files. Senior developers have committed their tooling workflows to muscle memory.
Soft Skills
There’s a lot more to being a great developer than technical skills. Here are some other tips for a quick career progression:
- Be kind.
- Avoid bikeshedding (arguing about things that don’t matter much). When there are stylistic disputes, it’s probably time to install ES Lint and Prettier and automate them away.
- Support the team. When team disagreements come up, it’s fine to express an opinion and weigh in with pros and cons, but when the team reaches a decision that you disagree with, it’s time to get on board and back the team so that the culture and morale remain positive.
- Practice empathy and compassion. Writing great software requires empathy for the user’s pains and problems, empathy for your manager’s concerns, empathy for your team members, and empathy for your future self. To gain empathy, you must first understand the problems that each stakeholder faces. Interestingly, understanding is also the first step you must take before you begin to build a feature or fix a bug.
Empathetic developers write better software. They’re also easier to get along with because they’re conscious of the needs of the people around them, less self-centered, and less egotistical.
Conclusion
Go into your job interview with an understanding of the problem that the hiring manager is trying to solve. They’re looking for somebody with the skills to do the job, but also somebody who will work well with the team. They have a limited window of time to make a crucial decision. If you come to the interview prepared, odds will be better that you’ll land a better job with better pay.
Level up your skills
- Current syntax
- Functional programming basics: pure functions, curry, function composition
- Objects: aggregation, delegation, concatenation, encapsulation
- Asynchronous patterns: callbacks, promises, events, streams
Keep these points in mind
- Practice a lot at the edge of your abilities to build confidence that interviewers will pick up on. You’ll stumble less in coding challenges, and deliver better solutions, faster.
- Learn how to write a good resume.
- Practice kindness.
- Avoid bikeshedding.
- Support the team, even if you disagree.
- Practice empathy and compassion.
Level Up Your Skills with Live 1:1 Mentorship
DevAnywhere is the fastest way to level up to advanced JavaScript skills:
- Live lessons
- Flexible hours
- 1:1 mentorship
- Build real production apps
Eric Elliott is the author of the books, “Composing Software” and “Programming JavaScript Applications”. As co-founder of EricElliottJS.com and DevAnywhere.io, he teaches developers essential software development skills. He builds and advises development teams for crypto projects, and has contributed to software experiences for Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC, and top recording artists including Usher, Frank Ocean, Metallica, and many more.
He enjoys a remote lifestyle with the most beautiful woman in the world.JavaScript Scene
JavaScript, software leadership, software development, and…
Thanks to JS_Cheerleader.