🐇CodeRabbit (Sponsor)
Elevate your code with CodeRabbit an AI-powered code reviewer for faster merges & better code. CodeRabbit offers intelligent suggestions, clear explanations, and automated fixes. Seamless integration, automated PR summaries, custom rules, linters, and security checks. Trusted by 2,000+ organizations & free for OSS projects. Try CodeRabbit free today at coderabbit.ai!
Becoming a software engineer is a journey in and of itself, but once you become an engineer a whole new journey begins. The reason for this is that there are many paths you can take during this career. While this can be daunting, it’s a good problem to have — having options is always a good thing.
Generally speaking, I feel there’s a few different routes you can go:
Remaining an individual contributor (IC)
Transitioning to management
Going solo
Remaining an IC
Chances are, starting out, you will be an individual contributor. You’ll start with smaller, isolated, well-defined tasks to get your footing on your team and learn the essentials of software development in the real world. As you take on projects and deliver high-quality work your teammates and your manager will begin trusting you and your abilities more and more.
This gained trust might result in you taking on additional responsibilities and receiving less oversight. In effect, people will feel continuously more confident that you can own specific tasks and deliver them on time at the expected quality. At this point, you’re most likely ready for promotion to a mid-level engineer. Once you’re promoted you get to do it all over again — acclimate to your new level, figure out the gaps you need to fill and the projects that will fill them to get you to the next level, and then begin doing the work. Generally speaking, this is the path of an IC. You can do this in perpetuity until one of the following occurs:
You’ve decided you’re no longer interested in going to the next level
You don't have the skills (or opportunities) to get to the next level
Your company does not have quota/headcount/budget/etc. to promote further
Regardless of your choice, in broad strokes, this is the life of an IC. You own work of increasing size, scope, and responsibility as you climb the ladder. The higher you go, the higher the expectations become and the more limited the right opportunities are to continue getting promoted. This is why I believe that most people agree that as you get higher in level the more you need “luck” or multiple things to come together for your promotion. As an IC you’ll spend most of your days writing code, reading and writing design documents, and perhaps a handful of meetings depending on your company and team.
Management
As a quick disclaimer, I’ve never been a manager formally for full-time engineers; however, I have had experience managing interns and projects that I was responsible for ensuring were delivered. Therefore, in this section, I will discuss management as I’ve seen it in my career thus far at the companies I’ve worked at.
After a handful of years as an IC, depending on the company, you might have the opportunity to transition into management. To me, management seems rather different from being an individual contributor. As a manager, you’re now in charge of other engineers, knowing and reporting the status of their projects, and helping them develop in their career (among many other things). Because of this, much of your day will shift from silent thinking and isolated coding to meetings and discussions.
To keep up to date with your reports you’ll likely have one-on-ones weekly or at some regular cadence and potentially lead other meetings such as general team meetings and sprint ceremonies. You’ll also set expectations for each of your reports and their deliverables on something like a quarterly basis. You’ll work with other teams and higher-ups to help determine the roadmap for your team and your OKRs (Objectives and Key Results).
You’ll also write performance reviews for your reports each year as well as write and potentially defend their promotion packets when they’re ready for a promotion attempt. I strongly believe that management is not for everyone. Being a good IC does not necessarily translate to being a good manager and vice versa. As a manager, you succeed when your team and reports succeed. I feel that this must be one of the most rewarding parts of being a manager — you’re actively developing your team and helping others navigate their career and reach the goals they’re interested in.
Going Solo
The final choice I feel we all have as engineers is going off on our own and building something. To me, that’s truly the beauty of software engineering: we possess generic skills to build anything and everything. Because of this and the prevalence of tech in society today, we have a huge amount of flexibility in our careers. We can work in virtually any sector, on any product, and from anywhere in some cases. As enticing as that may be, sometimes the most attractive option is to build our own idea into existence. While I’ll never tell you what to do, here are some things I’ve considered myself before going solo:
Build on the side — while it’s tough, it’s definitely “safest” to build your idea outside of your work hours before you no longer have them. It might make for some long nights and early mornings, but it will give you a taste of what going solo could look like. If you’re disciplined enough you can make serious progress. I’ve managed to build multiple products and audiences on different platforms all while maintaining my 9-5.
Save up a nest egg — life is unpredictable, you never know what’ll happen. Because of this, I strongly suggest stashing money away for a rainy day. If you do go solo, this fund will help you live and weather any unexpected expenses while you build and hopefully ramp up your income. While I know it’s hard, I try to have six months of expenses at the ready just in case. Save as much as you’re able to because remember, it’s your runway to build your idea!
Fear set — to this day, doing a “fear setting” exercise as described by Tim Ferris has been one of the most eye-opening and clarifying experiences I’ve had about the idea of working for myself. If you take anything from this article I strongly recommend that it be running through this exercise yourself about whatever it might be that’s currently keeping you up at night. This exercise helped me clearly understand what the “big risks” are that I’m so terribly afraid of and perhaps more importantly the risks that I incur by simply not pursuing the things I desperately desire.
There are countless other aspects and avenues to going solo and working for yourself, but I feel it’s best to write about them once I’ve made the leap myself.
The best thing about whatever route you choose for your career path is that they’re all two-way streets. You can start as an individual contributor and move to management. If it’s not for you, you can always return to IC. Similarly, as an engineer you have lucrative skills that I believe will be in demand for the foreseeable future — if you decide to go solo and build something on your own you can always return to the corporate world if things don’t work out.
Drop a like ❤️ and comment below if you made it to the end of the article.