When to bet on a software technology

July 7, 2008 at 8:24 am (Career)

If you choose the path of a software developer, your career will consist of a long series of bets on technologies.  More specifically, bets on which software technologies are going to be important six-to-eighteen months from now.    Early in your career, your bets will consist of choosing where to spend your professional development time learning prospective technologies.  Later, your bets will include requests to be placed on “strategic” projects, trying out technologies in small settings before green-lighting their deployment cross-enterprise.  At senior level, you’ll bet by recommending for or against technologies.  Those are the big bets.  If your career is going well, you should be expecting to make one or another of these bets no less than six times per year.

If you bet right, the career benefits are swift and clear, as you get to be the “go-to guy” on the hot new technologies.  Make a run of bad bets, and you could easily find your career stalling, the projects you get are less and less interesting and important.

(Of course, you can choose to avoid all of this chaos, and not make any bets.  In that case, you can skip the professional development time, and only pick up technologies as you are requested to do so.  If this appeals to you, you might consider an exciting career in HVAC or long-haul trucking.  Software development will only hold tears for you.)

Now if I knew any hard-and-fast rules for betting on technologies, I’d be retired on long green earned as a VC, rather than coding in the trenches.  Nevertheless, here’s a few rules of thumb I’ve painfully acquired over the years, that might help if you are looking to become that “go-to guy”.

Bet on any software technology…

  • that offers a 10x improvement in speed/cost/quality for a common activity.  10x is about where people actually get excited about moving to a new technology.  10x improvements also generate a lot of work, as supporting and connecting systems can be profitably extended to optimize for the new capabilities.
  • that opens up new business models.  This is a big one, and why anyone serious about software should be looking into technologies like Amazon EC2 and Google AppEngine.
  • that allows software to be deployed on previously unavailable platforms
  • that connects promiscuously and multifariously with third-party software
  • that increases the clarity and maintainability of shipped code
  • that allows for better management and monitoring of software components
  • that allows interesting new properties of software to be automatically checked.
  • that allows new functionality to be shipped as component libraries.  For all that they feel like crusty old technology, libraries are just about the only workable form of software reuse we know.
  • that increases the returns to software development skill.  An old example would be refactoring IDEs: they make skilled developers more productive, and don’t help unskilled developers much at all.

Next post will be on when to bet against a software technology.  Feel free to add any rules you know of in the comments.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: