A lot have already been said about Test Driven Development (TDD) by a lot of people, but I'd still like to add my 0.02paisa.
We have an internal requirement of checking in UnitTests along with the product code and the code coverage for the unit tests needs to be high. Most of our developers have over 85% code coverage.
In my sources I decided to try out TDD. I used the following steps
Even though the system looks simple it has helped me enormously by catching multiple bugs at the beginning. Even trivial tests like tests for GetHashCode and operator overloads found issues :) The fun in seeing all those X marks disappear one after the other brings in a childish zeal to get them done even faster.
The other goodness is that after every code change later I can easily fire these tests for sanity check.