Five Paradigms in the Psychology of Programming

4.1 Abstract Since the 1950s, psychologists have studied the behavioral aspects of computer programming. However, it has been difficult to integrate their data with theory because of the mixture of psychological paradigms that have guided their research. This chapter will review the research results that have been generated under the five psychological paradigms used most often in exploring programming problems. These five paradigms are 1) individual differences, 2) group behavior, 3) organizational behavior, 4) human factors, and 5) cognitive science. The major theoretical and practical contributions of each area to the theory and practice of software engineering will be discussed. Based on current trends, it appears that research guided by the paradigm of cognitive science will be the easiest to integrate with new developments in artificial intelligence and computer science theory.

[1]  Larry Weissman,et al.  Psychological complexity of computer programs: an experimental methodology , 1974, SIGP.

[2]  Edsger W. Dijkstra,et al.  Letters to the editor: go to statement considered harmful , 1968, CACM.

[3]  F. T. Baker,et al.  Chief Programmer Team Management of Production Programming , 1972, IBM Syst. J..

[4]  Thomas R. G. Green,et al.  Scope Marking in Computer Conditionals - A Psychological Evaluation , 1977, Int. J. Man Mach. Stud..

[5]  Earl Chrysler,et al.  Some basic determinants of computer programming productivity , 1978, CACM.

[6]  Richard D. Arvey,et al.  A Guttman approach to the development of behaviorally based rating scales for systems analysts and programmer/analysts. , 1974 .

[7]  Kate Ehrlich,et al.  An empirical investigation of the tacit plan knowledge in programming , 1984 .

[8]  Richard Kammann,et al.  The Comprehensibility of Printed Instructions and the Flowchart Alternative , 1975 .

[9]  J. B. Brooke,et al.  An experimental study of flowcharts as an aid to identification of procedural faults , 1980 .

[10]  John Gannon An experiment for the evaluation of language features , 1976 .

[11]  Elliot Soloway,et al.  Learning to program = learning to construct mechanisms and explanations , 1986, CACM.

[12]  Bill Curtis,et al.  Experimental evaluation of software documentation formats , 1989, J. Syst. Softw..

[13]  B. A. Sheil,et al.  The Psychological Study of Programming , 1981, CSUR.

[14]  G. A. Miller THE PSYCHOLOGICAL REVIEW THE MAGICAL NUMBER SEVEN, PLUS OR MINUS TWO: SOME LIMITS ON OUR CAPACITY FOR PROCESSING INFORMATION 1 , 1956 .

[15]  Michael J. Kelly,et al.  Limited Vocabulary Natural Language Dialogue , 1977, Int. J. Man Mach. Stud..

[16]  Richard E. Mayer,et al.  The Psychology of How Novices Learn Computer Programming , 1981, CSUR.

[17]  John R. Anderson,et al.  Learning to Program in LISP , 1984, Cogn. Sci..

[18]  B. Curtis,et al.  Measurement and experimentation in software engineering , 1980, Proceedings of the IEEE.

[19]  Ben Shneiderman,et al.  Experimental investigations of the utility of detailed flowcharts in programming , 1977, CACM.

[20]  E. E. Grant,et al.  Exploratory experimental studies comparing online and offline programming performance , 1968, CACM.

[21]  John C. Thomas,et al.  Clinical— experimental analysis of design problem solving , 1979 .

[22]  Richard E. Mayer,et al.  Some Conditions of Meaningful Learning for Computer Programming: Advance Organizers and Subject Control of Frame Order. , 1976 .

[23]  Ben Shneiderman,et al.  Control flow and data structure documentation: two experiments , 1982, CACM.

[24]  R E Mayer Comprehension as affected by structure of problem representation , 1976, Memory & cognition.

[25]  Michael E. Atwood,et al.  Flowcharts versus program design languages: an experimental comparison , 1983, CACM.

[26]  Thomas R. G. Green,et al.  The problems the programmer faces , 1980 .

[27]  Deborah A. Boehm-Davis,et al.  Documentation of Concurrent Programs , 1985 .

[28]  Allen Newell,et al.  Problem solving techniques for the design of algorithms , 1984, Inf. Process. Manag..

[29]  Victor R. Basili,et al.  A Controlled Experiment Quantitatively Comparing Software Development Approaches , 1981, IEEE Transactions on Software Engineering.

[30]  B. Adelson Problem solving and the development of abstract categories in programming languages , 1981, Memory & cognition.

