This article first appeared on theworkinggeek.com on May 10, 2009.
Friday's posting about balancing the value of learning speciﬁc technologies and following technologies
you enjoy got Jeffrey Thalhammer thinking about depth vs. breadth of knowledge.
Whenever my colleagues and I discuss our career plans and the job market, someone always asks me
whether to learn programming language X, or operating system Y, or framework Z. But I like to point out
that time spent learning some new skill is also time not spent honing the skills you already have. And in
my opinion, it is both more lucrative and more enjoyable to be a master of one craft, than to be mediocre
at several of them.
This is because I've noticed that those who are the best in their chosen ﬁelds are always fully employed
and highly compensated. Especially during an economic downturn, employers become more selective
about who they hire. So when they go looking for a candidate with a particular set of skills, they want to
choose the person who is strongest with those skills -- not the person who has the most different skills.
And employers are usually willing to pay a premium for top-notch talent, if they can ﬁnd it.
I've been on the hiring side of the interview table enough times to know this. When a job candidate shows
me they have mastered one technology, it also demonstrates to me that they have the potential to master
others. But having partial expertise in many technologies may only prove that they own a lot of O'Reilly
books. Truly mastering any technology requires a great deal of patience and dedication, and those traits
are far more valuable to the team than being able to write code in 16 different languages.
Having said all that, I do acknowledge there is a real tradeoff between the depth and breadth of one's
technical skills. Not all job candidates are created equal, and it just isn't possible for everyone to be the
"best" in something. I'm sure there is a sweet spot where you can optimize your employability, and this
doesn't mean that you should completely ignore other technologies. The industry is constantly evolving so
you must stay up-to-date, and learning a little bit about other technologies can give you a fantastic new
perspective on the those you already know well. And of course, this all assumes that you actually enjoy
the technologies you're working with. If you don't enjoy them, then by all means, go learn some new
But if you do enjoy the technologies you work with, then I urge you to consider mastering those
technologies before going off to learn some new bag-of-tricks. To be sure, the road to mastery is long and
difﬁcult. It is fraught with frustration and can be boring at times. But it is also challenging, exciting, and
deeply rewarding. In the end, I believe it will lead you to a much happier and more prosperous career.
I'd rather be the ﬁrst-pick candidate for just one position than the second-pick for several.
Jeff Thalhammer has been specializing in Perl software development for over 10 years. He is the senior
engineer and chief janitor at Imaginative Software Systems, a small software consultancy based in San
Francisco. Jeff is also the creator of Perl-Critic, the leading static analysis tool for Perl.