Skip to main content Accessibility help
  • This chapter is unavailable for purchase
  • Cited by 16
  • Print publication year: 2006
  • Online publication date: June 2012

21 - Expertise in Software Design



Keywords: software design, programming, computer program, debugging, communication, knowledge representation, Professionals.


In this chapter, we review research evidence on expertise in software design, computer programming, and related tasks. Research in this domain is particularly interesting because it refers both to rather general features and processes associated with expertise (e.g., knowledge representation, problem-solving strategies) and to specific characteristics of high performers in an economically relevant real-world setting. Therefore, in this chapter we draw on literature from various fields, mainly from cognitive psychology, but also from work and organizational psychology and from the software-design literature within computer science.

Our chapter is organized as follows: In the first main section we provide a brief description of the domain and give an overview of tasks in software development. Next, we briefly describe the expertise concept and distinguish between a conceptualization of expertise as years of experience and expertise as high performance. The third main section is the core part of this chapter. In this section, we review empirical research on expertise in tasks such as software design, programming, program comprehension, testing, and debugging. Moreover, we describe how expert performers differ from non-experts with respect to knowledge as well as communication and cooperation processes. In the final section, we present directions for future research and discuss some practical implications.

Historical Context

Extensive research on expertise on software design and programming started in the early 1980s.

Related content

