Skip to main content
  • This chapter is unavailable for purchase
  • Cited by 13
  • Cited by
    This chapter has been cited by the following publications. This list is generated based on data provided by CrossRef.

    Ajami, Shulamyt Woodbridge, Yonatan and Feitelson, Dror G. 2018. Syntax, predicates, idioms — what really affects code complexity?. Empirical Software Engineering,

    Poleacovschi, Cristina and Javernick-Will, Amy 2017. Who Are the Experts? Assessing Expertise in Construction and Engineering Organizations. Journal of Construction Engineering and Management, Vol. 143, Issue. 8, p. 04017033.

    Bohle Carbonell, Katerina Könings, Karen D. Segers, Mien and van Merriënboer, Jeroen J. G. 2016. Measuring adaptive expertise: development and validation of an instrument. European Journal of Work and Organizational Psychology, Vol. 25, Issue. 2, p. 167.

    Nivala, Markus Hauser, Florian Mottok, Jurgen and Gruber, Hans 2016. Developing visual expertise in software engineering: An eye tracking study. p. 613.

    Bish, Adelle J and Kabanoff, Boris 2014. Star performers: task and contextual performance are components, but are they enough?. Asia Pacific Journal of Human Resources, Vol. 52, Issue. 1, p. 110.

    2014. The Making of an Expert Engineer. p. 541.

    Kaplan, Frédéric and Vinck, Dominique 2013. Engineering Practice in a Global Context. p. 61.

    Dexter, Scott and Kozbelt, Aaron 2013. Free and open source software (FOSS) as a model domain for answering big questions about creativity. Mind & Society, Vol. 12, Issue. 1, p. 113.

    Tala, Suvi 2013. Knowledge Building Expertise: Nanomodellers’ Education as an Example. Science & Education, Vol. 22, Issue. 6, p. 1323.

    Klendauer, Ruth Berkovich, Marina Gelvin, Richard Leimeister, Jan Marco and Krcmar, Helmut 2012. Towards a competency model for requirements analysts. Information Systems Journal, Vol. 22, Issue. 6, p. 475.

    Gartmeier, Martin Lehtinen, Erno Gruber, Hans and Heid, Helmut 2011. Negative expertise: comparing differently tenured elder care nurses' negative knowledge. European Journal of Psychology of Education, Vol. 26, Issue. 2, p. 273.

    Trevelyan, James 2010. Reconstructing engineering from practice. Engineering Studies, Vol. 2, Issue. 3, p. 175.

    Salas, Eduardo Rosen, Michael A. Held, Janet D. and Weissmuller, Johnny J. 2009. Performance Measurement in Simulation-Based Training. Simulation & Gaming, Vol. 40, Issue. 3, p. 328.

  • 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.

Recommend this book

Email your librarian or administrator to recommend adding this book to your organisation's collection.

The Cambridge Handbook of Expertise and Expert Performance
  • Online ISBN: 9780511816796
  • Book DOI:
Please enter your name
Please enter a valid email address
Who would you like to send this to *
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.