Doodle Up Front
I find it very helpful to jot down a few squares and arrows when thinking about a new system or a new layer of a system that I am building. These squares and arrows will look very much like UML, but probably not be 100% compliant. The point is, they are really somewhat of a doodle. While thinking of classes and responsibilities and associations, I draw them. Eventually, I will find this one little class that I will start writing tests for.
This kind of UML-doodling is helpful for starting to brainstorm about a system, or communicating ideas to a fellow programmer. On the other hand, I like to have a neat diagram of all my classes handy, in case I get lost and I forgot what I was doing two weeks ago. And for this, I use a tool. I currently use Dia, which is good enough for my current needs. The important point is, that I use it AFTER I have implemented the system I am drawing a diagram of. If I would use the tool too early, I would just get lost in trying to make the diagram neat, and in playing around with the options of the tool. In short, I would find perfect excuses for procrastinating on the implementation, which means on writing the first test. So I doodle up front, get my hands dirty, and I make myself some neat documentation after the fact, if I (or my peers) need it.