Abstract: Software design is a realm of messy problems that are often too big, too ill-defined, too complex for easy comprehension and solution. Such problems are rarely amenable to solution by ‘brute force’ methods – even at the coding level such problems entail a significant cognitive load. This talk reports on strategies observed in expert behaviour in dealing with complex and intractable problems. The strategies arise from a series of in situ observations and interviews with 10 expert software engineers in the US and UK over 2 years. It appears that experts manage intractable problems by transforming them: abstracting, simplifying, deferring parts of the problem, translating them into a different representation, and so on. A range of such strategies is identified and described, and implications of expert reasoning about intractable problems are discussed.
Expert Strategies for Dealing with Complex and Intractable Problems