Software Specialist or Jack of All Trades?
Tags: career, watercooler, job, advice
Published: 2021-05-24 11:28:35

I have come across this type of most more often than I can remember, and it usually goes something along these lines:

>I am a front end developer by trade. Should I try to move into more full stack development, or deepen my skills in front end so I can be really good at that but not able to make full sites because I can't do backend?

It's an important question, and I am glad that developers are thinking about this. You might even be well into your career, but have suddenly begun wondering whether you’ve made the right choice. The saying goes ‘Jack of all trades, master of none’. The idea goes that a developer who dabbles in everything cannot be amazing at anything.

This post will try to put forward a few ideas with regards to this subject - _particularly with respect to career decisions_ which we will get into at the end...

*In case you're interested...*

*If you are looking for guidance in career development, I help senior IT developers create their dream jobs through self discovery, career planning and how to make the best out of your job. Contact me if you would like to discuss further.*

Lets dive in.
 
## The Main Idea
This post is really a story about two types of people, lets illustrate with a musical analogy: A masterful violinist, the other - a one man band: a guitar in his hands, a harmonica in his mouth and a drum set on his back. Who do you want to be?

![Capture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cj4zxon1zjwpwkxkhb9i.PNG) 

# The Jack of all Trades
The truth is, that you can't know everything. There are only so many hours in a day, and there are so many technologies that it is just impossible to be an **expert** at them all, but you can be **reasonably** comfortable in a wide range of applications and languages. 

The generalist is able to adapt and adjust to the problem at hand far easier than a specialist can. They are able to select the best tool or language for the job, instead of hacking around trying to fit a square into a circle. 

Additionally, they are not limited in what job opportunities are available. They could apply for a backend developer position or a frontend position.

![Capture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n70p9g93l3qmo2qbg6dj.PNG)

# The Specialist
On the other extremes is the specialist, who spends all their time focusing on one technology stack that they know inside and out. If there is something that can be done with it, they know how to do it. They don't have to rely on others to get the job done, and they are the ones that people come to when they have a problem.

The thing is, when you have a problem, who are you going to look to - the generalist or the specialist? The answer is obviously the specialist.

# The Right Skills at the Right Time
The answer to this riddle is that... it depends.

When starting out in a new career, you don't know what's out there. You don't know what you will enjoy and what you would rather stay away from. You don't know all the moving parts. And this is important.

Having a generalist approach is kind of like having Waze to guide you on your journey. You can see how long you have to go, if there are any major roadblocks ahead and where the closest gas station is.

On the other hand, if there is a problem to solve, who do would you look for? A specialist, not a generalist. When you start getting to a senior level, you expect an expert level of competence. If you approach a senior developer you expect them to be able to solve the problems in their technology stack by themselves. 

![Capture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/09mvt99v5gtwm0lnfuco.JPG)

# Career Implications
Like so many things in life, _it really pays to know where you you are going_. 

What's clear is that early on in your career, having a good idea of "the whole" is very valuable. It helps in understanding what you enjoy, the different moving parts of a project, what's coming next and where you are going.

If your goal is to go into a managerial role or even a C-suite role, where an overview of the whole is important, a generalist approach may be right for you - although it may also require other skills you will need to master such as people skills and leadership qualities. This too is a **specialist** role, rather than a generalist role. You are a specialist in the whole process, you can solve very specific problems. It might not be in one specific technology but may be in a process or abilities, and companies will pay for that.

If you are looking at a technical role, then being a generalist may not work in your favor. You will be competing against experts in the field, and if you have spread your time and energies over numerous areas rather than the one area , you will need to look for roles that require that set of skills and you will be competing against others for those positions.

# Conclusion
When you get further on in your career its important to be a **problem solver**. People pay and hire you to take care of a pain they have, and at senior level roles and high levels of experience, the people who are paying expect results - and a senior level of experience is expected to be able to see the problem through.

Down the line, when you start applying for high salaried positions, companies are spending a lot of money on this role to solve a particular problem. They have an itch and they want it scratched, and they are ready to spend hundreds of thousands of dollars to solve this problem for them. This is what you should be aiming for in your career progression.

*In case you're interested...*

*If you are looking for guidance in career development, I help senior IT developers create their dream jobs through self discovery, career planning and how to make the best out of your job. Contact me if you would like to discuss further.*