Friday’s posting about balancing the value of learning specific 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 fields 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 find 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 skills.

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 difficult. 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 first-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.