My Definition Of A Senior Developer

During my time as a software developer I met and worked with many other developers. Some of them just started their apprenticeship, some started their first job after university, some already had multiple years work experience and some even had 10+ years experience working as a software developer.

Early in my career I asked myself what is a “senior” developer and how can I achieve this title? I thought it was related to the years of work experience and that I will automatically receive this title if I have 3+ years of work experience.

Nowadays, after I have worked with many other developers, I have a clear opinion about the title “senior” software developer.

Lets first summarize my distinguishing marks of a senior software developer:

  1. Have passion for what you are doing
  2. Be a “problem solver”
  3. Learn the fundamental basics of your programming language and frameworks
  4. Be a mentor and have a mentor
  5. Keep yourself up-to-date
  6. Leave your comfort zone
  7. Fight for your opinion
  8. Be social
  9. Focus on soft skills as well

Now let’s dive deeper into these topics.

Have passion for what you are doing

Passion Meme

Most of the other marks will be achieved automatically if you have passion for what you are doing. In my opinion, you can only be a good software developer if you love the stuff that you are doing. This also means that you should choose a technical stack or specialty where 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 which knows his main specialty very well.

In this blog post I will mainly focus on web development tech stacks as I have the most experience working with it and have a personal opinion about them.

Be a “problem solver”

Problem Solving Meme

You should love to solve challenging problems in an endless amount of time. You should have the power, ambition, skills and passion to solve any possible problem that will occur during your career.

Learn the fundamental basics of your programming language and frameworks

Never Stop Learning

This is really 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 not familiar with all the steps that happen behind the scenes. Or the 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:

Read some of the fundamental books about software programming

I would suggest to read 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.

Deep dive into your programming language

In web development, JavaScript is the language you should master. At the end of the day, 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 be able to understand this code that is executed. This is also important if you need to analyze how a certain 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.

Master your framework

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.

Learn your IDE / editor / command line

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, checkout my article How I Increased My Productivity With Visual Studio Code.

Learn version control

I mainly worked with Git and can recommend you the free online ebook Pro git.

Be a mentor and have a mentor

Mentor Meme

In my opinion you can only call yourself a “senior” developer if you mentor others and also have a mentor yourself.

You should have someone at your company, in your project or even in the internet which you can learn from and get better. So you can also have a “remote” mentor where you read a certain 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 who is better than you. (Read also about the Imposter Syndrome)

How you can mentor others:

  1. Be patient and do not judge others because of their lack of knowledge
  2. Let the other person talk and listen actively
  3. Show the path of success which can be achieved as a senior developer
  4. Spend enough time and offer help when it is needed

Keep yourself up-to-date

My suggestion is to use these channels to keep yourself up-to-date:

  • Twitter
  • YouTube
  • Podcasts
  • Conferences
  • Blogs
  • Meetups
  • (Online) Courses

Leave your comfort zone

Comfort Zone

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 of other developers.

Fight for your opinion

In my opinion, a “senior” developer should have a clear opinion and be able to fight for it in front of clients or other developers. For me it is not satisfying if I “dictate” technical decisions to my team, everyone accepts it without saying their meanings and start implementing it.

For both sides it is more interesting, if there is a vivid discussion about the technical proposal. It can help the architect to get new impressions and the team can actively have an impact on decisions.

Be social

Do not hide yourself 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 get in contact with other developers.

I would also recommend to build up your personal brand and let 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

Focus on soft skills as well

Writing good code is important but it is also very important to be able to describe technical stuff to “non-techies” like clients. You should be able to draw architectures in an understandable way or describe it in words. Additionally, you should be able to have a working time management where you can prioritize tasks and work on them in the most efficient way.

Conclusion

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 the point where years of experience are important but you have to spend your time in these years by focusing on the above mentioned aspects. 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’s your definition of a “senior” developer and what experiences you have made working with them?

Michael Hoffmann

Passionate software developer with focus on web-based technologies