Exploring Programmers' API Learning Processes

Reviewed by Greg Wilson / 2021-10-14
Keywords: Cognition

Today was my eighth day in my new job, and I have already had to come to grips with the APIs of half a dozen packages and web services. Figuring out what's available to call and what it will do is central to modern programming, so any research that helps us do it more efficiently is very welcome.

Gao2020 is a preliminary observatory study designed to help create a theoretical framework for that task. It draws on cognitive load theory, information foraging theory, and research into external memory (i.e., the ways in which jot things down, draw sketches, and otherwise use things outside our heads to help us remember). The activities they identify aren't surprising—people run searches, go down blind alleys, re-order tabs, and try things out to see if they're on the right track—but assembling it all to create a map like the one shown below is essential if we're to find better ways to discover and learn what's possible.

Transition diagram for programmers' learning searches

Gao2020 Gao Gao, Finn Voichick, Michelle Ichinco, and Caitlin Kelleher: "Exploring Programmers' API Learning Processes: Collecting Web Resources as External Memory". Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2020, 10.1109/vl/hcc50065.2020.9127274.

Modern programming frequently requires the use of APIs (Application Programming Interfaces). Yet many programmers struggle when trying to learn APIs. We ran an exploratory study in which we observed participants performing an API learning task. We analyze their processes using a proposed model of API learning, grounded in Cognitive Load Theory, Information Foraging Theory, and External Memory research. The results provide support for the model of API Learning and add new insights into the form and usage of external memory while learning APIs. Programmers quickly curated a set of API resources through Information Foraging which served as external memory and then primarily referred to these resources to meet information needs while coding.