Good point.
Zawinski didn’t do many unit tests. They “sound great in principle. Given a leisurely development pace, that’s certainly the way to go. But when you’re looking at, ‘We’ve got to go from zero to done in six weeks,’ well, I can’t do that unless I cut something out. And what I’m going to cut out is the stuff that’s not absolutely critical. And unit tests are not critical. If there’s no unit test the customer isn’t going to complain about that.”


Brilliant post! These days people seem very bent up over development patterns and modular programming–agreed, these are incredibly important things that are helping brilliant minds architect massive, world changing appliances–but for most of us, they’re a big waste of time. I’ve met plenty of programmers who wanted to do things from their academic programming high horse, to the letter, who only ended up obfuscating the code and making it impossible to maintain. WHAT IS THAT?! A HARD CODED BUSINESS RULE?! We need to re-engineer this into a more ductile framework just in case the rules change!
The end result is that for every programming project, they create a theoretically sound system designed to be able to handle curveballs without breaking a sweat, turning every single programming project into a framework. Abstraction on top of abstraction on top of abstraction. Ironically, they’re building said framework on top of a system that is designed to easily implement any business logic and allow a developer to change the rules when needed–A PROGRAMMING LANGUAGE!
This offered a bit of balance:
http://blog.objectmentor.com/articles/2009/09/24/the-duct-tape-programmer