Recently I did a keynote presentation at DDDx in London. You can watch it here if you want. https://skillsmatter.com/skillscasts/8082-stop-over-engineering
Throughout the talk I am putting forward the idea that many scenarios should just not be handled in software but should instead be pushed up to a business process level. This can often remove much of the complication in software. In other words let the humans do the work manually on the truely complex things and handle the 99% of relatively simple cases to start. Obviously there is more to it than this but feel free to watch the talk.
A few people today were watching the talk at their lunch break and having discussions. They came back to me with an interesting and quite good question.
What about legal requirements?
We can still do similar things even when dealing with legal requirements. To illustrate my point I will take the most byzantine complex legal scenario that I know. The US tax code.
The Code has grown so long that it has become challenging even to figure out how
long it is. A search of the Code conducted in the course of preparing this report turned
up 3.7 million words.
A 2001 study published by the Joint Committee on Taxation
put the number of words in the Code at that time at 1,395,000.7
A 2005 report by a tax
research organization put the number of words at 2.1 million, and notably, found that
the number of words in the Code has more than tripled since 1975.8
If we were building software to say make filings or to audit filings we can still do so without supporting every possible legal requirement. As I said in the talk there are a few things to look at here.
The first in terms of analysis is instead of talking about everything that can happen in the tax code we should discuss “how do I know that we are still in a happy case”. A very simple analysis will show you that a huge portion of returns use only a few rules. Earned Income Credit, mortgage deduction, dependents, and maybe declaring a trivial amount of interest on bank accounts. From looking this number is > 60% of all returns received. I don’t have exact data on % of returns varying rules are used on but the vast majority of rules are only used on a tiny % of returns (<1%).
We also need to remember that our computer system is part of larger business process. We may automate away 99% of the work on these returns leaving 1% to be dealt with in other ways (humans). To be fair in terms of tax returns you probably want to automate away 99.5%-99.9%. The last .5-.1% of the actual returns is where the real complexity it. Don't do it, just leave it to the humans. We should be focusing on "How do I know this is something I know how to do vs something I should give to a human" not focusing on "what are all the edge conditions and complexity?"
The tax code is also a really good example of why you would not want to automate away that last .5-.1%. It changes ALOT. There is roughly one change per day made to the US tax code. Imagine trying to keep your software up to date! The basic rules that most use change rarely.