I am a software engineer who geeks on learning, using a scientific approach to solve problems, and optimizing my performance. During my work as a software engineer, I changed my career vector several times and even considered changing the field altogether. I feel like I’ve gained some insights into this topic, which may be useful for others as well. In this article, I will share a few recommendations that helped me navigate career changes, both big and small.
When I first started out as a Python Developer, I was thrilled by the endless possibilities of coding with Python and Django in web development. I dabbled in JavaScript and Vue/React for some frontend pieces and felt constantly challenged and excited by the new things I was learning. But as time went on, I started to feel like I was stuck in a rut. The technologies I was working with no longer seemed as exciting and the tasks I was tackling felt repetitive and unchallenging. I found myself having to dig deeper into the nitty-gritty details of documentation to learn something new in my primary area of expertise, and it no longer had a strong impact on the code I wrote.
At the time, I found myself grappling with a lot of questions: "Should I stick with Python? Is backend development still the right path for me? Should I even continue in software engineering?"
The desire to shake things up was strong, but I was also filled with doubt about what my next move should be. I know I'm not alone in feeling this way, and it can be overwhelming and frustrating. But at the same time, I truly believe that this can be a fantastic opportunity for growth.
As I looked at my career trajectory, I realized that instead of becoming a Senior Python Developer, I had a few other options to consider. These included:
First, I wanted to understand if I wanted to remain in the field at all, so I asked myself some ground questions.
These questions closely reminded me of the Ikigai circle, which promotes thinking that the perfect career falls at the intersection between activities “I love”, “I am paid for”, “I can”, and “the world needs”.
So I asked myself “Is programming something I'm good at, something I love, something the world needs, and something I'll get paid well for”?
For me, the answer was a resounding "YES!" It felt like the perfect match for me, so the idea of changing my field was out of the question. But I know not everyone feels the same way. I've seen people who got into the tech industry for money and stability because being a developer is definitely something one can get paid well for, and that is in high demand. Still, they're just not that interested in it and find themselves feeling bored with their work. Being a software engineer may seem like a great opportunity, but it's not for everyone. And, while you can learn to be good at something, it's harder to learn to love it.
Making a career change can be a big decision, but there are options to make the transition smoother. You can:
The first option is an amazing option if it’s available! Making the transition while still keeping part of your old responsibilities is a smooth process. Let's say you want to switch to Marketing, and your company has a thriving marketing department. They already know you, and they may allow you to gradually make the switch or even split your time between development and marketing.
This option is ideal because it often comes with no or little pay cut, and you gain valuable experience as you learn on the job. At some point, I found myself interested in Product Management, so I tried to take over some responsibilities of the role. Everyone in the company was happy with it, but I eventually decided not to go that route. Nonetheless, because of that experience, I feel like I have a good foundation to find the next job as a Product Manager.
The option to get experience and knowledge during your spare time can be a smart move, especially if your dream job is in a totally different field from your current one. You earn your regular paycheque while gaining new skills and knowledge, all at your own pace.
Plus, if things don't work out the way you hoped, you can remain at your current job. And there are also so many options available to start something by dedicating only a few hours per day. You can find books on the topic, sign up for the course/bootcamp, and eventually start doing a pet project in the new field.
All of that can take no more than 10-20 hours per week and can give you enough knowledge and experience to find a new job. The downside? It takes more time to switch, which you need to spend at the job you're not too thrilled about. Also, it can be challenging to keep learning after a long day at work. When you do get a new job, you are likely to face a pay cut as, unfortunately, the experience you get with the toy project/self-education/bootcamps is typically not considered “work” experience.
The last option is to go full in. To quit and put all of one’s attention on learning and trying to get a new position. If you have a good safety net or the loss of income for a few months is not problematic to you, going full in is an amazing option, as you make the transition as quick as possible. Also, you will definitely have enough time to learn, and let's not forget the added motivation of finding a new job because, well, you don’t have another option now :)
And while big transitions are really scary and definitely not pain-free, getting into something that one is truly passionate about is 100% worth it. I think you easily tell the difference in well-being between somebody you know who likes what they do for 8 hours per day and who hates it.
But let’s return to a few other options that I still needed to figure out.
As I gain more experience, I can't help but notice the abundance of managerial tasks that come with it. But here's the thing, just because you're a fantastic software engineer doesn't mean you'll automatically excel in the role of a tech lead, project manager, client-facing representative, or negotiator. I've seen it happen time and time again, where great engineers transition into management and lose touch with what they truly excel at - coding. As for me, I was not quite sure. The idea of managing people and helping them develop does sound exciting. But I needed to give it a test drive before I would make a decision. I decided to keep the opportunity on the table and wait for the right time to exercise it.
There's a whole world of possibilities within a company beyond just writing code. From interviewing and leading tech talks to mentoring, organizing conferences, and even dabbling in product or project management — the options are endless. If you're eager to take the initiative, you can easily fill up half your day with these exciting activities.
Personally, I've found that every time I branch out and try something new, my mood improves and I feel like there's always something interesting to learn and do. That's why I decided to start dedicating 1-2 hours a day to non-coding activities and taking initiative to keep things fresh and exciting. And while some people find it intimidating to ask for non-coding activities, there are plenty of initiatives or tasks that your manager would encourage you to do.
So it’s a clear win-win situation. You make it more interesting for yourself plus you do what is needed for the company. While coding is great and all, who wants to do it 40 hours a week for years on end? So I decided to put this tool into my toolbelt.
There were a lot of shiny sub-fields out there: Frontend, Data Science, Data Engineering, DevOps, Mobile Development, Game Development — you name it. I wanted to understand whether I would like myself more in another specialization.
To do that, I would ask people who work in the relevant sub-fields and try out some experience myself. I would stress the former. Often, a lot of doubts can be cleared out if you find 2-5 people who work with the new shiny thing you want to work with and ask them what they like about it and don’t. You can ask your friends/colleagues to introduce you to somebody or reach out to 50 people on LinkedIn that resemble your path (live in the same city, have similar years of experience, and come from the same cultural background) and ask those who accept your request a few questions.
A lot of people are really nice out there and will gladly help you and share their experiences. Like, I didn’t think much, for example, that for doing a lot of Machine Learning, you typically need to wait hours for your model to train.
I like asking the following questions
- what do you like the most about what you do?
- are there any things that you do not find exciting but you must do anyway?
- what is the ideal position in your field for you and how realistic is it to get there?
- how was your experience the last time you changed your job?
After exploring some of the technologies myself and asking other people, I realized that Backend is still something that I like doing as it has one of the shortest feedback loops I know in development. When I have a task, I am typically able to break it down to a micro-task, which takes me 5-20 minutes to code, and then I can typically test it in a matter of 1 minute. It makes the experience very pleasant and almost game-like.
The next option to consider was to continue developing primarily as a Python Backend developer, but also add more technologies on the side and gain solid experience in them. The typical combination would be to get more Frontend. A lot of times, I see that Fullstack developers are rather T-shape developers with their main expertise being a Frontend or Backend. Then, I could still continue doing what I already know and like, and get some experience on the side. I liked the option, and I feel that, in general, it is a step toward becoming a software engineer if it is desired.
For me, the definition of a software engineer is someone who uses the right tool to fix a problem business problem end to end. Basically, a one-man band that will set up the project, gather data, do the development, style it, deploy it, etc. While it is almost impossible to be excellent at multiple things while doing it in this style, such people have a good overall image and a wide concept range to choose from.
This option seemed really tempting to me as it would allow me to use a wide toolbelt of technologies, always learn something new and most importantly, feel great from being able to solve all tasks end to end.
I was a Python Developer. I decided to start by becoming a T-shape developer by adding Frontend to my stack and ended up becoming a Software Engineer while keeping a preference for Backend. I also decided to take on more side activities and to be open to a managerial position.
To Summarize
Ask yourself if software engineering is still something you love, are good at, and can get paid well for, and if the world needs it to understand whether you should stay in the field or switch it.
If you are to switch the field completely, then you have the following options:
If you are to make a more subtle change, do the following
Good luck, and I hope that you experience a very smooth and exciting transition!