Joshua Bloch has a good presentation outline called How to Design a Good API and Why it Matters. Joshua is a Principal Software Engineer for Google, before that an architect in Sun's Core Java Platform Group (he designed several of the standard java API's). Josh also wrote Effective Java (ISBN 0201310058).
Here are a few points from the presentation that I found interesting...
- If you program, you are an API designer
- If you keep the spec short, it?s easy to modify
- API Should Do One Thing and Do it Well
- API Should Be As Small As Possible But No Smaller
- Names Matter - API is a Little Language
- Fail Fast - Report Errors as Soon as Possible After They Occur