演讲摘要: Writing a program involves three tasks: 1. Deciding what the program should do. 2. Deciding how the program should do it. 3. Coding: Implementing these decisions in code. Too often, all three are combined into the process of coding. This talk explains why they should be separated, and discusses how to perform the first two.