Let’s Just Build A Generic System!

Common technical conversation: “Well, why don’t we just make a generic system, and then we’ll tweak it to work with every specific implementation as we roll it out?”

There follows a long conversation from any good project manager that runs roughly like this:

a) In order to avoid having to completely rework much of the innards of a “generic” system, you need to know all the ways in which the specific systems could be exceptional.

b) In almost every case, if you knew the data in (a), there would be no reason to build a “generic” system, because you could simply start building the specific systems.

c) No, customer, your case is not an exception to (b).

d) OK, happy to do it your way. Please sign this spec, and pay attention to the bit that states that change requests void deadline commitments and will be charged extra at a higher than standard rate.

Most “simple projects,” at least in the tech world, tend to be complex projects that have not been subject to sufficient scrutiny to have their complexities identified.

Emphasis mine. Via Will Obamacare’s Exchanges Be Ready on Time? – The Daily Beast.

20 Rules of Software Consulting

Ask Not What’s Possible: the question is not what you can do, the question is how much the client is willing to pay for it and how long they will wait.

Time Substitutes for Money on a Logarithmic Scale: e.g cutting the time by 20% will require doubling the budget. Cutting the budget by 30% will quadruple the amount of time.

All Estimates are Optimistic: new application development will take three times as long as you expect, and cost twice as much. Or vice-versa.

(Emphasis in original.) Via Database Soup: 20 Rules of Software Consulting.