DEV Community

Cover image for Software Specialist or Jack of All Trades?
Dave Sev
Dave Sev

Posted on

Software Specialist or Jack of All Trades?

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

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

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

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.

Top comments (3)

Collapse
 
rounakcodes profile image
rounakcodes • Edited

Master one using a focused initial investment of time and then keeping in touch by browsing the updates (new patterns of solving a problem using that technology).
For the rest, have enough high level understanding of different patterns/solutions to be able to work through anything that may come up. The solution need not be as clean as the one provided by a specialist but good enough to comply with the most basic acceptable practices/patterns common across many different technologies. Build your learning muscles by working on diverse things in order to understand the core principles of any new technology faster.

Collapse
 
dracount profile image
Dave Sev

Yes you definitely need to make sure you are intentional and deliberate in your approach and you have hit the nail on the head!

Collapse
 
lakincoder profile image
Lakin Mohapatra

As a team lead, i find this post very helpful. Thank you for sharing.