Recently, I had a discussion on Twitter about how a developer becomes senior.
The main idea is a paradox, though. To be considered senior, a developer (or some other worker type for that matter) should have experience in a set of areas required for the job. However, to get that experience, the developer should be given a chance to work on projects that provide that kind of experience. And here is the tricky part — nobody wants people who do not know how to do their job. Therefore, you will make mistakes, and mistakes are costly (sometimes a little, other times a lot).
The high-qualified talent pool is significantly smaller than the increasing demand for such workers, and companies sometimes must hire people without all the necessary experience. Given this reality, it is interesting what defines and shapes such decisions.
The answer to this question might be controversial to some people and a natural one to others:
If you must choose between two people who do not have the necessary experience, you will select the one who made a better impression of a person who will handle the job competently.
In other words, you will choose the person who has better soft-skills and learns faster.
Soft-Skills vs. Hard-Skills
Although it may sound counterintuitive, you cannot learn everything you need to become a senior developer beforehand. You cannot be fully prepared to become a senior engineer without working on challenging projects, making mistakes, and learning in the process.
But to get to work on such projects, usually, you have to possess the necessary knowledge and skills already. Otherwise, few companies are willing to hire people who do not know how to do their job.
Therefore, if you don’t have the full skill set needed for the job, it requires a leap of faith your employer has to take to promote you to bigger and more complex projects that will broaden your experience. And that is possible if you have other traits, such as (but not limited to):
- communication skills
- stress management
- analytical thinking
- proactivity
- etc.
Furthermore, this is valid for any degree of seniority. Even (and especially) if you are a junior dev, you have to take on more complex tasks so that you will be able to get the necessary experience.
Conclusion
To become better, you need to work on tasks of increasing difficulty. That is partially achievable through working on personal projects, but often that is not enough.
Due to its dynamic nature, software engineering jobs imply a certain degree of learning on the job. Therefore, if you don’t have all the necessary experience, you might still get the job (or that promotion) if you have the right set of soft-skills.
If you liked this article, consider subscribing below and following me on twitter (@iuliangulea).