You Are Not a Senior
Lets set things straight the software engineering landscape in Egypt has been suffering for the past few years; since 2014 we’ve been losing more and more talents to Europe for a number of reasons (that we won’t go over now), this so called brain drain has created a new phenomena, and please bare with me, a huge number of unqualified “seniors”.
I usually don’t like to write about the local field; I often feel its futile to talk and prefer tangible actions, however, I’ve been provoked by the number of uninformed posts and job descriptions circulating social networks, so here goes 😰.
In this post I will try to objectively explain why I think most local seniors in the field right now are really mid-intermediate at best, I also want to point out that I am making this judgement without taking the soft-skills side of the job into consideration, in other words, this is purely a technical assessment.
Defining a Senior
I don’t consider “miles under their belt” a proper measurement of someone’s level, you might have been coding for 20 years but that doesn’t make you a senior; what makes you a senior is the diversity of your experiences during those 20 years.
To get you on my same page, here is what I think makes a good senior:
- Ability to take on complex tasks and run with them from start to end with minimum supervision
- Ability to write flawless code following conventions and best practices
- Knowledge of the underlaying technology they are using day-in day-out
- Ability to go off-text when faced with a problem that can’t be fixed using their stack of choice
- Deep knowledge of the SDLC
- Deep knowledge of standards
- Fast learner
Why you are not a Senior
Now that we have the Senior criteria defined, here is why most are not seniors:
You use framework “X” written in “Y” but don’t know how to use language “Y”
I often meet a lot of people who are very proficient using a certain framework, but when it comes to writing code in the underlaying language powering that framework, they often have trouble structuring their code and fail to use the construct provided to them by the language.
A senior must know their language cover to cover, they should be very experienced in what their language offers. I could even go as far as requiring that they know how their compiler or virtual machine handles their code.
You flow behind hypes without understanding the technology
Many times you find teams using new hyped technologies without really understanding the problem they solve, probably the best example to that is the NoSQL hype train a couple of years ago, which still continues to this day to some extent.
A senior is able to judge whether a new technology solves the problem they are working on or not, they also know the limitations of that new technology and how it works.
Your code is full of vulnerabilities
If you are not able to identify vulnerabilities in your code then sorry, you are not a senior.
You have been coding using stack “X” for 10 years
Using “X” for 10 years doesn’t make you a senior in the field, it makes you an expert in “X”.
Our field moves quickly and if you are staying put with your knowledge you will quickly become obsolete; think early 2000s .NET moocs and MS certifications, Oracle JEE certifications, … etc., if you are not light on your toes, continuously learning your years of experience simply makes you an “expert” but not a senior.
You can’t recognize good code from bad code
5 nest loops is all I have to say about this one.
What should you do
My intention with this post is not to criticize or demotivate, but to bring a problem into the spotlight, we need to invest more into ourselves before climbing the ladder of seniority, its not the years that contribute to your career, its what you do with those years.
I strongly encourage you to broaden your horizon, to read more, to learn more, and to innovate instead of blindly following hypes. I understand that abstraction is part of our everyday, but this doesn’t mean that you should stop learning about how things work.