‘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