Complexity under the surface != Complexity at the surface

“An extraordinarily complex mess.”

That’s what Nina Olson, the national Taxpayer Advocate for the U.S. Internal Revenue Service calls the American tax system. The official book weighs in at about 6,500 pages. Can you imagine? If you think I’m lying, you’re right. It’s actually about 65,000 pages long.

This is why I love TurboTax®. It’s taken these 65,000 pages of documentation and miraculously curated some sort of usable software out of it, for commoners like me. TurboTax® could so easily have just reproduced the Federal and State 1040 Forms digitally, turning each line item into a text field, calculating a few fields here and there, gratis, submitted the form for you via the Information Superhighway and be done with it.

It probably still would have a lot of fans.

Instead, TurboTax® is like a personal tax wizard who understands that no one really wants to hang out with it. “Get your W-2 out and copy the numbers into me.” “Do you own a farm? No?! Then let’s not ever mention it again.” It even knows when it’s asking me esoteric questions, by letting me know that something is very unlikely or uncommon. “This probably doesn’t apply to you.”

TurboTax® has done a heroic job of making tax filing, at least, palatable. I can only imagine what a stinky mess the underlying code must be. Logic not just for federal law, but for each of the fifty states, and for each of the thousands of local counties and beyond. And within those parameters, logic for single and married people, small-business owners, investors, students, philanthropists, first-time home buyers, the unemployed, the just-retired, the forgetful, the poor, the rich, the richer, and — yes, farmers.

Couple that with the annual changes to tax laws — every little rule taken out or put in to account for some earmark in government spending that make up those 65,000 pages of dead trees. If you think you’re angry about a couple extra hundred dollars you owe the government, imagine being a TurboTax® developer writing yet another weird bit of conditional logic for someone who’s just bought an environmentally-friendly motorboat in Mississippi within the last six months.

Is any of that code even worth refactoring? What would you refactor, when the very code you’re writing today might be obselete after the next Congressional recess, or might depend on a totally different set of parameters down the road?

TurboTax® is proof that, even when the task at hand is an extraordinarily complex mess, the software itself doesn’t have to be. You can squeeeze all that complexity underneath the surface, interpret that mess into some reasonably digestable set of usable functions, and create some really helpful, far more simplistic, software.