Cyril Ogana - 2014-06-11 20:33:14
There is a documentary I really like, called 'Engineering Connections' which tends to show that great designs came from picking the good bits and pieces of already existing designs to overcome engineering challenges.
I like this "TDD still makes sense in some cases, like for instance implementing standard protocols or specifications that will not change over time". I was kind of wondering, about also listing libraries as essential for TDD, since they should be pluggable in various projects, and must have a predictable interface. These may not implement protocols or specifications but may contain crucial low level functionality an example is the ezc components library, which has not been in very active maintenance for a couple of years now, but is of quite high quality.
Also, crucial for design by contract, is using the TDD to test the behaviour of these libraries, not the actual methods, and where we have used this in our projects we have found the results are much more predictable in various production sites