When I receive an enquiry about hiring one of our engineers, the customer often asks: "I would like a senior developer to be assigned. Probably, one who actively contibutes to the framework. Can you provide someone who corresponds to this requirement?"
When I hear that, I feel that I have to explain our vision of who a senior software engineer actually is. Most of people think that a senior developer is a top notch engineer who can write a code very fast, use any APIs and work 8 ideal hours per day. They think, being "senior" means to be a superhuman in the software world. Certainly, they want one of these superb specialists to be assigned to their project and believe that such an engineer can make work much more efficient.
And it is true that he can. But not in the way the customer envisions. Let us look through some legends around senior developers.
Speed of your mind
"Quick turnaround" is another cliche I see in requests for proposal (RFPs) very often. A capability to work fast is one of strengths a software team can be valued for.
I agree that a quick turnaround is something that can save customer's money, hence it is important when you work on a startup. The question is how exactly an engineer can speed up his work when the job takes what it takes. And here is one of differences between a senior software engineer and a junior or middle specialist.
Once I worked on a huge code base. The code was a legacy code which had been damaged by careless programmers. I spent a day on reading through the code and finally found a line which caused two errors. I fixed the line which resulted in completing two user stories. After the job was done I went to another room and told a colleague about my day. "Just one line - and two user stories are completed" I said, "But it took all my day".
"Well, you work like a sniper" the colleague answered, "You had to wait a day to make only one shot". After that we started talking about different tasks and engineers. He remembered another engineer, a friend of his who could never do the work of a sniper. "He is rather a machine gun shooter" he said and illustrated the "machine gun approach" with an appropriate gesture.
Speed of thought is something that belongs to one's nature; it does not come with experience. Some people are so fast that they cannot slow themselves down. It does not necessarily mean that they do high quality work. Quite the opposite, they make mistakes very often.
From my experience, a person becomes more thorough and careful (in other words, more "slow") as he or she gets more experienced. Thus, a senior engineer can be even slower than a junior developer in some situations because his thoughts are quality-oriented. Yes, his participation in a project can speed up the development, but this optimization is not visible at the first project stage. A senior software engineer will create a correct architecture from the very beginning and it will prove to be helpful at further stages. But at the start, it may even slow down the work speed.
Too many questions
Here are some other cliches from RFPs. A senior engineer should be "experienced in" some specific technology and be seasoned enough to "not ask too many questions".
It is true that seasoned engineers are "experienced in" many things, though not necessarily in a specific technology mentioned. They understand a lot, they really do. However, in practice it means that they will be asking many more questions than someone who is less experienced. Because they understand more and foresee more.
Communication is one of their strengths. They do not know everything, but they talk with the customer and master what they need.
When you hire a software team, be conscious about what you are asking for. It is not enough to ask for a "senior developer" to make sure that everything will be fine. This sentence is just a common phrase, it does not mean anything by itself. Where there is demand there will be supply and you will receive someone called "senior". I believe some software teams consist of senior developers only, no matter how old they are and how many projects they have completed.
Make sure that you specify requirements for engineers you are going to hire. You probably do not need a senior software engineer if you need someone who is fast. But if you need a thinker rather than a coder, then it is reasonable to say about that.
How old should be an engineer to become a senior? What should he do in his life to become one?
In Anadea we believe that a senior software engineer is someone who is more than a coder. In particular, a senior software engineer should:
- be able to communicate with the customer, puzzle out all requirements and provide complete transparency while work is going on;
- bear responsibility for making decisions in regard to the application architecture and some business solutions;
- help other engineers to communicate within the team without any issues;
- make work of the entire team more effective.
As you see, our senior software developer is a communicator rather than a code writer. And this is what he or she is valued for. It is not enough to develop features to be senior. In fact, many of middle engineers can do this without any trouble. But not too many of them can build the correct architecture, make decisions, foresee potential risks and explain their vision to the customer.
A senior software engineer is not going to write a code himself usually. Other engineers will do this. He can do some coding as well, but in some special situations (when he does this, it is a pair programming mostly). This way he shares experience with other team members. This is why we often call such an engineer a Tutor.
Think about what service you actually need before hiring an engineer. Your job probably does not require a "senior" if all you need is quick installation of features. If you hire a senior engineer, you hire a thinker. Be ready to use him properly. To talk a lot. To make decisions with his help. But do not expect that a senior engineer is simply faster than a junior or a middle engineer.