March 21, 2007 | John Rusk Regular feedback is a key element of agile development. Rapid feedback improves our software. I suggest it also improves us, the people who write the software. I’ve just read a fascinating article on where talent comes from, over on Freakonomics.com. It outlines research into the key factors that develop talent. The key factors are: “setting specific goals, obtaining immediate feedback and concentrating as much on technique as on outcome”. [emphasis added] For instance, life-long learning comes naturally to surgeons because they get instant feedback on the effectiveness of their decisions. But similar learning doesn’t come naturally to doctors in fields where there is a long delay between decision and outcome. The research finds that development of talent is heavily dependent on the practitioner receiving prompt feedback on their decisions. The timeliness of the feedback matters. Waterfall processes lack timeliness of feedback. A classic example would be an analyst or architect making decisions at the start of a waterfall project. Many months may pass before they learn the result of their decisions. (Sometimes they never learn the result because they move to another project before the first one is finished. Such so-called “experience” is of little value.) In agile development, decision makers get feedback quickly. Timeboxed iterations give feedback in a few weeks; unit tests give feedback in minutes; and paired programmers give feedback in seconds. Research suggests this feedback doesn’t just improve the program; it also improves the programmers.