Write unit tests at the same time that you write the code. Writing unit tests post-facto can be boring and also robs you of the main benefits that unit testing can provide. Writing unit tests at the same time you write the code helps you focus on the task at hand. Writing unit tests in conjuction with code can be fun and satisfying, and can help you improve the quality of your code while its goals are fresh in your mind. Unit tests should be developed against as small and specific a subset of a system's or subsystem's functionality as possible.
Unit testing is capable of helping to help reduce backtracking, but only if used properly.
A unit test does not produce any output unless it fails. If a unit test fails, it should print something useful, but short. This is the realm of other testing methodologies. If unit tests are written at sufficiently granular level, it is often enough just to know the name of the unit test that failed. If the prospect of writing a series of unit tests for an existing system seems daunting, it's important to remember that no matter how many unit tests you write, you cannot prove that your software does not have bugs.