Worse Is Better—For Better or for Worse
More than two decades ago, Richard P. Gabriel proposed the idea that “Worse Is Better” to explain why some things that are designed to be pure and perfect are eclipsed by solutions that are compromised and imperfect. This is not simply an observation that things should be better but are not, or that flawed and ill-considered solutions sometimes win out over those created with intention. Rather, many solutions that are narrow and incomplete work out better than those seen as comprehensive and complete. Whether programming languages, operating systems, or development practices, we find many examples in software development, some more provocative and surprising than others—Unix, Linux, C, COM, the web, the Wiki, incremental development, and TDD, to name but a few. The Worse Is Better philosophy pre-dates and anticipates agile development, but some of its finer points are still overlooked by agile and fragile projects everywhere. As Kevlin Henney revisits the original premise and question, he shares examples that can teach us new and surprising things.