The "Thinking about requirements of API" is the biggest
part for me. I have fought and fought with people about
why their APIs were senseless, or not thought out, until
finally I took a unit test after the fact, showed them
the only way their API could be used, and then showed
them how I wanted it with another unit test. The
difference was quite dramatic.