Powered by UNSILO
Adelson, B. (1984). When novices surpass experts: The difficulty of a task may increase with expertise. Journal of Experimental Psychology: Learning, Memory, and Cognition, 10, 483–495.
Adelson, B., & Soloway, E. (1985). The role of domain experience in software design. IEEE Transactions on software engineering, 11, 1351–1360.
Agarwal, R., Sinha, A. P., & Tanniru, M. (1996). The role of prior experience and task characteristics in object-oriented modeling: An empirical study. International Journal of Human-Computer Studies, 45, 639–667.
Barfield, W. (1986). Expert-novice differences for software: Implications for problem-solving and knowledge acquisition. Behaviour & Information Technology, 5, 15–29.
Barfield, W. (1997). Skilled performance on software as a function of domain expertise and program organization. Perceptual and Motor Skills, 85, 1471–1480.
Bateson, A. G., Alexander, R. A., & Murphy, M. D. (1987). Cognitive processing differences between novice and expert computer programmers. International Journal of Man-Machine Studies, 26, 649–660.
Batra, D., & Davis, J. G. (1992). Conceptual data modelling in database design: Similarities and differences between expert and novice designers. International Journal of Man-Machine Studies, 37, 83–101.
Campbell, D. J., & Gingrich, K. F. (1986). The interactive effects of task complexitiy and participation on task performance: A field experiment. Organizational Behavior and Human Decision Processes, 38, 162–180.
Campbell, R. L., Brown, N. R., & DiBello, L. A. (1992). The programmer's burden: Developing expertise in programming. In Hoffman, R. R. (Ed.), The psychology of expertise (pp. 269–362). New York: Springer.
Chevalier, A., & Ivory, M. Y. (2003). Web site designs: Influences of designer's expertise and design constraints. International Journal of Human-Computer Studies, 58, 57–87.
Chi, M. T. H., Feltovich, P. J., & Glaser, R. (1981). Categorization and representation of physics problems by experts and novices. Cognitive Science, 5, 121–152.
Collani, G. V., & Schömann, M. (1995). The process of acquisition of a new programming language (LISP): Evidence for transfer of experience and knowledge in programming. In Wender, K. F., Schmalhofer, F. & Boecker, H.-D. (Eds.), Cognition and computer programming (pp. 169–191). Norwood, NJ: Ablex.
Curtis, B. (1986). By the way, did anyone study any real programmers? In Soloway, E. & Iyengar, S. (Eds.), Empirical studies of programmers (pp. 256–262). Norwood, JN: Ablex.
Curtis, B., Krasner, H., & Iscoe, N. (1988). A field study of the software design process for large systems. Communications of the ACM, 31, 1268–1287.
Davids, K. (2000). Skill acquisitaion and the theory of deliberate practice: It ain't what you do it's the way you do it International Journal of Sport Psychology, 31, 461–466.
Davies, S. P. (1990). Plans, goals and selection rules in the comprehension of computer programs. Behaviour & Information Technology, 9, 201–214.
Davies, S. P. (1991). The role of notation and knowledge representation in the determination of programming strategy: A framework for integrating models of programming behavior. Cognitive Science, 15, 547–572.
Détienne, F. (1995). Design strategies and knowledge in object-oriented programming: Effects of experience. Human-Computer Interaction, 10, 129–169.
Détienne, F. (2002). Software design. Cognitive aspects. London, UK: Springer.
Ericsson, K. A., Krampe, R. T., & Tesch-Römer, C. (1993). The role of deliberate practice in the acquisition of expert performance. Psychological Review, 100, 363–406.
Ericsson, K. A., & Lehmann, A. C. (1996). Expert and exceptional performance: Evidence of maximal adaptation to task constraints. Annual Review of Psychology, 47, 273–305.
Ericsson, K. A., & Smith, J. (1991). Prospects and limits of the empirical study of expertise: An introduction. In Ericsson, K. A. & Smith, J. (Eds.), Toward a general theory of expertise: Prospects and limits (pp. 1–38). Cambridge: Cambridge University Press.
Eteläpelto, A. (1993). Metacognition and the expertise of computer program comprehension. Scandinavian Journal of Educational Research, 37, 243–254.
Feltovich, P. J., Spiro, R. J., & Coulson, R. L. (1997). Issues of expert flexibility in contexts characterized by complexity and change. In Feltovich, P. J., Ford, K. M., & Hoffman, R. R. (Eds.), Expertise in Context: Human and Machine (pp. 125–146). Menlo Park, CA: MIT Press.
Ferris, G. R., Witt, L. A., & Hochwarter, W. A. (2001). Interaction of social skill and general mental ability on job performance and salary. Journal of Applied Psychology, 86, 1075–1082.
Fujigaki, Y., & Mori, K. (1997). Longitudinal study of work stress among information system professionals. International Journal of Human-Computer Interaction, 9, 369–381.
Glass, R. L. (1997). The ups and downs of programmer stress. Communications of the ACM, 40(4), 17–19.
Guerin, B., & Matthews, A. (1990). The effects of semantive complexity on expert and novice computer program recall and comprehension. The Journal of General Psychology, 117, 379–389.
Hatano, G., & Inagaki, K. (1986). Two courses of expertise. In Stevenson, H., Azuma, A., & Hakuta, K. (Eds.), Child development and education in Japan (pp. 262–272). San Francisco: Freeman.
Hesketh, B., & Ivancic, K. (2002). Enhancing performance through training. In Sonnentag, S. (Ed.), Psychological management of individual performance (pp. 247–265). Chichester: Wiley.
Hoffman, R. R. (1992). Bibliography: Expertise in programming. In Hoffman, R. R. (Ed.), The psychology of expertise: Cognitive research and empirical AI (pp. 359–362). Hillsdale, NJ: Erlbaum.
Jeffries, R., Turner, A. A., Polson, P. G., & Atwood, M. E. (1981). The processes involved in designing software. In Anderson, J. R. (Ed.), Cognitive skills and their acquisition (pp. 255–283). Hillsdale, NJ: Erlbaum.
Kelley, R., & Caplan, J. (1993). How Bell Labs creates star performers. Harvard Business Review, 71, 128–139.
Kimball, D. R., & Holyoak, K. J. (2000). Transfer and expertise. In Tulving, E. & Craik, F. I. M. (Eds.), The Oxford handbook of memory (pp. 109–122). Oxford: Oxford University Press.
Koubek, R. J., & Salvendy, G. (1991). Cognitive performance of super-experts on computer program modification tasks. Ergonomics, 34, 1095–1112.
Koubek, R. J., Salvendy, G., Dunsmore, H. E., & LeBold, W. K. (1989). Cognitive issues in the process of software development: Review and rappraisal. International Journal of Man-Machine Studies, 30, 171–191.
Krampe, R. T., & Ericsson, K. A. (1996). Maintaining excellence: Deliberate practice and elite performance in young and older pianists. Journal of Experimental Psychology: General, 125, 331–359.
Krems, J. F. (1995). Expert strategies in debugging: Experimental results and a computational model. In Wender, K. F., Schmalhofer, F., & Boecker, H.-D. (Eds.), Cognition and computer programming (pp. 241–254). Norwood, NJ: Ablex.
Latham, G. P., Locke, E. A., & Fassina, N. E. (2002). The high performance cycle: Standing the test of time. In Sonnentag, S. (Ed.), Psychological management of individual performance (pp. 201–228). Chichester: Wiley.
Law, L.-C. (1998). A situated cognition view about the effects of planning and authourship on computer program debugging. Behaviour & Information Technology, 17, 325–337.
Locke, E. A., & Latham, G. O. (1990). A theory of goal setting and task performance. Englewood Cliffs, NJ: Prentice Hall.
Malhotra, A., Thomas, J. C., Carroll, J. M., & Miller, L. A. (1980). Cognitive processes in design. International Journal of Man-Machine Studies, 12, 119–140.
McKeithen, K. B., Reitman, J. S., Rueter, H. H., & Hirtle, S. C. (1981). Knowledge organization and skill differences in computer programmers. Cognitive Psychology, 13, 307–325.
Nanja, M., & Cook, C. R. (1987). An analysis of the on-line debugging process. In Olson, G. M., Sheppard, S., & Soloway, E. (Eds.), Empirical studies of programmers. Second workshop (pp. 172–184). Norwood, NJ: Ablex.
Olson, G. M., Sheppard, S., & Soloway, E. (Eds.) (1987). Empirical studies of programmers: Second workshop. Norwood, NJ: Ablex.
Pennington, N. (1987). Comprehension strategies in programming. In Olson, G. M., Sheppard, S., & Soloway, E. (Eds.), Empirical studies of programmers: Second workshop (pp. 100–113). Norwood, NJ: Ablex.
Riedl, T. R., Weitzenfeld, J. S., Freeman, J. T., Klein, G. A., & Musa, J. (1991). What we have learned about software engineering expertise. Proceedings of the Fifth Software Engineering Institute Conference on Software Engineering Education (pp. 261–270). New York: Springer.
Rist, R. S. (1986). Plans in programming: Definition, demonstration and development. In Soloway, E. & Iyengar, R. (Eds.), Empirical studies of programmers. Norwood, NJ: Abley.
Rist, R. S. (1991). Knowledge creation and retrieval in program design: A comparison of novices and intermediate student programmers. Human-Computer Interaction, 6, 1–46.
Rist, R. S. (1996). System structure and design. In Gray, W. D. & Boehm-Davis, D. A. (Eds.), Empirical studies on programmers: Sixth workshop. Norwood, NJ: Ablex.
Scholtz, J., & Wiedenbeck, S. (1992). Learning new programming languages: An analysis of the process and problems encountered. Behaviour & Information Technology, 11(4), 199–215.
Simon, H. A. (1973). The structure of ill-structured problems. Artificial Intelligence, 4, 181–204.
Soloway, E., & Ehrlich, K. (1984). Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, 10, 595–609.
Soloway, E., & Iyengar, S. (Eds.) (1986). Empirical studies of programmers. Norwood, NJ: Ablex.
Sommerville, I. (2001). Software engineering (6th edition). Harlow, UK: Addison-Wesley.
Sonnentag, S. (1995). Excellent software professionals: Experience, work activities, and perceptions by peers. Behaviour & Information Technology, 14, 289–299.
Sonnentag, S. (1998). Expertise in professional software design: A process study. Journal of Applied Psychology, 83, 703–715.
Sonnentag, S. (2000). Expertise at work: Experience and excellent performance. In Cooper, C. L. & Robertson, I. T. (Eds.), International Review of Industrial and Organizational Psychology (pp. 223–264). Chichester: Wiley.
Sonnentag, S. (2001a). High performance and meeting participation. An observational study in software design teams. Group Dynamics: Theory, Research and Practice, 5, 3–18.
Sonnentag, S. (2001b). Using and gaining experience in professional software development. In Salas, E. & Klein, G. (Eds.), Linking expertise and naturalistic decision making (pp. 275–286). Mahwah, NJ: Erlbaum.
Sonnentag, S., & Kleine, B. M. (2000). Deliberate practice at work: A study with insurance agents. Journal of Occupational and Organizational Psychology, 73, 87–102.
Sonnentag, S., & Lange, I. (2002). The relationship between high performance and knowledge about how to master cooperation situations. Applied Cognitive Psychology, 16, 491–508.
Stajkovic, A. D., & Luthans, F. (1998). Self-efficacy and work-related performance: A meta-analysis. Psychological Bulletin, 124, 240–261.
Sternberg, R. J. (1996). Costs of expertise. In Ericsson, K. A. (Ed.), The road to excellence: The acquisition of expert performance in the arts and sciences, sports and games (pp. 347–354). Mahwah, NJ: Erlbaum.
Stevens, M. J., & Campion, M. A. (1999). Staffing work teams: Development and validation of a selection test for teamwork settings. Journal of Management, 25, 207–228.
Teasley, B. E., Leventhal, L. M., Mynatt, C. R., & Rohlman, D. S. (1994). Why software testing is sometimes ineffective: Two applied studies of positive test strategy. Journal of Applied Psychology, 79, 142–155.
Turley, R. T., & Bieman, J. M. (1995). Competencies of exceptional and nonexeptional software engineers. Journal of Systems and Software, 28, 19–38.
Vessey, I. (1986). Expertise in debugging computer programs: An analysis of the content of verbal protocols. IEEE Transactions on Systems, Man, and Cybernetics, 16, 621–637.
Vitalari, N. P., & Dickson, G. W. (1983). Problem solving for effective systems analysis: An experimental exploration. Communications of the ACM, 26, 948–956.
Voss, J. F., Fincher-Kiefer, R. H., Greene, T. R., & Post, T. A. (1986). Individual differences in performance: The contrastive approach to knowledge. In Sternberg, R. J. (Ed.), Advances in the psychology of human intelligence (Vol. 3, pp. 297–334). Hillsdale, NJ: Erlbaum.
Weinberg, G. M., & Schulman, E. L. (1974). Goals and performance in computer programming. Human Factors, 16, 70–77.
Weiser, M., & Shertz, J. (1983). Programming problem representation in novice and expert programmers. International Journal of Man-Machine Studies, 19, 391–398.
Widowski, D., & Eyferth, K. (1985). Comprehending and recalling computer programs of different structural and semantic complexity by experts and novices. In Willumeit, H.-P. (Ed.), Human decision making and manual control (pp. 267–275). Amsterdam: Elsevier.
Wiedenbeck, S., Fix, V., & Scholtz, J. (1993). Characteristics of the mental representations of novice and expert programmers: An empirical study. International Journal of Human-Computer Studies, 39, 793–812.
Ye, N., & Salvendy, G. (1994). Quantitative and qualitative differences between experts and novices in chunking computer software knowledge. International Journal of Human-Computer Interaction, 6, 105–118.