
I met and worked with many other developers as a software developer. Some just started their apprenticeship, some started their first job after university, some already had multiple years of work experience, and some even had 10+ years of experience working as a software developer.
Early in my career, I asked myself what a "senior" developer is and how I could achieve this title? I thought it was related to the years of work experience and that I would automatically receive this title if I had 3+ years of work experience.
After working with many other developers, I have a clear opinion about the title "senior" software developer.
Let's first summarize my distinguishing marks as a senior software developer:
Now let's dive deeper into these topics.

Most of the other marks will automatically be achieved if you have passion for your work. In my opinion, you can only be a good software developer if you love your work. This also means that you should choose a technical stack or specialty that you are (or will become) very good at.
Of course, you should also learn other stuff outside your specialty. Your goal should be to become a T-Shaped Software Engineer who knows his primary specialty very well.
In this article, I will mainly focus on web development tech stacks as I have the most experience working with them and have a personal opinion.
You should love to solve challenging problems in an endless amount of time. You should have the power, ambition, skills, and passion for solving any possible situation during your career.

This is essential for a software developer. It is often not very complicated to learn the basics of a programming language or framework. Most of the time, you can quickly implement features or even smaller projects after a short time. But it gets tricky if you need to debug, adapt the framework, or fix bugs.
For example, many people use the Angular CLI but are unfamiliar with all the steps behind the scenes. Or they use Angular with TypeScript but do not know how to read JavaScript code in the minified bundle code.
Basically, you can follow these basic steps to learn the fundamentals:
I would suggest reading some classic books about software development like Clean Code: A Handbook of Agile Software Craftsmanship or The Pragmatic Programer. These books will provide you the basic patterns, guidelines, and best practices to write good software.
In web development, JavaScript is the language you should master. Your browser will run JavaScript code (even if it was written using frameworks like Angular with a programming language like TypeScript), and you need to understand this code that is executed. This is also important if you need to analyze how a particular functionality is implemented in your framework, so you should be able to read low-level JavaScript source code.
For JavaScript, I would recommend you to read JavaScript: The Good Parts.
Same as for the programming language: Deep dive into the advanced mechanics used in your framework. For example, for Angular, I can recommend the blog Angular In Depth.
Be as efficient as possible by using keyboard shortcuts, plugins, and commands for your IDE, text editor, and command line. If you are using Visual Code, check out my article How I Increased My Productivity With Visual Studio Code.
I mainly worked with Git and can recommend you the free online ebook Pro git.

In my opinion, you can only call yourself a "senior" developer if you mentor others and also have a mentor yourself.
It would help if you had someone at your company, in your project, or even on the internet who you could learn from and improve. So you can also have a "remote" mentor where you read a specific blog, watch presentations, hear a podcast, or read tweets.
Don't be afraid that you are not the best at everything. There is almost always somebody better than you. (Read also about the Imposter Syndrome)
How you can mentor others:
My suggestion is to use these channels to keep yourself up-to-date:

Many developers try to avoid leaving their comfort zone, and a "senior" developer should not be afraid of leaving his comfort zone. Here are some examples:
In my opinion, a "senior" developer should have a clear statement and be able to fight for it in front of clients or other developers. It is not satisfying for me to "dictate" technical decisions to my team, and everyone accepts it without saying their meanings and starts implementing them.
For both sides, it is more satisfying if there is a vivid discussion about the technical proposal. It can help the architect get new impressions, and the team can actively impact decisions.
Do not hide behind your monitors. Go out there and talk to other developers, and you will profit from it. Additionally, use the social platforms mentioned above to contact other developers.
I would also recommend building up your brand and letting others be able to follow you:
Writing good code is essential, but it is also crucial to describe technical stuff to "non-techies" like clients. You should be able to draw architecture understandably or describe it in words. Additionally, you should be able to have working time management where you can prioritize tasks and work on them most efficiently.
As you can see, the journey of becoming a senior software developer is not very easy and cannot be achieved in a short amount of time. This is where years of experience are essential, but you have to spend your time focusing on the aspects mentioned above in these years. If you only have many years of work experience but did not grow yourself as a developer, you cannot be a "senior," in my opinion.
Of course, this is only my humble opinion so let me know what your definition of a "senior" developer is and what experiences you have had working with them?
