May 18, 2008
Jack of all trades, master of none
Last week I stumbled upon the website of Devine, a new course for “online creatives” that want to “design online media” and “program online media”.
This ensued a little “debate” (these sarcasm denoting quotes are getting annoying, but debating on Twitter is an impossibility) on what companies are looking for: generalists or specialists.
It comes down to this: Do you want one script kid that’s so amazing at Ruby that he could be in the core team, or do you want a mediocre designer/coder who is versed in Javascript, PHP, Flash, Photoshop and Illustrator. A jack of all trades, master of none.
Give me the master any day. A developer shouldn’t have to design and vice versa. I want to work with people who dug deep. People who’ve been there, if you know what I mean. Not people who took two steps in every direction and then safely jumped back to the middle.
I’m not dissing generalists here; crossover is needed, and by all means you should perfectly understand what the other people in your team are doing. However, you need to be the guy in that one thing. Or gal, for that matter. It’s about getting to the point where you’re doing great, not just good enough. That’s a team effort, and if there’s too much generalists around, the end result is mediocrity. For small teams it’s often good to have one generalist running around - someone that can fill gaps here and there and that you can count on for getting things done. Someone that is good (or mediocre if I’m pissed), not great.
The coders that say they can design or vice versa often excel in one field while severely lacking in the other. There are only a few silver birds out there who can do everything, but if you look closely, their skills will always lean to one side or the other. It’s rare to find someone who is both interested in hacking up the queries - and - bothering to deal with the typographic details of a website. Passion and motivation drive skillsets forward. And passion always leans to one side or the other.
While this is true to an extent, I think that it doesn’t completely reflect who we are as human beings. I have known amazing basketball players that were also talented pianists, architects that cook gourmet-level food, etc. Obviously you must have a single focus, but that doesn’t make it impossible to be more than simply ‘mediocre’ at secondary skills.
While it is clearly important to master a specific technology or language, some of the best coders are valuable precisely because they know the common elements that run across languages; the principles of application design that aren’t tied to a particular platform.
When I write a PHP program, the knowledge of bits, optimization and micromanagement from C (and knowledge of the c stdlib which forms a large part of php’s core), the rigid OO structure of Java, and the structure and syntax of the shell which PHP sits upon all combine to make me a more effective coder. In fact, I would go as far to say that you cannot consider yourself a ‘PHP Development expert’ unless you are also very skilled in the technologies and languages that make PHP what it is.
In today’s changing environment where frameworks, languages, and technologies can come in go in a matter of 2-4 years, it is increasingly important to maintin a varied secondary skillset along with your primary ‘axe’.
Food for thought.
November 29th, 2008 at 9:46 ∞[...] matige ontwerper en een matige designer wordt in plaats van een van de twee goed te doen (zie ook Jack of all Trades, Master of None). Maar kom: we zoeken een uitdaging. Het lijkt me op dit punt niet zo zinnig voor mezelf om het [...]
February 8th, 2009 at 4:42 ∞