My take on problems with versioning

When it comes to creating a new version of anything there are always 2 competing desires:

  1. Fix all the broken stuff with the old version and add enough new stuff to make buying the new version worth-while
  2. Make sure the new version doesn't break old stuff

These are both important things and depending on what exactly you're shipping they have varying degrees of importance.  For example #2 is very important for electronics (nobody likes a TV that needs a new electrical plug, or won't work with their brand new surround sound system) and for Operating Systems.  The problem occurs because adding new features often requires breaking old stuff.  The trick is to find that right balance between adding and breaking.  Sometimes the new feature is so cool that it justifies breaking old stuff (CD's versus cassette tapes), other times the consumer just won't accept change (how long has the US been trying to convert to the metric system? I know how many meters in a kilometer, but not how many feet in a mile.  Too bad I still think of a meter as almos the same as a yard!).  Sometimes the breaking changes are intentional: I hope that my new 42” plasma TV is bigger than my 14” TV it's replacing.  Other times they are just side-effects: Have you ever bought a new couch with more padding, only to find that it won't fit through your front door?  In order to try and avoid there unintended breaks we try and determine all the possible ways that the new features might break old stuff and wieght that with what the likelyihood is of somebody actually hitting that.  However much sampling and surveying you might do eventually somebody has to make a judgement call.  The best companies are those that are able to appropriately minimize #2 and maximize #1 fromt he customer perspective.  What's often my sticking point is that I love C#.  There's a lot of cool stuff about C#, and on my own time it is by far my primary developement language, but I am not my own target customer.  I know way too much C++.  I never even think twice about debugging into things that I shouldn't.  Because of that I have to constantly remind myself that even though I think a new feature is perfect, doesn't mean my customer will.

Anyway, that's just my 2 cents, may you find it worth your reading.

--Grant