sunnuntai 27. joulukuuta 2015

How goverment software contracts work


If you have followed the news you already may have a good idea how goverment procurement of software works - from outside. Some company is contracted to do the work for X amount in Y months. Invariably after X and Y have been spent they have nothing useful, so in the end it will take at least 4X and 4Y to get somewhat working solution.

Why is this? Well, I have no inside knowledge from either side of that process but still I can offer an educated guess of the process, rougly based on what I wrote about difficulty of writing a specification on previous post.

To recap previous post, writing a good software specification is extremely hard task.

I speak primarily of government contracts here because they happen to be most visible, but the same applies to any large software procurement. Only when the deal is between two large corporations the ugly figures are easier to hide.

Software requested by governments aren't typically exactly simple, as typically they need to handle huge amount of information with many users at peak (office) hours, and then there are privacy aspects (like health care), massive amount of distributed data and so on.

So, when government requests some software, the specification supplied with RFQ is very likely written by someone who isn't experienced enough to write specification at first place, possibly then edited by some committee of complete ignorants who focus on polishing political details and very likely will take out every single technical detail there happened to be. So by the time this ... specification arrives in hands of companies that should offer quotes the project is already ruined - the specification describing the software is nothing more than empty words that in very crudely describe approximately what is needed.

An engineer worth his pay will look at such specification, try to work around issues and general lack of details, taking guesses and so on, estimating certain workload and providing quote of Z.

The houses that almost always get these contracts do not do that, ever. They take the specification, see the problems - and completely ignore them, perfectly knowing and even relying on the fact that by doing that the end result will be completely useless. Then they provide a quote of about Z/3. And they get the contract. Government contracts often have to (by law) to always go for the cheapest offering (there is actually a very good reason for this, but that is off topic so no more of that here.)

The code monkeys employed by this company (I am very tempted of naming a certain Finnish company here as an example but will not do so) are at this point absolutely forbidden to work around any of issues in the specification unless it completely prevents something required by the specification from working. They are to provide what the spec called for - absolutely nothing more, absolutely nothing less.

So the end result of course is something completely useless. Yet they fulfilled the contract by supplying what was asked for, to the letter, so they get their Z/3 money, despite the fact that the end result is so very clearly useless.

Company then immediately provide quote of, say, another Z/3 to fix immediately apparent issues (which are of course very explicitly listed) over certain time period. So unless customer is willing to see spent amount as sunk cost and moving on (hint: most people never will, not at this point, and government people are about the least willing to abandon wrecked project), they have no choice but to agree on this.

After fixes the software is still almost completely useless, so this step is repeated a few times over, each time with very explicit list of fixes. When the software finally is mostly usable, the total cost has easily been something in range of 3Z or 4Z, and time spent likewise. But this is all right, since they won the contract, fair and square. Yet government ended up paying way more and spending way more time than with the other company that, in retrospect, did made better offer. But no, lowest price up front always wins, although everyone knows that this will happen.

Again, like I already said, this is mostly an educated guess on what's going on, but I'd be surprised if I'm wildly off at any point. And if I'm right, there is pretty strong smell of incompetence and borderline fraud at this kind of process.

Me? I take pride of trying my best to deliver what customer wants instead of what he asked for (no government jobs so far though). Up front my cost might be somewhat higher, but my costs (as quote explicitly says) always include some tweaking and at minimum initial support. I do lose some deals because of this but that's okay, I still value happy customer who got exactly what he (or she) wanted over customer who got something almost useful for half or quarter the price - and ended paying way more later on.


Ei kommentteja:

Lähetä kommentti