In my earlier post I called software development the dream factory.
Unfortunately the very things that make software the stuff of dreams can also create nightmares.
World without rules
Once you’ve started to write some software, you are setting up rules for your new world.
Those rules define what you can or can do. Once they are defined, it’s often very hard to change them.
There lies the problem. Software is so unbounded by rules that inevitably people make the wrong decisions and are then locked into those decisions.
Once you have created your world you have to live in it. You must live with all the decisions you’ve made.
Looking into the future
I recall when bitshifting was a clever optimisation. I was there when winforms was the best way to build desktop applications. I saw service locator go from being a best practice to a worst practice, replaced by IoC containers.
Right now, if you wanted to build a SPA, which javascript framework would you choose? How many of the current favourites will still be in use and being maintained just 2 years from now?
Imbalance
Imagine for a moment if a software project were building a bridge over a canyon (I know it’s an overused example). Some of the things that might be completely impossible in the real world are easy, but things that easy in the real world might be close to impossible, depending entirely on the decisions made earlier. For example, it might easy to move the bridge 200m down the canyon, but impossible to add a new coat of paint.
This is terribly confusing for consumers of the software as the rules aren’t consistent. In the last ‘bridge’ they requisitioned, moving the bridge was hard but painting was easy, why is it so hard this time?
Welcome to the nightmare factory
1 On the bright side, not all dreams turn to nightmares ↩