Constructing a Routine Have you checked that the prerequisites have been satisified? Have you defined the problem that the routine will solve? Is the architecture clear enough that you can give your routine a good name? Have you thought about how to test the routine? Have you thought about efficiency mainly in terms of good modularization or meeting a space and speed budget? Have you checked reference books for helpful algorithms? If it's a standard algorithm, have you compensated for language differences between your language and the language the algorithm was written in? Did you document the source of the algorithm? Have you designed the routine using detailed PDL? Have you thought about the data, before the logic, if necessary? Have you checked the PDL? Is it easy to understand? Have you paid attention to warning signs that would send you back to architecture (use of global data, operations that seem better suited to another routine, and so on)? Did you use the PDL-to-code process, using PDL as a basis for coding and converting the original PDL to comments? Did you translate the PDL to code accurately? Did you document assumptions as you made them? Have you chosen the best of several design attempts, rather than merely stopping after your first attempt? Do you thoroughly understand your code? Is it easy to understand?