Strong opinions, weakly held

The opportunity cost of a broad skillset

Tim Bray laments the feeling of productivity you get when you work with tool set that you’re intimately familiar with. He talks about constantly experimenting with the next great thing as part of his job, specifically the downside:

But it means that I’ve been sort of a perpetual newbie. There’s another big piece of the software experience, one I haven’t shared in for years: where you’re concentrating on some problem and you know the codebase and tools, so your time goes more into doing and less into learning. In fact, that kind of work, in particular maintaining a large running production system, is where most of my professional colleagues spend most of their years of service.

That captures what I always liked least when I worked as a consultant. Moving from one project to the next, often on a different technology stack, meant never really feeling comfortable with what you’re working on.

On the other hand, working on maintaining a large, established system is often frustrating in its own way. You’re saddled with a code base that’s tough to change, with libraries that are often out of date, and with processes that aren’t cutting edge.

I have a friend who has worked at the same small company for nearly 10 years, and they seem to rarely update anything that currently works. I describe his skill set as being trapped in amber. He is a complete master of the way Java applications were built ten years ago, but the industry has changed a lot in that time, and he’s missed out on benefitting from those changes because the company he works for is hidebound.

Keeping an existing application up to date is difficult. I’d love to see some statistics on how many applications that were built in Rails 1 have been upgraded to Rails 2 or Rails 3.

In the end, this is one of the toughest parts of a software development career to manage. Walking the line between having the sorts of deep skills that enable you to be spectacularly productive and having a wide skill set that enables you to contribute in more situations is tough. Personally, I’ve always envied developers who are hyper-specialized. I know a guy who’s an expert on C compilers and always has a job with whatever company is trying to push gcc forward. If nothing else, he doesn’t have to sit around wondering whether he’s making a big mistake by not picking up Scala.


  1. Bruce Partington

    August 6, 2011 at 12:11 pm

    There’s a parallel here with cross-disciplinary skills that might be useful to explore. For example, there are some people who are exceptions to the idea (for which there are many examples) that (visual) designers can’t program and vice versa.

    For a polymath the cost is the personal time investment necessary to develop skill in creative disciplines that hardly overlap — graphic/information design, music, and programming, for example. On a certain fundamental level they may inform each other (and one’s own work habits and communication skills derived therefrom form a common foundation for one’s employability) but learning the specifics (eg, cognition theory, psychoacoustics, iOS) that lead to mastery will take extra time (and make your resume, if all is included, inscrutable for many employers).

  2. I’m dealing with something like this now, which is that for the entirety of my career, I’ve dealt with some of the best database technology available. I recall giggling at MySQL DBAs who considered a million records to be huge in the days of LAMP which are really not much more than 5 years ago. Nothing new until BigTable made me think that I would ever see a threat from OpenSource until two years ago when Hadoop started making news and Cloudera started seeding big data ideas. Even so, and more than 5 years ago I saw how few corporate IT departments were really ready for clustering and the kind of bursty demand that could go beyond your expectations.

    Today the advantage lies with webscale applications and the DevOps movement. Small groups of developers and DBAs are now handling volumes that most Enterprise architects cannot even imagine, much less manage. I’m on a nine month project that ultimately scales to 500 users if I’m lucky, but that’s just another nine months down the drain. So now I have to learn (which?) NewSQL database and hope my customer base wises up to clouds / open source while the salesforces of enterprise software sales FUD indefinitely. It’s tough to make the leap.

Leave a Reply

Your email address will not be published.


© 2019 rc3.org

Theme by Anders NorenUp ↑