DocumentCode
1500206
Title
What Makes APIs Hard to Learn? Answers from Developers
Author
Robillard, Martin P.
Author_Institution
Sch. of Comput. Sci., McGill Univ., Montreal, QC, Canada
Volume
26
Issue
6
fYear
2009
Firstpage
27
Lastpage
34
Abstract
The paper discusses the application program interface (API). Most software projects reuse components exposed through APIs. In fact, current-day software development technologies are becoming inseparable from the large APIs they provide. An API is the interface to implemented functionality that developers can access to perform various tasks. APIs support code reuse, provide high-level abstractions that facilitate programming tasks, and help unify the programming experience. A study of obstacles that professional Microsoft developers faced when learning to use APIs uncovered challenges and resulting implications for API users and designers. The article focuses on the obstacles to learning an API. Although learnability is only one dimension of usability, there´s a clear relationship between the two, in that difficult-to-use APIs are likely to be difficult to learn as well. Many API usability studies focus on situations where developers are learning to use an API. The author concludes that as APIs keep growing larger, developers will need to learn a proportionally smaller fraction of the whole. In such situations, the way to foster more efficient API learning experiences is to include more sophisticated means for developers to identify the information and the resources they need-even for well-designed and documented APIs.
Keywords
application program interfaces; software development management; software reusability; API learnability; API usability; Microsoft developers; application program interface; code reuse; software development technologies; Application software; Programming profession; Usability; API design; API usability; code examples; empirical study; software documentation;
fLanguage
English
Journal_Title
Software, IEEE
Publisher
ieee
ISSN
0740-7459
Type
jour
DOI
10.1109/MS.2009.193
Filename
5287006
Link To Document