edBy 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 not limited to, but I often see that people who have 3-5 years experience. The reason they call themselves seniors is only because of the years spent working as a programmer. 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. It forces you to get out of from your comfort zone. Makes you constantly learn new things, which let’s you improve. 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 clues on 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. That means, that 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 detailed explanation of his choice along with the pros and cons.
Of course, there are so many 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. You can do that by asking for a proof of work. Where he uses design patterns, writes automated tests (integration, unit etc) and where does he prepare the design of the architecture before he starts to write a single line of code. Many of those self-named „seniors” don’t even reach that. A true „middle” will be better than any self-proclaimed senior, only because he’s working as a programmer for 4 years.