When we started looking at API usability, we didn’t know how to do it or whether the effort would be worthwhile. We can now unreservedly state that it is absolutely possible and absolutely vital. We have learned a lot about how different developers approach APIs and the different expectations they have of those APIs. We have been able to utilize that understanding both to design new APIs and to discover and fix usability issues in existing APIs.
For example, the scenario-based design approach has been used at Microsoft for a few years now. Our design guidelines and API review process reinforce the need to do scenario-based design [Cwalina and Abrams 2005] and usability studies on APIs.
But this is only the beginning. There is much work still to be done. Given how critical it is to find and address API usability issues before the API ships, we need to develop additional techniques that can be used as early in the API development process as possible. For example, Farooq et al. describe a method for evaluating the usability of an API that does not require a usability study [Farooq and Zirkler 2010].
It’s also important to understand how trends in application development impact the usability of APIs. For example, there is a trend toward the use of design patterns such as dependency injection [Fowler 2004]. There are very clear and sound architectural reasons for such patterns, but how do they affect usability? Jeff Stylos has investigated these issues and learned that there ...