By the past few years, I had to communicate with many various programmers. Many called themselves senior programmers, but in reality, they weren’t truly at such level. Bellow I will try to explain how you can recognize a really senior programmer. This is my personal opinion, but I’ve met with other senior programmers who confirm that.
So first of – what is the common mistake in naming a person as a „senior”?
Mostly years of experience – it’s quite various but I often see that people who have 3-5 years experience are called seniors only because of that reason. This is a huge misunderstanding!! I’ve met people with more than 3 years of experience, who didn’t even reach a „regular/middle” level.
Years of experience are important – but only if you work as a part of teams where you are forced to get you out of from your comfort zone, and constantly learn new things to be better and better. Also, years of work are required to follow the technology changes and how to handle them. Those experiences will change your point of view for many things related to technology like frameworks, code language and how to organize your work.
When I hear „Senior,” I think of someone who is able to lead other programmers, review others code and give valuable notices, how it can be improved. They are adept in risk management and the most important: they can communicate the before mentioned to their peers.
A person who can plan and do each part of the development cycle – starting from gettering information, design (with detailed technical specification, defined test cases, UML diagrams etc), code and test a system. They understand and use design patterns!!!. In most cases, they have mastered object oriented programming and design. They know what is the true abstraction – which has a huge impact on the code decoupling. They are also able to estimate their work (mostly based on the prepared specification, so that why it’s so important).
Currently, the GIT is the leading system to work as a code repository, so he must be familiar with git flows and with deployment techniques like CI and CD (Continuous Delivery containing Continuous Integration and Continuous Deployment).
A person who is not afraid to work with legacy code, because he knows how to handle it. Seniors can talk to system architecture or component design, can focus on true architecture and not be framework dependent. That means, when you ask him why he chooses some solution, he will be able to give you a detail explanation of his choice and the pros and cons.
Of course, there are such a lot of technologies out there, that it’s impossible for a single person to knows them all. But beside the technology, there are some programming rules which are common in most of them. So next time, please check if the person is at least at „regular/middle” level by asking for a proof of work, where he uses design patterns, write automated tests (integration, unit etc) and he prepared the design of the architecture before he started to write a single line of code. Many of those self-named „seniors” don’t even reach that, so such true „middle” will be much better than any self-named senior, only because he is working as a programmer by the past 4 years.