"The nature of programming has changed. For many years we were puzzle-solvers, focused on turning algorithms into sets of instructions to be followed by a computer. We enjoyed solving these puzzles, and we often viewed both the complexity of the puzzle and the obscurity of the solution as evidence of our skill. As applications have become more ambitious and programs have grown even larger, programming has become more of a cooperative effort. We form close-knit teams of programmers. We have code walkthroughs and inspections. We test and maintain other people’s programs. Aware of our human limitations, we have come to view complexity and obscurity as faults, not challenges. Now we write programs to be read by people, not computers.
There is a pleasure in creating well-written, understandable programs. There is a satisfaction in finding a program structure that tames the complexity of an application. We enjoy seeing our algorithms expressed clearly and persuasively. We also profit from our clearly written programs, for they are much more likely to be correct and maintainable than obscure ones.”