When I started in software development, I needed guidance on what to expect over the years and what I could do to supercharge my growth.
I want this piece to be helpful to those early in their career, something I would have found helpful. It's all based on my experiences so far, so it won't apply to everybody (or maybe anybody), but we can only try.
Contents
What can your career look like?
The benefits of optimising
How to accelerate as a junior
Things to avoid
What can your career look like?
Software careers are surprisingly expansive. Many disciplines are needed to build successful software, especially at scale.
The most straightforward path is to remain a software engineer. Usually, the roles in order of seniority (least to most) look something like this:
Intern / Apprentice -> Junior -> Mid / Engineer -> Senior -> Tech lead / Staff -> Principal
There are other avenues, however, particularly once you get to a senior role. You'll occasionally see people spin off in different directions once they surpass senior, such as team lead (management), product owner, delivery coach, platform engineer, or even startup founder.

The opportunities are great. As you grow, you’ll become more exposed to these roles and hopefully even get a taste of what they do, which can help you decide which direction to trial/head in.
Of course, you could do the classic move of retiring from software and owning an alpaca farm instead. Seriously.
The benefits of optimising
Optimising your career isn't for everyone - some people don't care and are happy to bob down the river at the pace of the flow, which is perfectly fine. Others don’t want to put in the effort, which is fair enough. They want to just be software engineers and enjoy the ride.
There's usually a level people will get to naturally and stagnate/cruise at if they don't look to improve/optimise what they do for their career. Some will also actively choose to stay at a level, as they don't want the responsibilities or requirements of the next level. For example, some people like to stay at a Senior Engineer level, as going higher often means less code writing or more ‘management’ of others.
Trying to optimise your career is hard work with only a potential payoff. In reality, most people don't consider that worthwhile - or don't know how to do it.
The benefits of optimising for your career, then, are:
Compared to most peers, you’ll improve at an accelerated rate, both in terms of technical and soft skills.
Your impact in your role will increase.
Thus, your chances of promotion will also increase.
You build a reputation as somebody who is up and coming and gets stuff done.
Your network of valuable people expands.
Your reputation in your network improves, opening future doors.
People's trust in you and your skills increases, opening future doors too.
You'll be exposed to different business parts, expanding your context and learning opportunities in areas beyond engineering.
This will give you even more leverage to have a broader impact.
Again, this will open doors for your future. You might find you want to become a product owner.
How to accelerate as a junior
TL;DR: Get your hands dirty early, optimise to ship as much to production as possible and as frequently as possible, write 'career documentation', and regularly reflect on it all. Don't shy away from the hard work.
The best way to accelerate is to get stuck in and challenge yourself. We learn most when doing the hard things. Get involved in any way possible - ask to join design/planning meetings and be the first to volunteer for anything people avoid. It's easy to avoid the hard stuff; call yourself out on it.
Don't be shy about admitting you're experiencing difficulties. Try to solve a problem yourself, including searching for solutions online, and then ask for help. If you ask for help and tell them upfront what you've tried and what precisely you're having issues with, you'll get better results from your peers. Your peers are a fountain of knowledge, with every individual being great at different things. Look to learn from them!
Just don’t go to your peers empty-handed. Put in some work beforehand, or you’ll end up with the reputation of being lazy and not doing anything yourself.
If you can, ask to pair with your seniors, especially when stuck. They can guide you when you get stuck, so pay attention. You'll pick up many tricks, including some of their working methods. This will speed you up in both learning and building.
Have regular one-to-ones, and make them effective. Set up one-to-ones with the team seniors you aspire to be like the most and listen to their advice. Tell them what you want to do, and ask for their help. Build a strong relationship with your manager, too. They're a peer (and boss), but they're a great connection, too, as they significantly impact your promotions and usually have a great network to tap into.
Have carved out 'personal development' time in your calendar (assuming the company is happy for you to!), and stick to it. Focus on learning and soaking it up. Take notes, too! In your one-to-ones, try to discover what's best for you to learn about. Do courses, read books/articles, write tools, explore codebases, write learning projects, experiment with paradigms, and do anything that makes you learn.
Write 'documentation for your career'. Like, seriously, do this. If you do one thing in this list, this is the one. The suggested documentation significantly enhances performance reviews/promotions. I can attest to that; it’s always come in strong at yearly reviews.
Things to avoid
I generally advise you to avoid nothing, but there are things to be sceptical of! There's nuance in everything, so be analytical of these things.
Holy/absolute truths - Nothing is black and white; life has no definitives except death. Whenever somebody says 'this is the only way', be wary and look for nuance/context. All of what I've said here is the same. You need to take it with a grain of salt and come to understand what and why. The person telling you these absolutes may not know the answer, but dig into it with questions anyway.
Gossiping - Look, casual gossip with friends is often fun, but be careful in the workplace. You can easily land in deep water here, upset somebody by accident, and it can backfire. It's also an easy way to lead to accidental exclusions of people, and that's not nice.
Being a 'yes man' - I've been advising you to take lots on here, but you also need to know when to push back. If you're reading this, you don't want to be a code monkey; I know that much. Part of being more than a code monkey is knowing when to say no, when to ask questions, and when to shut up and do the work.
Working in a 'silo' - don't get caught in the idea that because you're an 'engineer' you only care about engineering. Silos lead to 'us vs them', break down relationships, and stifle creativity. Having a diverse set of people to learn from will broaden your perspective and your understanding.
In Summary
Optimising for your career is hard, but it can pay off. At worst, it'll make you a better engineer, and at best, it can lead you to a more fruitful lifestyle.
Do more, get stuck in. Learn from those around you, understand the direction you want to go and build strong relationships and a good network. Avoid the hard truths, avoid getting stuck in a silo, and avoid upsetting others.
Personally, trying to optimise my career has made it more engaging and fulfilling day-to-day.

