A great talk given by Joshua Bloch (google engineer) presented at Javapolis 2005 and OOPSLA 2006 about tricks and key points to keep in mind when designing an API and SPI. The recording is from Javapolis conference, and recorded by infoQ (the greatest platform to watch talks at present day).
Now the links:
I have to confess I didn't thought about most things that Joshua says there :( . Some things I do right (intuition?) and some of my APIs suffer from lots of bad habits commented here.... Well, It's never too late to learn...