Why Is Programming (Sometimes) so Difficult? Programming as Scientific Discovery in Multiple Problem Spaces

Jinwoo Kim, F. Javier Lerch

Research output: Contribution to journalArticlepeer-review

26 Citations (Scopus)


Our theoretical framework views programming as search in three problem spaces: rule, instance, and representation. The main objectives of this study are to find out how programmers change representation while working in multiple problem spaces, and how representation change increases the difficulty of programming tasks. Our theory of programming indicates that programming is similar to the way scientists discover and test theories. That is, programmers generate hypotheses in the rule space and test these hypotheses in the instance space. Moreover, programmers change their representations in the representation space when rule development becomes too difficult or alternative representations are available. We conducted three empirical studies with different programming tasks: writing a new program, understanding an existing program, and reusing an old program. Our results indicate that considerable cognitive difficulties stem from the need to change representations in these tasks. We conclude by discussing the implications of viewing programming as a scientific discovery for the design of programming environments and training methods.

Original languageEnglish
Pages (from-to)25-50
Number of pages26
JournalInformation Systems Research
Issue number1
Publication statusPublished - 1997 Mar

All Science Journal Classification (ASJC) codes

  • Management Information Systems
  • Information Systems
  • Computer Networks and Communications
  • Information Systems and Management
  • Library and Information Sciences


Dive into the research topics of 'Why Is Programming (Sometimes) so Difficult? Programming as Scientific Discovery in Multiple Problem Spaces'. Together they form a unique fingerprint.

Cite this