Great talk recommended by Brad Abrams . http://www.infoq.com/presentations/effective-api-design Long, but really great. Best advice: "Code to the API before you're even done." This prevents: Getting to the end and saying "Hm, that doesn't feel right."