Not long ago Ken Arnold wrote an article for Queue magazine called Programmers are People Too. In it he talks about applying the principles of User Interface Design to the design of APIs. It turns out the practices of Human Factors and Usability Engineering have a lot to offer the implementors of public APIs and frameworks. Think of an API as the “user interface” of a larger programming model. Users are application programmers and the usability of the API is judged not just by it’s richness, but on the ease of use and learnability of the API. It’s not sufficient to address usability with thorough documentation any more than it’s sufficient to compensate for a bewilderingly difficult user interface to a mobile phone with a five pound user manual.
The idea of applying Human Factors to API design is not far off the idea of designing programs as works of literature. In both cases your main focus is your audience, not the computer. The common principle in both is readability, but the idea of API usability takes it a little further because your audience isn’t just trying to understand what it’s looking at but actually use and extend the work.
I believe these principles of usability apply not just to API design, but to programs in general. Ken Arnold gives a couple of examples of UI principles applied to API design, such as the use of Progressive Disclosure. That’s the principle that says you shouldn’t overwhelm a user with more detail than they need for a common task, but rather disclose the additional detail when the need arises as they move further along in some interaction. Give the user what they need to know when they need it and only when they need it. That way they won’t be distracted or confused by superfluous information.
For an API, this might mean segregating the methods of a complicated class into the methods most commonly used by client applications from the less frequently used methods needed in special situations or by advanced users. For an application designer it might mean using interfaces and abstract classes to hide the distracting implementation details of a class. Think about other common principles for user interface design, such those described in theApple Human Interface Guidelines. How can these be applied to program design? I’ll list some more examples in the next installment of this column.
Share and Enjoy
- Nagarro’s Brigid Wefelnberg finishes 3rd in Kalahari 250 km Ultramaratho…
- Windows Server AppFabric
- Log your exceptions to the cloud
- Windows Phone 7 is NOT the next version of Windows Mobile 6.5
- Nagarro Ranks First in Overall HR Practices in Leading Indian Employer S…
- Balkrishna Dubey is key speaker at Frankfurt event
- Case study: load balancing high transaction volume databases
- Nagarro Ranked #1 in HR Practices, #6 Overall Best Company in Recent Dat…
- Usability is in the details
- HTML5 mobile apps vs native mobile apps