I interviewed a guy who worked for a government contractor. His company was a billing company. They billed for services provided by other companies. The service they provided was billing. But, if the billing required prorating an amount, they outsourced that task. They would send redacted data to a third company that would prorate the amount and bill accordingly. So this guy's company provided full fiscal year billing only. Another company provided the actual service. And still another company provided billing for partial years.
I remember being stunned. I'm a liberal guy. I know that the government provides services I need. There are potholes to fill and shipments to search and food to make safe. Those are important things. But there is a vastness, a complexity to the U.S. federal government that is plainly fearsome. No wonder dollars get lost when it takes three or more companies to handle a single financial transaction.
We might reasonably ask a few questions. How much do the people pay for services and how much do we pay to administer those services? Why is billing so onerous that it requires this kind of specialization? Should we limit the amount of specialization in the system?
Maybe that's counter-intuitive, but I think there's something generally unhealthy about a system where entities handle such a small, focused job. The result is that people aren't handling services as much as records. These folks are billing, but they don't really know what they're billing for. They're just sending out pieces of paper with a number on it.
The same thing happens when you call customer service. You have to decide which department to talk to, and sometimes you'll hear something like "I can't answer that question, let me transfer you". Those folks are specialized to handle a particular problem. No one person knows the system front to back. And God help you if your Tivo won't talk to your cable box. Which of those two giant companies is going to stand up and help you sort that out?
Consider the Mars Climate Orbiter that burned up on entering the Martian atmosphere. One company wrote the lander software using metric units, and another wrote the mission control software using non-SI units. The result was catastrophic. By comparison, the software for the Lunar Excursion Module on Apollo 11, written 40 years earlier, was incredibly flexible and resilient. It wasn't written by a conglomerate of corporations, but by a few individuals, who could see and understand things end-to-end.
I know I'm comparing apples to oranges here. The world is complex and we can't go back. But it is possible to limit our exposure to this layered complexity. In software design, we should be encouraging engineers to work in verticals, understanding a feature from UI to persistence layer. To have that engineer own the feature from design to deployment. And it would be nice if customer service meant servicing customers, instead of answering a specific kind of question.
Imagine if doctors had to handle a patient from entrance to exit, fill out the forms, bill the insurance. I know we would need more doctors if this was the case. But I guarantee there would be less paperwork.