How often do I hear people asking "specialist or generalist? which one is better" like it's some kind of decision we can make overnight? While it is important to have a plan, it is far more important to choose the one that is right for you.
How do you find what's right for you? It totally depends on what you like. I will go through a breakdown of each one of them.
This is where you go “all in” into a certain niche that you really enjoy. That can be UI, databases, automation, even language specific and pretty much everything. The main characteristic of specialists is that they can go really deep into their field which makes them to be considered as experts.
Being a specialist comes with quite a few advantages. If your aim is to be a freelancer or a contractor, then this is the direction you need to follow. That also comes with better money as companies usually pay more for specialised roles.
I have seen many specialists on social media being the gurus of the topic they are talking about. That is because they have earned the trust of their followers and their opinions are really taken seriously.
Specialists usually have an "expiry date". (whoa I didn't mean to offend anyone! please let me explain myself first!).
If for example someone is an expert on React and in a few years from now React disappears, then it is going to be tough for this person to move on. I have seen that a lot with developers coming from older programming languages.
Companies prefer generalists as they say "they can do the work a specialist does". Even though companies that operate like that are a red flag whether you are a generalist or a specialist, sadly there are a lot of them out there.
I have seen specialists using latest tech at a very early stage because it looks very cool according to this guy on Twitter. I know that library x looked very promising when it was in version 0.1 when we installed it 2 years ago but that was also the time of the last commit.
If you like technology and you care about seeing the picture then probably that direction is for you. Generalists are the developers who have a wide range of knowledge and have an opinion on many fields. They can create an API which reads data from a Database, make the UI that reads from it and renders them and finally put them into a Docker container and ship them to production. For that reason it is more common to find them in permanent positions such as team leads, principal engineers, heads of engineering etc
Generalists deal with several technologies here and there which makes it common for them to know how to work with a few different languages. That makes it easy for them to find new jobs or even jump to different fields and not worry about the moment React is no longer cool. At the same time having a wide variety of stuff to deal with makes the job a lot less boring as the languages / tech can be totally different from one job to another.
Generalists are usually the ones that connect all the different pieces of software together in order to make entire applications work. That makes them really important members of a team as they basically are the experts of how the system work as a whole.
The first one I can talk about is that because of the lack of specialisation, money is not as good as the ones of specialists. Like mentioned earlier, companies pay more for specialised knowledge. That can be a downer for many people who chose to go to that direction.
Becoming a generalist is quite demotivating to start with as there's tons of stuff to study. Shipping systems requires knowledge on many different fields and topics which means that continuous learning is an absolute requirement for that role (I personally think of that as a positive point but can be quite complex for beginners).
In many cases generalists can appear not to have big depth of knowledge which can be a dealbreaker in interviews. They are sometimes characterised as "jack of all trades, master of none" which does not sound like the best way to describe yourself.
Again being either of these 2 is neither a bad nor a good thing. It is totally dependent on the path you want to follow. I have worked with some really successful people that have switched over from one to the other. A really interesting term I have heard is "jack of all trades, master of few".
Thankfully in the majority of the companies with structured engineering teams both of them exist. Even better, they really like each other. So many times I have heard one saying "thankfully we have x who is a generalist / specialist and deals with the stuff I do not want to deal with" 😂