March 12, 2010

The Healthcare Diff

On November 7, 2009 the House narrowly passed its health care bill. On December 24th the Senate passed their own version. Today several months later a "reconciliation" between the two is in progress, the final version is expected "soon".

It is a wonder of the modern age that you can pull up the full text of either bill with a single click. Each is a relatively small file, much smaller than a YouTube video. Here is the 1990 page House bill or the 2074 page Senate bill.

Of course having access to the text is one thing, understanding it is another matter. Aside from the flowery and confusing prose in general certain passages stand out as particularly opaque. Consider this gem on page 876 of the Senate bill:

The reason this is hard to read is that it doesn't stand alone. It is a change to existing legislation, in this case the Social Security Act. You need to look up the passage is question and manually apply the changes.

A software person immediately recognizes this as a "diff". A diff in software is a "difference report", a listing of differences between two versions of a program. Programmers live and breathe diffs, they are both routine and essential.

The style of diffs in these bills manages to be both verbose and cryptic. It is a surgical description of the exact change with zero context. Compare this with a software-style diff of the same change:

Here we plainly see two lines are going away and are being replaced by 4 new ones. This already is much clearer than the bill. Clearer still is a graphical diff which shows the changes side-by-side:

Click above image to enlarge.

Even if the bills replaced their cryptic diffs with beautiful graphical ones, there would still be a big problem. The changes represented by these bills are completely untested.

Programmers "branch" when making big changes. They create two whole copies of the software. Changes can be applied to the branch without harming the main version. If the branch proves to be successful, after extensive testing, the branched version can be "rolled back" into the main version.

Or consider Google. Google handles hundreds of millions of searches every day. But not everyone is treated equally. With every search there is a small probability you will be part of an experiment. Google runs hundreds of experiments simultaneously. Some are minor variations like a different font or color, while some are major and return completely different search results.

Google never bugs you with a survey for feedback, they simply collect data about what results you click on or the timing and pattern of your follow-on queries. The results of the experiments are used to improve the service, which generates every more people to use in future experiments.

Our approach to legislation is that we don't branch and we don't experiment. We fight and argue and cook up a giant legislation-bomb where half the people think it will work and half think it will be a complete disaster, then we just try it out.

Instead of arguing over the one true solution on the basis of hunches and intuition, we should implement more than one approach. Pick the best 2 or best 5 solutions and try them all. We have 307M people in this country, they could be generating and enormous stream of empirical data about what works and what doesn't. Statisticians could be poring over patient satisfaction surveys, hospital expense reports, bankruptcy rates. Find out what settings on the knobs actually solve the problem instead of just winging it.

The early internet developers shunned hammering out agreements in detail, instead they valued "rough consensus and running code". Ship early, iterate often.


  1. Good points - but that's (in large part) what the bill does. It's an amalgamation of ideas, some of which will probably work well and grow in influence, and some of which probably won't work out so hot. The bill provides for, among other things, a formal framework for side-by-side comparisons of insurance through state-based exchanges, dozens of cost-control pilot programs, and more rigorous data collection and analysis to determine the utility of various medical approaches.

  2. The 50 states are our experimental labs. Alternate approaches have been applied in other countries. Much of what's in the bill is to measure things.

  3. Great post!

    Just yesterday I wondered what would happen if the US was run like Google. I was thinking we need leaders that demand data. But I wasn't clear on how to collect it. Your idea of picking multiple solutions and trying them all is great. We already have that--different states have different laws, etc, but your notion of setting up experiments is the missing link, because in setting up such evaluation frameworks you get better at collecting more informative data and it gets you to answer more questions. After this is done, the message would have to be not to elect leaders who make decisions "straight from the gut."

    Speaking of which, and just for kicks:

    This would mean a lot of our current politicians would be put "out of business" so this kind of change would of course be met with resistance.

  4. Ha! looks like anon1 beat me to the idea. Your point is still valid for the reasons I specify, mainly setting up better a better framework for data collection.

  5. In the aggregate the mechanism you describe can certainly explore more solutions than the current system. But consider what would happen if your life was permanently screwed up by the fact that certain laws from a branch apply to you that don't apply to the majority of people still on the trunk. Would you consider that situation fair? I am not saying it is or is not. I am only saying one ought to think seriously about that possibility.

  6. What about when experiments go horribly wrong? Its one thing to apply this logic to user interface or software design, and another entirely to apply it to people's lives...

  7. I think its preferably for the people to be designing and running their own experiments on their own lives. They have the information. They have an absolute interest in the outcome. And they don't see themselves as people to be taken advantage or sacrificed for some other dubious purpose.

    None of those things is true of Congress. The have very little concern, less information and even less integrity.

    But lets cross our fingers. Maybe the whores in DC will get it just perfect through some miracle.

  8. @Jheriko We cannot not make experiments on the fear that they might fail. We are going to have experiments go wrong and this is the only way to find what will work. What we must not do, at all costs, is run this experiment for 307M Americans because if it fails it will be a catastrophe.

    Very nice point of view. I wish it was implemented :)

  9. As someone else mentioned, the 50 states should be 50 different test environments. There is not supposed to be a single monolithic health care system for all 307m people, nor should there be a single standard for schools, speed limits, etc.

    People are smart - if Massachusetts implements a health system that works, other states would adopt and improve upon it. One of the problems with the current health insurance system is a Federal law prohibiting insurance purchases across state lines.

    Your other point about diffs is great. how awesome would it be if legislation just contained a graphical diff of the changes.

  10. Philip

    you actualy need to undersand the legalities and years of custom and practice. This is the problems with techies that have zero political experance or knowledge and blidly try to apply the hammer that they know (in your case coding) to a complex real world problem

    the bill is a series of motions that need to be passed - i sugest you read Citrine and Robberts as well as the standing orders of the house and senate before making badly thought out comments like this

  11. Actually the Healthcare bill is a huge A/B testing experiment. The govt is going to try many different things across different states and will pick the best.

    A similar A/B test was done in 1903 when Agriculture was going down the drain and one tests (of genetically modified crop) became successful and here we are.

    For more Info read this article by Gawande.

  12. Can anyone prove congress, the legal system, or any body politic is Turing complete?

    I have my doubts as usually the results are run through a random noise hash before output.

  13. In response to Peppone (March 13, 2010 2:25 PM) "This is the problems with techies that have zero political experance or knowledge and blidly try to apply the hammer that they know (in your case coding) to a complex real world problem":

    This is the problems with those who are so focused on there own experance or field (in your case politics) that they are completely closed off to new ideas, or ideas that work in other fields that could be applied to another. To continue to blidly hammer away at a complex real world problem over the past two decades without result and not consider new ideas may not be prudent if you are among those without healthcare, or are about to lose it. Obviously, Peppone, you have healthcare...(through your parents?).