I heartily agree. I’m working on an application that has a GUI component and in the exploration phase I started to test the application logic by manually operating my GUI skeleton. Then I realized what I was doing and stopped work on the GUI and concentrated on the logic. This forced me to write tests for all the logic to determine if things were working. This in turn forced me to separate out the logic from the GUI which is a neater more maintainable design.
This one point I feel is missing in the article: tests (usually) encourage you to come up with a better design. If something is hard to test, look closer as it might be flawed in other ways too.
Very true. That may become number 8. 😛