Fresh graduate to Senior Engineer in 27 months
Before jumping to conclusions, be informed that the title of this article is clickbait. The reality is that I started my career early, while still being an undergraduate, gaining a total of around 4.5 years of experience before being promoted to Senior Software Engineer.
“Do you have 5 years of experience, or the same year of experience, repeated 5 times?”
In my opinion, hours spent getting out of your comfort zone count more than the ones in which you’re doing something easy or that you’ve done often.
As a software engineer (or any other software or non-software-related position), you’re probably wondering what are the steps to climb the ladder to the next level. Is it just a matter of time?
A wise piece of advice I received from someone at Hootsuite, my current workplace, is the following: “before being promoted to the next level, you first have to prove you’re able to do it”.
Each role has a set of responsibilities associated with it. Before advancing to the next position, you first have to start performing a small subset of those responsibilities, proving that you can be trusted to successfully handle the new role. Your company should have a list of items defining `What success looks like` for each position, either software-related or not. Make sure you talk to your manager to have a clear understanding of what’s required of you to get to the next level.
In case you want to see how a software engineering/management career ladder looks like, here’s an example published by Camille Fournier, author of Manager’s Path.
So, without further ado, here’s a list with some pieces of advice that I found to be working, in random order. It is tailored for a software engineer, but the general point should work for other positions too.
Always try to find the root cause — whether you’re debugging something or trying to understand why a piece of code does what it does, be curious to understand the underlying cause of the issues you encounter. This might mean digging through library/framework code or documentation, but it will help you build a better overview of what’s happening, which will prove helpful in the right context.
Master your tools
Whether it’s command line, git (or any other VCS), your editor, or a programming language, you need to keep getting better at using them. You don’t have the luxury to search for that git revert command in a production outage.
Also, learning new tools proved to be quite a time saver for me. For example, whenever someone needs input from you, it’s quicker to execute a previously saved Postman request than searching for how the request should look like and building that cURL command.
I won’t add a list of tools I use, but I’ll share a principle: if it’s taking too much time and you’re doing it frequently, search for a tool that can automate as much as possible of it.
As a software engineer, you interact a lot with a diverse set of colleagues, either engineers or not. It’s crucial that you communicate efficiently and you clearly describe all the edge cases. You may have a brilliant idea, but if you can’t express it properly, it may be overlooked.
- avoid sending a wall of text. Keep things short and clear. And if you can’t, at least structure your message so that it’s easier for the reader to focus. See this article which will help you get a better understanding of what I mean by structure.
- each message should end with one or more action items so that it’s clear who has the responsibility to move forward with the subject and what are the next steps in that case
Whether we’re talking about deadlines or something went wrong and your help is needed, people need to know they can count on you. It brings little/no value if you come up with a new initiative, but you forget about it and it’s never implemented. #StepUp, keep your words, and be trustworthy.
- have a TODOs tracking tool. Software engineering it’s much more than just writing code. You meet with other peeps, decide on what’s next, debug stuff, you’re asked to review Pull Requests, etc. Either if it’s pen & paper or one of the multitudes of available apps, use something to keep track of your TODOs.
- Bonus points on the above: learn how to prioritize TODOs. First, make sure nobody is blocked by something on your TODO list, then make sure you meet your own deadlines. For example, if someone waits for your review on a PR, prioritize unblocking them before starting a new PR on your own. If there’s a fire/outage in the production environment at the same time and your team needs your help, don’t let them wait.
Help those in need
Whether you’re talking with a new intern, a product manager, or a fellow engineer, let your team benefit from your knowledge. #OneTeam. Whenever you think about helping others, try to take into consideration what you needed when you were in their shoes — either as an entry-level or a more experienced engineer.
One of Hootsuite’s leadership principles I consider valuable is called `Lead with humility`. Even if you have more knowledge, don’t put yourself above anyone else. Be open to listening to other solutions and opinions.
Grow your skills
We never stop learning as software engineers, so the best choice is to surround yourself with people from which you can learn. Always have a role model and a clear path of what you need to do to get there.
One of Hootsuite’s OKRs is to “Create the best employee experience in SaaS”. To do this we follow an internal process twice a year in which we set goals for the next 6 months. We then have recurring 1:1s with our lead/manager to check up on the progress. This helps us find a purpose in the company and keeps us on track to where each of us wants to get.
Besides something similar to our goal-tracking process, I recommend reading technical books and watching technical presentations to see all kinds of issues people encounter, as this is the only efficient way to grow, by learning from other people’s experiences.
While there are many other pieces of advice that could be mentioned, this article could be summarized to something like: be curious, master your tools, communicate efficiently, be reliable, help those in need and always grow your skills. People will start respecting you, and the advancement shouldn’t be too far behind.
And remember: titles don’t matter too much, in your early career you should focus on learning new stuff, growing, and developing your core skills.
P.S: Before closing this out, I have to mention that I enjoyed great role models in my early career and that the company I’ve been working for in the last 2 years had a big part in defining the engineer I am today, due to constant growth opportunities and a best-in-class approach on developer productivity. If you’re interested in hearing more or joining us, you can DM me or take a look over currently open positions.
P.P.S: Across the article, I’ve used some hashtags like #StepUp, #OneTeam, etc. These are part of the Hootsuite guiding principles. You can read more about them on the About Hootsuite page.