Four years in software engineering taught me a lot but not what I expected. I thought nailing the code would nail the promotions, but that was a rookie mistake. Most juniors suck at the real skills you need to climb up - it ain’t just about the code, and yes, that threw me too. It’s a wild ride in the startup and corporate world, and shifting your mindset is crucial.
In this post, I will be drawing from my own experience, trying to describe the new mindset you have to adopt.
In short, the expectation is - to get a detailed, and relatively narrow task and be able to execute well on it in a reasonable time (probably with help from your team).
Let’s break it down.
“detailed, and relatively narrow task” - you won’t be writing a completely new feature. the mental work of designing the feature was already done by one of your colleagues. and you will be executing on a small, well-defined piece of it.
“Execute well on it” - this may sound obvious, but the expectation here is writing a simple solution to the task. the solution should answer the requirements and be well-tested.
“in reasonable time” - when you get assigned the task, most probably you will be asked to give an estimate. since you might be new to the project someone else might estimate it for you, while accounting for your unfamiliarity with the project.
In my book, a reasonable time is anything less than 2x the estimate for a new junior hire.
There’s a nuance here. estimates are by definition only an estimation. many times when engineers of different levels estimate their work it is inaccurate - and if you feel that you are not making the imaginary estimation deadline, it is important to communicate it to your team lead.
To wrap up this section, you should understand that the expectations from you as a junior are much different than mid-level, or senior.
You are expected to have inaccurate estimations, struggle with learning the codebase, and ask tons of questions.
Embrace this. don’t be shy. ask questions, let yourself be the “dumbest” in the team, and learn as much as you can.
Early in your career, you should adopt a mentality of “I know nothing, please teach me”.
It might be challenging to adopt since we all have egos, but I believe that if you want to get out of the junior phase quickly, you have to realize that they hired you as a junior for a reason, and you probably have a lot to learn from your co-workers.
This one is relevant to software engineers at all levels.
Ask your team lead/seniors for feedback on your performance.
Make sure you are given feedback regularly, and not only once a year in a performance review.
Accepting feedback is also a skill you have to work on, as your instinct might be to defend yourself upon receiving some bad feedback.
Listen to the feedback, take notes if necessary, and ask for clarifications.
This is not a fight where your team lead is bashing you and you are defending yourself.
This is a discussion on how you can do better, embrace it, and be vulnerable so that you’ll be able to grow from it.
Asking for feedback will also make people around you perceive you as one who is looking to grow, which is a great place to start if you want to get promoted eventually.
If you don’t ask for it - you don’t get it.
“He is writing such clean code consistently, I think we should promote him” - said no one, ever.
If you want to get promoted you have to communicate it, and you have to ask for it, no one will magically do it for you (in most cases).
Don’t guess what it takes to be a mid-level / senior - ask
Don’t rely on the definitions you find online of a mid-level or a senior engineer.
Ask your team lead: “I am aiming for a promotion this year, what are the gaps between my current level and the next one?”
This accomplishes two things:
- Your team lead now knows you want to be promoted
- After the conversation you will know better what you need to do to match the criteria in your specific company.
I have a few more important pieces of advice about getting promoted I wanted to mention:
- Pay attention to how often people are getting promoted, what did they do? learn from others around you, and ask them for advice.
- Have your team lead promoted anyone before? If they did, great - it raises your confidence that they can pull it off, but if that never happened it might raise a few red flags about your team lead or team itself - you might need to switch jobs to get promoted.
- Define clear and measurable goals with your team lead, so that by achieving them it is much easier for him to push for your promotion.
Another aspect of being promoted as a junior is how people perceive you.
You’ll have to work hard to make your surroundings perceive you as someone who is not “the junior” or “the intern”.
Sometimes, it is just easier to switch jobs, aiming for the next level.
It is hard writing advice for all juniors, in all countries and all companies.
Much of the things I said are very general, and having a mentor who knows your story personally and gives you personalized advice, is super powerful.
Seek a mentor (within or outside your company) that you are comfortable talking to and being vulnerable with, it can boost your career.
On that note, I am offering some mentorship myself.
If you read this post, I hope you get the impression that I love guiding others in their journey.
If you want to talk to me and get some more personalized advice just contact me via Email / Twitter / LinkedIn.
If you want some more details about what I offer as a mentor, check out this page
- I feel uncomfortable asking for feedback / I don’t know how
- I feel uncomfortable asking for a raise, or a promotion / I don’t know how
- I don’t know how to “market” myself
For some time, I am the guy that is pushing my colleagues into having such conversations with their team lead.
Being a junior is synonym to having the above excuses (in most cases).
To climb up, you need to break free of them, and unlearn a few things.
Anyhow, this is my take that sums everything up -
A job is a deal you are making with a company where you are selling your time. If you value it, make the most of it.
There’s much more things to cover, and I might cover them in a follow-up post. things like:
- Handling failures & dissapointments (while staying professional)
- Managing your time well (how not to work 12h a day)
- Pushing technical initiatives
- Getting the most out of compensation talks
Anyhow, this is it for today.