I know TDD has received a lot of hype over the last few years, and I understand the skepticism you might have surrounding software projects that get a lot of attention. I can tell you from experience, however, that TDD is not just hype. Before unit testing, I developed a lot of software that I thought was "rock-solid" (no bugs, great performance, etc.). I heard about Unit Testing and decided that I would try it out on a "small project", especially since it would not take along time to implement.
To my amazement, I quickly realized the merit of testing. Functions that I had thought were 100% perfect would output strange results. Changing one component might make another fail its unit test. It was interesting because I realized that my code worked only when I input what I (as the developer) expected a user to input, not what they might actually do in the production version of the app.
This surprise lead me to a number of conclusions about TDD (aside from the typical benefits):
- TDD allows you to test each component at any stage of the application (you can setup the environment for each test). This allows you to ensure a component's functionality remains uniform throughout the application.
- TDD generally encourages good design. You generally can't test individual units of an application without 'componentizing' the system. Breaking the application into testable parts (especially when you use the Inversion of Control Pattern) forces the developer to write better code.
- TDD enhances a Developer's and End-User's confidence in a system. Would you trust a system that was untestable? Or one that is thoroughly tested?
There are many other benefits to TDD. There are also some disadvantages (time to implement, implementing tests improperly). What I can say is that practicing TDD will generally help you improve your development skills.
Lastly, I know you mentioned that your projects tend to be small, so my question to you is why not test? It won't take that long to implement. If you develop in .NET and Java, the major IDE's have features for streamlining the testing process. I'm also willing to bet other languages have similar features in their IDE's.