In the face of ballooning system requirements or the need to future proof your code, you may be tempted to add another layer of indirection. All problems in computer science can be solved this way, right? Not so fast. Overly-complex designs can be difficult to comprehend and maintain, and when they go wrong, they can go really wrong. A wonderful new podcast from Tim Harford highlights the risks--particularly for safety systems like nuclear power plants--of layering on complexity without enough thought. It’s a delightful romp from the 2017 Academy Awards to a 1638 post mortem by Galileo.
All problems in computer science can be solved by another level of indirection
But that usually will create another problem