• 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