Javascript is required
Mokkapps Logo

My Definition Of A Senior Developer

Michael Hoffmann (Mokkapps) - Senior Frontend Developer (Freelancer)
Jul 22, 2018
6 min read
|
259 views
Career
My Definition Of A Senior Developer Image

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:

  1. Have a 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 a passion for what you are doing

Passion Meme

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.

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 for solving any possible situation during your career.

Learn the fundamental basics of your programming language and frameworks

Never Stop Learning

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:

Read some of the fundamental books about software programming

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.

Deep dive into your programming language

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.

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, check out 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.

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:

  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 that 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 on other developers.

Fight for your opinion

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.

Be social

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

Focus on soft skills as well

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.

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 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?