[31]  Jean-Michel Hoc Role of Mental Representation in Learning a Programming Language , 1977, Int. J. Man Mach. Stud..

[32]  Garland Y. DeNelsky,et al.  PREDICTION OF COMPUTER PROGRAMMER TRAINING AND JOB PERFORMANCE USING THE AABP TEST1 , 1974 .

[33]  H A Simon,et al.  How Big Is a Chunk? , 1974, Science.

[34]  Henry C. Lucas,et al.  A Structured Programming Experiment , 1976, Comput. J..

[35]  B. Adelson,et al.  The Role of Domain Expenence in Software Design , 1985, IEEE Transactions on Software Engineering.

[36]  David J. Gilmore,et al.  Comprehension and Recall of Miniature Programs , 1984, Int. J. Man Mach. Stud..

[37]  H. E. Dunsmore,et al.  Data Referencing: An Empirical Investigation , 1979, Computer.

[38]  Kate Ehrlich,et al.  Cognitive strategies and looping constructs: an empirical study , 1983, CACM.

[39]  Gerald M. McCue IBM's Santa Teresa Laboratory - Architectural Design for Program Development , 1978, IBM Syst. J..

[40]  Gerald M. Weinberg,et al.  Goals and Performance in Computer Programming , 1974 .

[41]  Lance A. Miller Programming by Non-Programmers , 1974, Int. J. Man Mach. Stud..

[42]  Robin Jeffries,et al.  The Processes Involved in Designing Software. , 1980 .

[43]  John M. Carroll,et al.  Aspects of Solution Structure in Design Problem Solving. , 1980 .

[44]  Thomas R. G. Green,et al.  When do diagrams make good computer languages , 1979 .

[45]  John B. Black,et al.  Software psychology: The need for an interdisciplinary program , 1986, Proceedings of the IEEE.

[46]  Dick B. Simmons,et al.  Predicting programming group productivity a communications model , 1975, IEEE Transactions on Software Engineering.

[47]  T. R. G. Green Conditional program statements and their comprehensibility to professional programmers , 1977 .

[48]  Ruven E. Brooks,et al.  Studying programmer behavior experimentally: the problems of proper methodology , 1980, CACM.

[49]  James L. Alty,et al.  Learning a first computer language: strategies for making sense , 1982 .

[50]  John R. Anderson,et al.  Learning to Program in LISP , 1984, Cogn. Sci..

[51]  Mark Weiser,et al.  Programming Problem Representation in Novice and Expert Programmers , 1983, Int. J. Man Mach. Stud..

[52]  P. Wright,et al.  Written information: Some alternatives to prose for expressing the outcomes of complex contingencies. , 1973 .

[53]  Susan Wiedenbeck,et al.  Novice/Expert Differences in Programming Skills , 1985, Int. J. Man Mach. Stud..

[54]  J. Reitman,et al.  Knowledge organization and skill differences in computer programmers , 1981, Cognitive Psychology.

[55]  B. Curtis,et al.  Substantiating programmer variability , 1981, Proceedings of the IEEE.

[56]  Ron Weber,et al.  Research on Structured Programming: An Empiricist's Evaluation , 1984, IEEE Transactions on Software Engineering.

[57]  Woodrow Barfield,et al.  Expert-novice differences for software: implications for problem-solving and knowledge acquisition , 1986 .

[58]  John D. Gannon An experimental evaluation of data type conventions , 1977, CACM.

[59]  J. B. Brooke,et al.  Experimental studies of flowchart use at different stages of program debugging , 1980 .

[60]  J. Hackman,et al.  Development of the Job Diagnostic Survey , 1975 .

[61]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[62]  John Millar Carroll,et al.  Presentation and Representation in Design Problem Solving. , 1980 .

[63]  Marilyn Mantei,et al.  The effect of programming team structures on programming tasks , 1981, CACM.

[64]  Lance A. Miller,et al.  Natural Language Programming: Styles, Strategies, and Contrasts , 1981, IBM Syst. J..

[65]  Claude E. Walston,et al.  A Method of Programming Measurement and Estimation , 1977, IBM Syst. J..

[66]  Arthur S. Blaiwes,et al.  Formats for presenting procedural instructions. , 1974 .

[67]  Bill Curtis,et al.  Modern Coding Practices and Programmer Performance , 1979, Computer.

[68]  Thomas R. G. Green,et al.  Structuring the programmer's task , 1977 .