DEV Community

Cover image for The fallacy of being a ‘jack of all trades, master of none’ developer
Niamh Reed
Niamh Reed

Posted on • Originally published at parkersoftware.com

The fallacy of being a ‘jack of all trades, master of none’ developer

‘Jack of all trades, master of none’ is an idiom that’s becoming pervasive in development. The idea goes that a developer who dabbles in everything cannot be amazing at anything.

In other words, it’s the generalist vs the specialist debate. Should a software programmer generalise or specialise their skills? Should they aim for competency in a variety of languages and tasks? Or, should they focus their attention on mastering one language and a select few tasks?

Unfortunately, such questions are wasted on a fallacy. The jack of all trades, master of none debate is specious. It draws a line between generalising and specialising in development that doesn’t need to exist. In fact, being a jack of all trades developer comes with its own advantages.


Jack of all trades: the generalist developer

A generalist developer — those considered a 'jack of all trades' — are the developers that have their fingers in a wide array of proverbial programming pies. They're comfortable using a wide range of applications and languages. And they're competent at a variety of software development tasks and areas. (Coding the back-end of the software product, to front-end interface development, for example.)

The goal of a generalist developer is to be competent in all phases of the software development lifecycle. That means having the skills to adapt to any needed task or language to take a project all the way, from the drawing board through to deployment.

The idiom ‘jack of all trades, master of none’ suggests a problem with being a generalist developer. It supposes that those capable in many areas of software development cannot be masterful in any of them. So, what’s the alternative?


A master of one: specialist developers

The other side of the debate is the ‘master of one’ developer: the specialist. Specialist developers focus on one language and skillset (or a select few). This means that they become experts in that specific field and language. So, they’re more adept at their focused field than a generalist might be.

A specialist developer has a slightly different career path than a generalist developer. They often slot into one company and rise through the ranks there. (Rather than fitting well enough in many companies.) This is because it’s common for the code and product they specialise in to be company-specific.

As such, it’s sometimes harder for specialist developers to find new positions. As a pay-off, they may find it easier to climb to a high position (and high salary) within a given company.


The fallacy shattered

The ‘jack of all trades, master of none’ fallacy in software development suggests that it’s better to be a specialist. After all, the idiom is predominantly used as an insult.

But the truth is that a jack of all trades developer has plenty of benefits that a specialised developer doesn’t. For instance, they’re more adaptable than their specialised counterparts. As an example, a specialised developer might prefer to use their chosen language and methods for any (and every) task. But a generalised developer can be more fluid. They can choose the language and style that best suits the task at hand.

There are also more job opportunities for the jack of all trades developer. They can fit into most software houses, after all.


A false dichotomy

Here’s the real idiom-breaker: being a jack of all trades doesn’t mean you can’t also specialise. In fact, the second half of the idiom, ‘master of none’ wasn’t even part of the original phrase.

The generalist vs specialist debate is a false dichotomy. The space between the jack and the master is a spectrum, not a chasm.

In other words, you can still delve deeper into a favoured language or area of software development. So, you can be a jack of all trades with specialisation in one, if that suits you. Being well versed in languages and skills as well as having specialised expertise is never going to be a disadvantage.

So, why not strike a balance between the two? Having a generalised foundation gives you the flexibility and adaptability of the jack of all trades. Meanwhile, branching into the intricacies of development that you find most interesting can help you stand out from the crowd.


Forget the fallacy, find the balance

The idea that being a ‘jack of all trades, master of none’ developer is a bad thing is a fallacy. There’s nothing wrong with being a jack of all trades, just as there’s nothing wrong with being a master of one.

The most benefits are gained by those that embrace both ways of thinking. So, don’t worry about choosing one or the other. Find the balance between a generalised and specialised practice that best suits your career goals, and your interests.


Originally posted at https://www.parkersoftware.com/blog/the-fallacy-of-being-a-jack-of-all-trades-master-of-none-developer/ on February 7, 2019

Top comments (2)

Collapse
 
jayehernandez profile image
Jaye Hernandez

There’s also a saying that adds to the original idea: “Jack of all trades, master of none, but oftentimes better than a master of one.”

I do believe that the greatest skill you can learn in tech is being adaptable and versatile, especially with new technology popping up. Specializing in one language may not be worth much if that language becomes obsolete after some time.

Collapse
 
phantas0s profile image
Matthieu Cneude • Edited

A developer doesn't have to be specialized in one "language or skillset" to be a specialist. He can be specialized in software for basically any business domain: specialist in content management, specialist in API for real estates, specialist in website for pizzeria.

The advantages can be great:

  1. He doesn't have to compete with 932394809 developers who are "specialized" in Golang.
  2. He can answer to common problem since he knows very well the business domain.
  3. Businesses might prefer hiring somebody who knows what they are doing / knows their difficulties and knows the solutions.

Now, it's how a developer might sell himself, but it's not necessarily all his skills. Actually, a specialist use way more than his specialty's skills, so he needs to have a wide range of them.

The question is: how to sell yourself, as a developer. That's different than your "real" skillset. To me, a "T-shaped" developer, with a specialty and still a wide range of skill, is the best.