My Definition Of A Senior Developer
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:
- Have a passion for what you are doing
- Be a "problem solver"
- Learn the fundamental basics of your programming language and frameworks
- Be a mentor and have a mentor
- Keep yourself up-to-date
- Leave your comfort zone
- Fight for your opinion
- Be social
- Focus on soft skills as well
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.
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.
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:
- Be patient and do not judge others because of their lack of knowledge
- Let the other person talk and listen actively
- Show the path of success that can be achieved as a senior developer
- Spend enough time and offer help when it is needed
My suggestion is to use these channels to keep yourself up-to-date:
- (Online) Courses
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:
- You are afraid of talking about technical stuff for many people? --> Give a talk at a conference or Meetup and get comfortable with it.
- You don't like writing backend code and are only interested in frontend? --> Go ahead and learn backend technologies. You will benefit if you understand the "other" side.
- You avoid touching your CI/CD pipeline as you do not understand it, and some other developers are more experienced with it? --> Take your time and learn the basics so that you can help yourself, and you are not dependent on other developers.
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:
- Have a website where you present your projects
- Use channels like Twitter, Facebook, YouTube, or Instagram and inform your followers about interesting topics
- Start a blog where you start writing technical articles
- Try to hold talks at conferences
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?