When to bet against a software technology

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

No matter how cool it may seem, bet against any software technology…

  • whose only selling point is a 2-4x improvement in speed/cost/quality of a common activity.  2-4x sounds great, but it’s surprisingly not enough to get people to jump.  At current rates of progress, many will figure that they can safely skip over a 3x improvement this year in favor of a probable 10x improvement a couple years down the road
  • that locks you to any particular vendor, with the (admittedly unfortunate) exception of Microsoft.
  • that makes it more difficult to trace errors in software.
  • that requires a greater than $10000US up-front investment by a business to try it out on a live sample project.  These can work, but only at the cost of a lot of career-dulling meetings.
  • that requires valuable business data to be hosted external to the organization.  Because at the end of the day, men with long titles and fancy suits will simply say no.
  • that enhances the power of the Operations group at the expense of Development or Marketing.  There are very few wins to be gained with technologies that favor cost centers over profit centers.
  • makes it harder to reason about the performance characteristics of software (I’m looking at you, AOP).
  • that can only be configured via a graphical user interface
  • that can only be configured using a small, application-specific, visual programming language (bet heavily against these).
  • that claims to decrease the amount of skill necessary to develop software.  These rarely work, and then only in small, discrete niches.  If you manage to find one that works, all you’ve bought yourself is a low-skilled job in a small niche
  • whose only selling point is that it decreases the number of keystrokes required to develop software.  There is at present no keystroke shortage, so optimizing based on keystrokes doesn’t buy you much.  Too often tool vendors aim for clarity and maintainability and only achieve tersesness.
  • which claims to make software development a branch of applied mathematics.  These can actually work, and be really quite beautiful, without being any sort of win.  Good software developers require moderately rare talents and long and expensive training.  Good applied mathematicians require extremely rare talents and even longer and more expensive training.  Do the math: don’t do the math.

Feel free to list your own rules in the comments

Permalink Leave a Comment

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.

Permalink Leave a Comment