The problem ❗️
Finding what exactly to specialize in your career is something a lot of people struggle with. People, who have been in the field for some years, tend to feel more anxious about this since the competitiveness increases as you compete with other people with expertise or some specialty in a field. I used to think like that, as I considered myself a generalist. I am not saying generalists are not helpful; they are, but having expertise as you mature in your career is essential if you want to be employable at all times.
Technology is evolving daily, and more fields and specific positions are popping up constantly. It can be overwhelming when you don't know what to focus on exactly. Recently I found what I want to do and specialize in, and I was thinking I could write some techniques that can be useful to people who are having a hard time finding their own path.
Explore and exploit 🧭
When you join the software industry, you quickly realize how big the umbrella of underlying fields is. You may have some feeling about what you might like, let's say, "back-end" development over "front-end," but when you explore the "back-end" field, you then realize again that there are multiple specific fields underneath that you could specialize.
There is an effective way to manage this conundrum, and it is known as the explore/exploit trade-off. In the beginning, there should be some exploration in the field that might be interesting. Try to read some blogs, watch a video, talk to people in this area of work, or even better, get a task or do a small project related to this field. If the activities around this subject seem attractive, you continue to explore, explore, explore.
The 20/80 technique (aka Pareto Principle) is similar to this and is a known learning technique many people use. If, however, the activities seem like a struggle and low interest, then you should exploit, take a step back and pick another field or subject. Finding an area that you enjoy and matches you is like traversing through a binary tree where the values of nodes are your essence of liking a subject (what a geek example).
Reviewing is an essential tool for finding solutions and improving in any subject. It's vital to spend some time thinking about what you are exploring, how it makes you feel, and if you are heading in the right direction. It's easy to get stuck and lose track of the overall picture. People have positions for years where they compromise and eventually find out that there are more exciting areas to work. Delaying reviewing will make things worse, and it can end up in situations where going back to exploring may be late.
One good practice to follow when exploring and exploiting, as we mentioned in the previous subject, is to ask some questions to yourself that can help you understand if the field suits you or not.
- Does it make you lose track of time? (do you get to the "zone" quickly)
- Does it come naturally to you?
- Does it feel like fun, where it feels like work to others?
You can also have weekly reviews where you try to find data throughout the week that will help you have a feeling of what you like or not. Was it the presentation you gave to your squad? Or was it the marketing team meeting where you discussed competitors? Or maybe the bug that you resolved in the deployment pipeline? Reflecting on your actions and feelings ensures you are making progress and directing through the right path.
Play to your advantage 💪
Learning to play a game where the odds are in your favor is critical for maintaining motivation and feeling successful. People tend to enjoy things that they are good at. You feel more energized when you are making progress while others fail because you will be rewarded with better pay and bigger opportunities. When you find yourself good at something that others struggle with, maybe this is an excellent opportunity to explore more. If you are good at analyzing data and graphs and coming up with results comes naturally to you, possibly being a data analyst is the path for you. If talking to people, going through meetings, and exchanging ideas is something you enjoy, then maybe being a manager is the role for you (I know the manager position is vague, but you get the point). If, on the other hand, you enjoy creating stuff with code, then maybe heading towards an engineering role and aiming for a senior or principal role is the path for you.
The secret of maximizing your odds of success is to choose the right field of competition — James Clear
If you can't find a role where the odds are stacked in your favor, create one. Kent Beck, the creator of Junit & Test Driven Development practice, is a great engineer. He is amazing at sharing knowledge, as he wrote multiple books and did a lot of workshops around Extreme Programming practices. Kent joined Facebook, where he tutored, mentored, and coached engineers; this was his role. There was no position open for that on Facebook, but Kent knew what he was good at and created the game that favored him because he knew few people could compete in this area.
Good luck 🍀
Specialization is inevitable if you want to progress in your career. The more you master a specific skill, the harder it becomes for others to compete with you. Even if you are not the most naturally gifted, you can often win by being the best in a narrow category. Once you realize your strengths, you can spend your time and energy on a specific field. These techniques helped me understand where I want to focus and what my next move is career-wise, and I hope it will help you.