Skip to main content Accessibility help
Hostname: page-component-59b7f5684b-9m8n8 Total loading time: 0.761 Render date: 2022-09-28T06:50:06.040Z Has data issue: true Feature Flags: { "shouldUseShareProductTool": true, "shouldUseHypothesis": true, "isUnsiloEnabled": true, "useRatesEcommerce": false, "displayNetworkTab": true, "displayNetworkMapGraph": false, "useSa": true } hasContentIssue true
This chapter is part of a book that is no longer available to purchase from Cambridge Core

21 - Expertise in Software Design


Sabine Sonnentag
Department of Psychology, University of Konstanz
Cornelia Niessen
Department of Psychology, University of Konstanz
Judith Volmer
Department of Psychology, University of Konstanz
K. Anders Ericsson
Florida State University
Neil Charness
Florida State University
Paul J. Feltovich
University of West Florida
Robert R. Hoffman
University of West Florida
Get access


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.

Publisher: Cambridge University Press
Print publication year: 2006

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)


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.Google Scholar
Adelson, B., & Soloway, E. (1985). The role of domain experience in software design. IEEE Transactions on software engineering, 11, 1351–1360.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Barfield, W. (1986). Expert-novice differences for software: Implications for problem-solving and knowledge acquisition. Behaviour & Information Technology, 5, 15–29.CrossRefGoogle Scholar
Barfield, W. (1997). Skilled performance on software as a function of domain expertise and program organization. Perceptual and Motor Skills, 85, 1471–1480.CrossRefGoogle ScholarPubMed
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Davies, S. P. (1990). Plans, goals and selection rules in the comprehension of computer programs. Behaviour & Information Technology, 9, 201–214.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Détienne, F. (1995). Design strategies and knowledge in object-oriented programming: Effects of experience. Human-Computer Interaction, 10, 129–169.CrossRefGoogle Scholar
Détienne, F. (2002). Software design. Cognitive aspects. London, UK: Springer.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle ScholarPubMed
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.Google Scholar
Eteläpelto, A. (1993). Metacognition and the expertise of computer program comprehension. Scandinavian Journal of Educational Research, 37, 243–254.CrossRefGoogle Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
Fujigaki, Y., & Mori, K. (1997). Longitudinal study of work stress among information system professionals. International Journal of Human-Computer Interaction, 9, 369–381.CrossRefGoogle Scholar
Glass, R. L. (1997). The ups and downs of programmer stress. Communications of the ACM, 40(4), 17–19.Google Scholar
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.CrossRefGoogle ScholarPubMed
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.Google Scholar
Hesketh, B., & Ivancic, K. (2002). Enhancing performance through training. In Sonnentag, S. (Ed.), Psychological management of individual performance (pp. 247–265). Chichester: Wiley.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Kelley, R., & Caplan, J. (1993). How Bell Labs creates star performers. Harvard Business Review, 71, 128–139.Google ScholarPubMed
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.Google Scholar
Koubek, R. J., & Salvendy, G. (1991). Cognitive performance of super-experts on computer program modification tasks. Ergonomics, 34, 1095–1112.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Locke, E. A., & Latham, G. O. (1990). A theory of goal setting and task performance. Englewood Cliffs, NJ: Prentice Hall.Google Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Olson, G. M., Sheppard, S., & Soloway, E. (Eds.) (1987). Empirical studies of programmers: Second workshop. Norwood, NJ: Ablex.Google Scholar
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.Google Scholar
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.Google Scholar
Rist, R. S. (1986). Plans in programming: Definition, demonstration and development. In Soloway, E. & Iyengar, R. (Eds.), Empirical studies of programmers. Norwood, NJ: Abley.Google Scholar
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.CrossRefGoogle Scholar
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.Google Scholar
Scholtz, J., & Wiedenbeck, S. (1992). Learning new programming languages: An analysis of the process and problems encountered. Behaviour & Information Technology, 11(4), 199–215.CrossRefGoogle Scholar
Simon, H. A. (1973). The structure of ill-structured problems. Artificial Intelligence, 4, 181–204.CrossRefGoogle Scholar
Soloway, E., & Ehrlich, K. (1984). Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, 10, 595–609.CrossRefGoogle Scholar
Soloway, E., & Iyengar, S. (Eds.) (1986). Empirical studies of programmers. Norwood, NJ: Ablex.Google Scholar
Sommerville, I. (2001). Software engineering (6th edition). Harlow, UK: Addison-Wesley.Google Scholar
Sonnentag, S. (1995). Excellent software professionals: Experience, work activities, and perceptions by peers. Behaviour & Information Technology, 14, 289–299.CrossRefGoogle Scholar
Sonnentag, S. (1998). Expertise in professional software design: A process study. Journal of Applied Psychology, 83, 703–715.CrossRefGoogle ScholarPubMed
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.Google Scholar
Sonnentag, S. (2001a). High performance and meeting participation. An observational study in software design teams. Group Dynamics: Theory, Research and Practice, 5, 3–18.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Sonnentag, S., & Lange, I. (2002). The relationship between high performance and knowledge about how to master cooperation situations. Applied Cognitive Psychology, 16, 491–508.CrossRefGoogle Scholar
Stajkovic, A. D., & Luthans, F. (1998). Self-efficacy and work-related performance: A meta-analysis. Psychological Bulletin, 124, 240–261.CrossRefGoogle Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Turley, R. T., & Bieman, J. M. (1995). Competencies of exceptional and nonexeptional software engineers. Journal of Systems and Software, 28, 19–38.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Vitalari, N. P., & Dickson, G. W. (1983). Problem solving for effective systems analysis: An experimental exploration. Communications of the ACM, 26, 948–956.CrossRefGoogle Scholar
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.Google Scholar
Weinberg, G. M., & Schulman, E. L. (1974). Goals and performance in computer programming. Human Factors, 16, 70–77.CrossRefGoogle Scholar
Weiser, M., & Shertz, J. (1983). Programming problem representation in novice and expert programmers. International Journal of Man-Machine Studies, 19, 391–398.CrossRefGoogle Scholar
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.Google Scholar
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.Google Scholar
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.CrossRefGoogle Scholar
Cited by

Save book to Kindle

To save this book to your Kindle, first ensure is added to your Approved Personal Document E-mail List under your Personal Document Settings on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part of your Kindle email address below. Find out more about saving to your Kindle.

Note you can select to save to either the or variations. ‘’ emails are free but can only be saved to your device when it is connected to wi-fi. ‘’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

Find out more about the Kindle Personal Document Service.

Available formats

Save book to Dropbox

To save content items to your account, please confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account. Find out more about saving content to Dropbox.

Available formats

Save book to Google Drive

To save content items to your account, please confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account. Find out more about saving content to Google Drive.

Available formats