by Leon Rosenshein

Big Bang Theory

tdd

Big Bang TheoryIn the beginning was the command line (actually it was switches, buttons, and wire wrap). There was no "software industry" and everyone did everything themselves, or at least for in-house customers, and the pace of change was low. After all, that's how things were always done. In business, changes on the factory floor were expensive and there was lots of planning. Software was treated the same way.

As software became less bespoke we moved into the era of box products. Come up with an idea. Think about what it would look like. Build it. Put it in a box and send it to resellers. Never think about it again. Repeat every 2 years or so. Between 1980 and the mid 2000's that's how software was done. Updates were hard to impossible to deliver, and lots of (most?) people wouldn't bother to get them anyway.

And the way software was developed followed the same cycle. The big bang approach. Think about it for a while. Make plans. Execute on them. Slip the schedule to fix the problems that weren't understood. Release. Start again.

Things have slowly shifted over the last decade or so. We deliver, especially to internal customers and on the web, a lot more often. Like every day. Or multiple times a day. One might say continuously. Which leads me to test driven development.

Or at least automated unit and integration tests. One of the reasons for the long cycle time in days of yore was the need for extensive, manual testing. The only way to be sure something was right was to build it then throw it over the wall for testing, look at the bug reports, fix them, and repeat. That took time. Because every test cycle tested everything.

Now it is important to test everything, and to test it together, at least at some point. But you don't always need to test everything. The better you can do at identifying the tests that need to be run for a given change the fewer tests you need to run. Fewer tests means less time. Automated tests mean less time. Less time for testing means shorter cycle times. Short cycle times means more releases. More releases means move value over time.

So yes, it's really impressive if you can do a big reveal of the be-all, end-all on day one. But it's not the best way to make your customers happy.