Channel 9 just posted a video in which our API usability engineers talk about one of the studies they conducted recently, but what’s even more interesting, in part two of the story, they show a clip from an actual study where a participant writes a workflow application. This is big! We have tried to release usability clips publicly for a very long time and for various reasons it was difficult to do.
I always thought that a good collection of clips (short 1-3 minute clips cut from long usability videos) illustrating tradeoffs involved in API design would be of great interest outside Microsoft and a great teaching and research tool. Ultimately, I would love to have each guideline linked to a video illustrating the point. Hint: please bug Steven and Charles (channel 9) to release more videos like that :-)
We use such clips internally when we teach API design, and as they say a picture is worth a thousand words. Many design guidelines are actually quite unintuitive to domain experts who design the APIs (for non-experts). Brad and I feel very passionate about the making sure that API designers really understand the user, and that they don’t assume that the user is just like them. Here is what we wrote in the Design Guidelines book (a guideline and two annotations):
Do understand the broad range of developers using multilanguageframeworks.
KRZYSZTOF CWALINA It is easy to design for users who are likeyou, and very difficult to design for somebody unlike you. There are toomany APIs that are designed by domain experts and, frankly, they are onlygood for domain experts. The problem is that most developers are not, willnever be, and do not need to be experts in all technologies used in modernapplications.
BRAD ABRAMS Although the famous Hewlett-Packard motto “Buildfor the engineer at the next bench” is useful for driving quality and completenessinto software projects, it is misleading for API design. For example,the developers on the Microsoft Word team have a clear understandingthat they are not the target customers for Word. My mom is much more thetarget customer. Therefore the Word team puts in many more features thatmy mom might find helpful rather than the features the development teamfinds helpful. Although that is obvious in the case of applications such asWord, we often tend to miss the principle when designing APIs. We tend todesign APIs only for ourselves instead of thinking clearly about the customerscenarios.