API Design and Usability

Spending a lot of time with literature for API design I finally came across a paper by Ko et al [1]. The authors mention 6 barriers which have to be overcome to start programming. Besides the effect on learning I think these six barriers are also important for the general design of new APIs. Reducing the effort of learning programming languages results also in a high usability. This is interesting for API designers. API designer should definitely have these barriers in mind as to increase usability and to help developers to handle new APIs. A good usability reduces the time developers need to learn to program new devices and therefore decreases the costs for software development. The six learning barriers are:

  • Design Barriers or “I do not know what I want the computer to do”
  • Selection Barriers or “I know what I want the computer to do but I do not know what to use”
  • Coordination Barriers or “I think I know what think to use but I do not know how to make them work together”
  • Use Barriers or “I think I know what to use but I do not know how to use it”
  • Understanding Barriers or “I thought I knew how to use it bit it did not do what I expected”
  • Information Barriers or “I think I know why it did not do what I expected bit I do not know how to check ”

However, I am still surprised that there are hardly publications and that there is a huge gap in the research history regarding this topic. The best sources I found are by Bloch [2, 3], a developer at Google and a book by Cwalina [4]. Nevertheless, their work seems to be rather based on experiences than proper evaluated studies. Probably, the topic is simply too hard as huge studies have to be conducted but I think that there is huge potential in this topic that could drastically influence development of applications and teaching.

[1] Ko, A. J.; Myers, B. A. & Aung, H. H. Six Learning Barriers in End-User Programming Systems Proceedings of the 2004 IEEE Symposium on Visual Languages – Human Centric Computing, IEEE Computer Society, 2004, 199-206

[2] Bloch, J.How to Design a Good API and Why it Matters, available at http://lcsd05.cs.tamu.edu/slides/keynote.pdf, accessed 14/06/2011

[3] Bloch, J.How to Design a Good API and Why it Matters, http://www.youtube.com/watch?v=aAb7hSCtvGw, accessed 04/07/2011

[4] Cwalina, K. & Abrams, B. Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, Addison-Wesley Professional, 2008