Test Driven Development and Getting Things Done
I'm sure someone, somewhere, has already determined this. It's probably been blogged about before, but I just realized something today. Test driven development dovetails nicely with David Allen's time management book Getting Things Done. By creating your tests first, with or without even marking them as TODO tests, builds you a TODO list of sorts for your project.
Other than just being a different way of doing things, I never really took to test driven development for small or personal projects. Most of my projects are web applications and "unit testing" modules never seemed worthwhile because you weren't easily able to test the database and web interactions. Well I can easily say that Perl Testing: A Developer's Notebook by Ian Langworth and chromatic has shown me the way.
I had always focused too much on ensuring that 'make test' would be able to be run from anywhere and simply did not think about the fact that I could automate most of the work of building a test environment and if I wasn't able, to bail on those tests so they would be skipped. For example, you could automate creating your PostgreSQL database, but what if PostgreSQL isn't installed on the server or what about when your user isn't allowed to create databases? You just bail out of those tests.
I was definitely too concerned with getting 100% of the tests to pass 100% of the time, in all possible scenarios now that I think about it.