Programmers will readily tell you that “Windows sucks” or “Linux sucks” or “POSIX sucks” why this or that software is badly designed, bloated, slow, buggy, un-needed, ugly, and generally disgusting. But, Windows is actually an immensely useful and sophisticated program with astounding capabilities – Linux is too. POSIX is a comprehensive solution to many difficult problems. These programs and APIs are widely used because they http://busingers.ca/tag/spring-concert/feed solve real problems. Large, complex, “high capability” software is never as simple and clean as it seems like it should be to programmers, but I think that’s because the Le Corbusier fallacy is so hard to resist. It is possible, with some effort and skill, to write a prototype Operating System or Data-base or web browser that is fast, lean, clean, and beautifully structured. But the demands of the applications will conflict with the clean etc. design and force all sorts of changes. The Le Corbusier fallacy is the belief that the aesthetics of the architect trump the sloppy requirements of the mere users. In actual architecture, this belief results in unlivable high rise slums , but in programming we get either failed projects or “prototypes” that don’t actually serve any purpose. Programmers are too ready to dismiss working code that actually does something useful because they are entranced with imagined clean, pure, designs. I’m certainly not arguing against designing software or in favor of sloppy design, far from it. Software design must be motivated by external considerations – the utility of the software, not by some internal idea of what is “clean”.

The telecommunications stack we have been building and starting to deliver to customers is an unbelievably complex software structure that is capable of incredible feats. Imagine a Windows application, using .Net and SQLServer that maintains customer data, a SuSe Linux based Oracle SS7 application, a fault tolerance and remote maintenance scheme running on Carrier Grade Linux, and large number of pedal-to-the-metal RTLinux POSIX threads maintaining VOIP connections – all on a single multicore multiprocessor connected by shared memory with TCP/IP running over it. This system is not something that can be easily captured in some whiteboard drawing of boxes. It’s a city, not a housing project.

The Embedded Enterprise, Pruit-Igoe, Ayn-Rand, the telecommunications stack and why software does not suck