Introduction
It is not easy for everyone to decide which carrier path would be the best for you as a developer, some of the developers know since their childhood in which field they would like to learn and others have an interest in almost everything. On the other hand it is not always up to you in which direction your carrier is going, sometimes your carrier is just driven by the opportunities which are coming. There are lot of different directions to improve yourself: different fields, programming languages, industries and roles. After some years of professional experience you will see for sure which is your direction: choosing one field, one language, one industry and one role and learning everything about that and being a specialist of the topic or working in multiple fields with multiple programming languages in multiple industries and changing between different roles, having a good overview of everything, but not really being a specialist in any of them. Both of them are quite typical and of course it’s not always binary, sometimes you are just half way between being a specialist and being a generalist, yes, life is complicated. But both situations have its own pros and cons, I tried to collect them.
Being a specialist
You count as a specialist if you have on really specific field and you are deep into that topic, but about other topics you don’t really have a knowledge.
Pros
- A lot of big companies are searching for these people
- You can reach a very good salary in that specific field
- If you are finding a position with that in that field then you have very good chances
- You are much better than most of the people in your field
- If there are good freelancer tasks in your field, then you can earn a lot of money as a freelancer
- You only need to be up to date in one topic
Cons
- It can be difficult to find a position very really your specialisation is needed
- Sometimes the specialisation is really company dependent
- If your used technology is getting obsolete, you need to start something new from scratch (like most of the Delphi programmers)
- As a freelancer the scope of tasks you can overtake is quite limited
- You are in trouble if you are getting a task where you used use an other technology
Typical work opportunities
- Senior software developer especially at big companies
- Freelancer with a specification
- Research projects at university or at a company or institute
Being a generalist
Pros
- You have a good wide-range overview on the topics happening in the tech world
- You can learn new technologies fast
- You are very flexible if you need a new job
- You are facing with any tasks you will find a solution
- At first round job interviews you can do a good discussion about a lot of topics
- You will find always new challenges
- As a freelancer you can overtake almost everything
Cons
- You need to follow the news regarding a lot of different languages and technologies
- There is not special field where you are the best
- However it is easy to find a new position, it is difficult to show that you are the best candidate
- Most of the cases you can not have such a good salary
- It is difficult to reach the next step of your carrier if you are changing your fields too often.
Typical work opportunities
- Start-ups/Small companies
- Consultancy companies
- Freelancer
- Start own business
Summary
As you can see both of them have advantages and disadvantages. I’m personally rather a generalist, maybe that’s why I could fine more pros there. I still think that to optimum is somewhere in the middle. For example a lot of companies are searching for people with “T-shaped” knowledge. Which means you are a generalist, but you are a bit deeper in one topic.
So I think it is always up to the person which sounds better. But I’m pretty sure that most of you have some experience in this topic. Feel free to share it as a comment!