20 years ago, my last stint as a coder-for-hire was for government, and it was an eye-opener. My partner and I were billing between $20k and $30k a month, because that's what they were accustomed to paying. (This was 20 years ago, when coders in the private sector made between $40K and $80K a year.)
I felt like a thief. Oh, I cashed the checks, but I was always a little uncomfortable with it.
We worked on that project for three years. By the time we ultimately turned the software over to them and their in-house programmer, we'd charged them about $1.5 million. 99% of that was take-home profit for just two guys. (If only I'd been buying musical instruments with that money...but I didn't. I bought a boat, new cars, a new house, property overseas, furniture and jewelry. And paid a bundle to Uncle Sam in taxes.)
Then my conscience was allayed when we found out that another consultancy had written a nearly-identical application for another government agency. They'd taken 5 years, billed $5 million, and the program still didn't work. I started looking around and found many similar examples. This was around the time that the new Denver airport was unable to open because of software issues with the baggage-handling system. Millions paid out, nothing usable in return. Boondoggles like that were rampant. At least, I told myself,
our software worked.
But I completely understood why those expensive, failed projects were the norm. They were managed by elected officials and lifetime bureaucrats unqualified to be project managers. There was no motivation to be frugal (forget what you read in the papers, government is not broke and never will be). Requirements changed daily. Sometimes major portions of the program had to be rewritten due to new legislation. More often, department heads just changed their minds about how it should work. Imagine building a house while a committee of untrained architects changed the specs every morning, where they might decide it needed to face east, not south,
after the foundation was poured.
The most important part of the process was meetings. Lots of meetings, and make sure everybody's there, whether they need to be or not. We're billing $90 an hour to attend a meeting, but they don't care. Every crazy idea they throw out adds another month of development time, but they don't want to hear that. I try to explain why a bad idea is a bad idea, but get blank stares back. I try to explain why the program calculates dollar amounts in millicents, and get lectured by an accountant that there's no such thing as a millicent. Feel their ire when I explain why you can't just type in anything you want into any field of a data-entry form. Why they have to tell me in advance what they want on a report,
before I design it for them. Ultimately giving in to their demands and letting them completely circumvent data integrity and security measures, and then spending another month cleaning up their dirty data.
Government is by nature inefficient. No government entity has ever managed a project to completion without going over-budget and taking longer than promised. Nobody is ever held accountable. Companies that contract with government, no matter how diligent, end up working the same way. You start thinking of your invoices as a stupidity-tax. Most significant, you stop worrying about software quality and craftsmanship, maintainability and long-term stability. In the end you get kludged-up, fragile spaghetti code that'll continue working for a year if you're lucky.
Now, not all government-sponsored software is bad. There are mission-critical applications that absolutely cannot fail, like missile-guidance systems. Many of those projects are spectacularly well-designed and meticulously constructed. But we're talking the big-leagues here, the $100 million and up category. You want it to work, you can have that but you'll pay seriously big bucks for it. But those do not comprise the majority of government projects. Most of them are in the penny-ante range, such as the famous $50 million Obamacare website. They should have let NASA design it - it would have been $500 million but it would have worked flawlessly.
Whew. I really didn't wake up this morning thinking "I need a good rant to start my day". But it pisses me off.