Every web developer has been a junior developer. Some junior devs stick with their career decision and watch their coding skills improve over the years while others decide they don't enjoy web development as much as they thought they would. For those that stick with it, they learn new things all the time and they get exposure to more complex issues.
Eventually, that little junior developer evolves into a mid-level developer. That means you have learned enough to be let loose on a project with very little supervision. The mid-level developers are in that awkward phase. They know way more than the junior developers, but they haven't encountered enough to be considered a senior developer.
That's ok because sooner than later, the mid-level developer ascends to senior developer status. Then they look around and see how much they have learned and grown from that little nervous junior developer. The ascended senior developer has skills that the junior developer might not even know about yet. Here are some of the skills that separate a junior developer from a senior developer.
Senior developers look at the project holistically
When a senior developer is assigned a project, they usually try to figure out how the whole application works from the front-end to the back-end and maybe some of the server stuff. A junior developer typically doesn't consider these things unless they become an issue.
Senior developers have enough experience to know that the code they write will affect more than the file they write it in so they try to understand the application before making changes. After a junior developer has been on a few different projects that are set up completely differently, they start to develop this holistic way of thinking.
Senior developers solve bugs more efficiently
Nothing is more frustrating than when a senior developer fixes your code with one line. A junior developer can work on a single bug for days while the senior dev just looks at it and instantly fixes it in one line, as if they were a magician. This happens because senior devs have seen more crazy code and they know exactly what to look for.
For a junior developer, most of the bugs that come up are completely new. If you aren't quite sure what you are looking for or what kind of error you are looking at, a simple logic error can turn into a dive down a really deep rabbit hole and you'll pop out further away from the problem than before.
Knowing what to look for when you encounter bugs can make the difference between finishing a project on time and being a week late. The only way to get better at debugging code is to keep debugging.
Senior developers have a deeper understanding of the full stack
It's not uncommon for a senior developer to jump into the database and make changes to the schema whereas a junior developer may have never heard of a schema or touched a database. Senior developers are more likely to have a wide variety of experience so they are able to jump in where they are needed.
This relates to the holistic approach of understanding the project in question. Since a senior developer typically spends some time looking around the project to understand how it's set up, they are able to fix things that aren't necessarily related to the code. If there's a server issue, a senior developer can usually take a look and fix it.
Senior developers can also work with any user stories provided by the product management team. They know how to take an epic user story and break it down into smaller agile user stories because they understand how the overall process works. They understand the software architecture and decide how to build the features required from the ground up.
Another thing they don't skimp on is testing. They are familiar with test-driven development and behavior-driven development practices. They are also more familiar with things like DevOps and have seen multiple projects go through the entire development process, from ideation to production.
Junior developers just haven't had the exposure to every moving part of a web application so they are focused almost exclusively on writing code. It's not unusual for a junior developer to not know about everything. That's the point of being a junior developer. You write code until you're decent at it and then you learn other things.
Senior developers know what to look for in documentation
Not all documentation is written properly and is easy to understand. It's easy to get lost on Stack Overflow or Hashnode questions or in a framework's documentation that uses too much jargon and not enough examples. Good documentation should have plenty of examples, explanations that don't use an excessive amount of jargon, and they break down everything into easy to read chunks. Bad documentation could be anything like not enough examples, hard to understand explanations, or poor organization.
As you might guess, junior developers have a harder time asking the right questions or phrasing the questions correctly. So, they spend a lot of time crawling through forums and documentation and Google searches. Junior devs have a tendency to go down these deep rabbit holes until they are completely lost or they wait way too long to ask for help. This is when the senior developer comes in with more of their senior developer magic.
They are able to skim through forums and documentation quickly and with ease. There are usually a few keywords that senior developers look for and they try to ignore unrelated things. Usually, they find the exact piece of information they need in a few searches.
Senior devs do also read through test cases you can find in the project repo to get a better understanding of how the web app should behave. This is a great form of documentation because it lays out exactly what should be expected from the app. Junior devs can struggle with writing tests in general so they usually aren't able to get as much value from reading test cases.
Senior developers spot issues even before they turn into issues
Again, back to that holistic approach to a project. Senior developers tend to have a knack for identifying issues before they become issues because they know how everything ties together. An example of something a senior developer might call out would be the CORS settings in a config file.
A junior developer might be trying to figure out why the application works locally but not in production and that's the reason. It's something so specific that a junior developer might not have heard of it before, but it's also a common problem so the senior developer has seen it a hundred times before.
Senior developers explain technical jargon in a way anyone can understand
This is a more subtle skill that senior developers can have. When you understand the fundamentals of web development really well, it's easy to explain them to someone who has no clue of what you do. Most senior developers have worked on different teams and they've had to learn how to explain code to everyone from the CEO to the junior developer.
That doesn't mean a junior developer can't do the same thing. What it means is that a senior developer will most likely be able to explain tech jargon better because they have an idea of what the person talking to them is trying to figure out. Senior developers know this stuff inside and out so it's not really difficult for them to explain things.
A junior developer might struggle with this a bit because they haven't seen the jargon applied in real situations yet or they themselves don't quite understand it. Usually junior developers can give a basic explanation of the jargon or they need people to guide them by asking questions.
Senior developers also understand the business side of things. They look out for things like regulatory and legal issues that most junior developers would never think about. They also know that the web app doesn't exist by itself. They might need to coordinate with different departments like sales or business development to get the information they need or to make sure the web app is going to do what the end users need it to do.
Senior developers don't fear making decisions
If you put code in front of a senior developer and give them something to fix or add, you can leave them to it. Once they know which technology stack they are working with, they have a general idea of how to approach a problem. Senior developers have a deeper understanding about the architecture of their technology stack and that allows them to figure out any limitations or possibilities for the web app they are working on.
They know what corners can be cut and they know which corners should never be cut. Most of the time they also don't mind writing new specs for features that need a little work to fit in the technology stack used in the project.
There are times when a senior developer knows they can't create a feature or fix a bug and they are able to explain it to the business side without doubting themselves. If there is something out of the scope of the project or they see how it doesn't meet certain rules for the industry the app works in then they don't hesitate to let it be known.
Junior developers struggle with this because they are more timid about speaking up on issues they see. A junior developer might know that a certain regulation is being violated, but they don't want to say anything out of fear. It takes time to build up that confidence to speak up because you do really need to know what the exact issue is before you tell others about it.
I know this might seem harsh to some of the junior developers out there, but here's a bit of comfort. Nobody expects you to perform like a senior developer. That's why they hired you as a junior developer. You can help yourself get up to senior developer status by learning from a senior developer.
Most of the time they aren't shy about sharing their knowledge with people who genuinely want to learn. Something else junior developers can do to get up to speed faster is to invest the time in looking at more than just code. It will never hurt to know how databases work and knowing some SQL will help even more.
The main thing you have to do as a junior developer is stick with it. Even when web development gets hard and you start questioning your career/life decisions, if you stick with it, you'll reach that coveted senior developer status.