I was talking with a colleague the other day about how a pre-agreed plan can morph over time so that the final outcome bears almost no relation to the original specification. I tossed into the conversation my opinion that he should think of it as being like a Government election. The truth changes over time, based on requirements. Perhaps it's a bit like an agile development approach to software development. And, by some fortuitous coincidence, we're having a general election here in Britain in a couple of weeks time!
Could it be that software development, especially when undertaken as an agile process, is somewhat akin to the process of Government? When you need to get approval for the project, you can promise almost anything; although ensuring that it bears an uncanny resemblance to the perceived needs of the company and the customers will obviously improve your chance of winning approval. Especially if you can locate some highly selective statistics that prove the need.
Let's face it; this is what prospective candidates and political parties do. We no longer seem to have parties built around a central tenet or a specific vision for society and the country. You often hear people say that the dinosaur statesmen with a firm belief in making the world a better place and working tirelessly for the people have been replaced by career politicians whose main aim is get elected, stay in power as long as possible, and feather their nest to a sufficient extent that occasional after-dinner speeches and personal appearances will keep them in the luxury for their remaining years.
So, step one is to establish focus groups and engage advisors who can tell you what your political beliefs or software design specialties are this week. Step two is to ensure you never exhibit any strong opinions or technical proclivities that may not be in accord with whatever the perceived public opinion or online fad will be next week. Step three is to conceal all deep-rooted beliefs or development shortcomings that may impact your chance of success. Step four is to major on policies or vertical market segments that will generally make no difference at all to the majority of people, or are so vague that they can morph - rather like an agile software development process - to match the ethereal and ever-changing aspirations of the electorate or customer at any point in time.
Of course, there are exceptions to these rules, and we have seen politicians and software houses, both recently and in the not-so-distant past, that offer their own firm vision for the future - irrespective of the headlines in the day's newspapers. Though evidence in the last few years indicates that these usually don't last long. A couple of contentious statements that reveal their innermost belief, political leaning, technical capabilities, or actual level of market penetration are usually enough to have them unceremoniously ejected.
So, working from the premise that you can promise anything at the start, when you need to get the "Go" or when you are trying to garner sufficient votes to become the next incumbent Government, what about some examples of well-designed promises that sound specific and attractive, yet have sufficient wiggle-room that an almost diametrically opposite outcome will still fulfill them:
Pre-election: "We definitely won't raise taxes"
Post election: "National Insurance Levy technically isn't a tax"
Pre-Go approval: "We will provide the ultimate in user guidance for our product"
Post release: "It's so intuitive that, technically, you don't need documentation"
Pre-election: "We will implement small Government"
Post election: "You need a huge number of staff to achieve a major reform like that"
Pre-Go approval: "It will comfortably handle hundreds of users"
Post release: "Yes, but not all at the same time"
Pre-election: "We will implement open Government"
Post election: "Except for the things that we need to keep secret"
Pre-Go approval: "We will implement an open and extensible framework"
Post release: "That only works with our own patented extension technology"
Pre-election: "We will dramatically and aggressively reduce the national debt."
Post election: "Over the next twenty five years"
Pre-Go approval: "We will dramatically and aggressively reduce the release bug count"
Post release: "In the next version"
Pre-election: "We will implement fast broadband Internet connections for all"
Post election: "Obviously this does not include the 15% who live in the countryside"
Pre-Go approval: "We will implement robust algorithms to ensure the consistency of your data"
Post release: "The good news is that only 15% of your data is corrupted"
Pre-election: "We will focus on improving health care for all"
Post election: "Obviously this doesn't apply to people who are already ill"
Pre-Go approval: "We will focus on improving the performance of our application"
Post release: "Obviously this doesn't apply if you have less that 32GB of RAM"
Pre-this post: "I will take the time to make this the best post I've ever written"
Post this post: "There was good stuff on TV"