After 4 years of programming I asked myself, what makes a senior developer? And am I one? If not, how much time do I need to become one? On my way to try to get some answers, I got a clear idea of what can stop a developer from becoming a senior developer and I thought my findings were worth sharing. This is why you’re not a senior developer yet:

You are not testing your code

I mean, writing automated tests, at least functional tests, for your app core features, but going all TDD (Test Driven Development) is the best option. If you never heard about TDD, this is your chance to Google them and learn more about them. If you think that tests are a waste of time you are really wrong; you will continue writing software the wrong way for the rest of your life.

You don’t speak design patterns

To be considered a senior developer, you have to master at least 10 GoF (Gang of Four) design patterns with their applications and be able to recognize them easily inside any framework or library. Because the programming field is old enough, the previous developers have already solved the majority of design problems you may face. The proposed solutions (patterns) are respecting the SOLID principles. So, it will be a loss to ignore them and try to re-invent the wheel each time you’re solving a problem.

You are not documenting your code

When it comes to writing serious apps, believe me, documentation is not a secondary matter for many reasons. First, the time you spend developing and maintaining those apps is more than the average companies’ turnover rate. In other words, the time you spend writing documentation will be enormously less than the time you will spend explaining to every newcomer how the code works or the time he will spend trying to figure it out by himself. Second, you can’t memorize how all your code works and what it does. You will be trying to understand the code every time you go back to it and it’s also a waste of time.

“CI/CD” are not habits for you

It doesn’t make sense to keep uploading all your project files to your server (Test, prod or more) after every tiny edit. Or to waste time trying to figure out and upload edited files and run tests manually. You’re lucky enough that this problem is already solved. People invented The CD (Continuous Delivery) and CI (Continuous Integration) for you, so you just have to adopt them as a habit and you are OK.

You are jumping between techs/stacks

To get to a senior level in tech you have to stick to it for years. We, as developers, and mainly new ones, are very curious and we like to test every trending tech. Yeah, that’s nice and also it helps building a good career but its side effect is that you miss the opportunity to become a senior developer.

All your past projects are generic small projects

If it’s really the case, performance, caching and scaling weren’t a main concern for you. That means you never had a real chance to challenge yourself to level and sharpen your skills. I am worried that you will only have some repeated months of experience.

You still think that your text editor is better than a real IDE

In one of my previous project, I met a developer with more than 6 years of experience. He was trying to convince me that a text editor is better than specialized IDE (Integrated Development Environment). I was shocked. Yes, text editors are really fast at reading files but they will never be as smart as an IDE. At the end of the day, you’re wasting time when you think that you’re gaining it.

If you keep asking/thinking: “Am I a senior developer?”; I am sorry to say you are not one . Right now, you can see the big picture and you know what you need to become a senior developer in the next couple of years (and yes, it takes years).