(Re)discovering Your Calling
The most important decision of your career.
I may have convinced you that designing your career around a certain specialization is a goal worth pursuing.
Some engineers know their calling right away. Lucky you. The rest of us need time to figure it out. And even if you’re not going to switch to a solopreneur career, making a decision like this brings clarity and focus to your professional life. Suddenly, you can quickly decide what’s important and what’s not.
Software engineering is a strange field because software engineers can have very different careers. Many other industries are heavily regulated. Think about law or accounting: the career ladder is pretty straightforward; you need to pass certain certifications; you typically end up in a corporate environment.
Software engineering can look wildly different. Sure, there are a lot of SaaS web product engineers, but there are also engineers who work on game engines. Databases. Linux kernel. Quantitative trading. Robotics.
And even when it comes to a typical SaaS web products, we still have specializations. Back-end vs front-end. Product vs platform. Infrastructure. QA. Engineering leadership.
So, let me get to the point:
Focus on exploring new domains and roles early in your career until you find what you really enjoy.
Because too many people either stick to the same career path (“I’m a Java engineer”) or the same company size (e.g. only working in BigTech, or only working in startups) throughout their life. And some stay miserable all this time.
The Best Way to Try Different Roles
In my opinion, the best way to try different roles and specializations is to join an early startup during a period of rapid growth. I know, easier said than done.
I’ve experienced it several times. In my early twenties, I joined a fintech SaaS company. I started as a front-end engineer, then focused on back-end development, then leaned towards platform development, DevOps and infrastructure. But I also spent a lot of time doing automated QA. I ran Scrum rituals. I planned roadmaps.
I’ve also experienced so many technologies and tech stacks. Here’s what I wrote on December 2013:
Only in a startup can you spend your Monday creating a new module for a single-page app in CoffeeScript, Tuesday refactoring the billing system in Java, Wednesday writing a new endpoint for a RESTful API in Scala, Thursday researching the CSS Flexbox spec, and Friday making changes for an internal Node.js service. This is priceless.
Despite doing all of that, it took another startup for me to discover and fall in love with data platform engineering.
When to Stop
So, when do you know it’s time to stop searching and start going deep?
A lot of it is interest and passion. Is there something that makes you really curious? To the point, it’s hard for you to do anything else in your free time?1 That’s a strong sign.
If you’re going to specialize in something for the rest of your life, you'd better choose something that really interests you.
Another important consideration is whether this specialization is going to be relevant in 10 years. Give it your best educated guess.
I had a friend who believed that Adobe Flash would be the future. At one point, I thought Silverlight would be huge.
Be vigilant about hype trends. Becoming a blockchain developer a few years ago was all the rage. Just saying.
Beware of Betting on a Single Language
Or a single technology. I hope Adobe Flash was a pretty good example.
You could argue this doesn’t apply to programming languages. Well, I don’t necessarily agree. Look at what happened with Scala2. The top 5 languages are likely safe, but I wouldn’t be as certain about everything else.
I still think betting on a domain or industry is a much better long-term strategy because it means you speak in the same language as business executives and leadership: and there is a pretty big chance you’ll be selling your services to them, not engineers. A business may not be interested in a Java developer, but they may be interested in data integration expert. Even though you end up writing a lot of Java. I hope you see the point.
Should You Stop at One Area?
It doesn’t make sense to specialize in several completely different things: it defeats the purpose of specialization. However, specializing at the intersection of a domain and an industry can make a lot of sense. It likely narrows your focus quite a bit, but it can be great at the beginning - it’s better to dominate a small niche market than be nobody in a large one.
Here a few examples:
E-commerce and Machine Learning. Personalization, recommendations, agentic commerce, etc.
Early tech startups and DevOps/Infrastructure. E.g. offering fractional DevOps services for engineering teams who can’t afford full-time infrastructure engineers.
Agriculture and IoT. You’d be surprised by the amount of smart devices in modern farming.
Start Becoming an Expert in Your Current Org
As I mentioned before, choosing a specialization doesn’t mean you need to become a solopreneur. It just makes you a proper T-shaped person. That means some doors will close, but many new ones will open.
So, start investing more in your skills in your current org. There are always some opportunties: a new project, an event to attend, a blog post to write. Network with coworkers who can help you in your journey. Offer help in relevant projects for other teams.
You may be familiar with different Staff engineer archetypes. Most of the Staff engineers primarily act as Tech Leads or Architects, which benefits the organization. However, if you’re on the path to become a specialiast (and potentially sell your services as an indepenent later), The Solver is the archetype to embrace. This is the role that encourages you to go really deep in a certain field, which benefits the organization, but also benefits you equally.
Brendan Gregg comes to mind as a great example of a Solver persona.
I’m not saying you should work 24/7, god no.
Long story short: it peaked in popularity in 2018 - 2019, but it’s been declining ever since.

