This is a great Google Tech Talk and while it may be Java-centric, I think much applies to any language you work with.
YouTube: GoogleTechTalks: “How To Design A Good API and Why it Matters”:
This is what I believe is the PDF slideshow from the above presentation.
There is a version of this presentation at InfoQ if you prefer that over YouTube and PDF.
InfoQ: Joshua Bloch: “Bumper-Sticker API Design”
Artima: Joshua Bloch: “Josh Bloch on Design”