This is the summary of the third chapter from the book Code Complete. It is about the importance of planning and preparation in software projects.
The most common project risks in software development are poor requirements and poor planning. The primary goal of preparation is to reduce risk, to clear major risks out of the way as early as possible so that the bulk of the project can proceed as smoothly as possible.
Planning means understanding what you want to build to not waste money and time building the wrong thing. Sometimes users aren’t entirely sure what they want at first, so it might take more effort than seems ideal to find out what they really want. But it’s still cheaper than building the wrong thing, throwing it away, and starting it over.
Pay attention to the problems you experience. It takes only a few large programs to learn that you can avoid much stress by planning.
The urge to start coding is so strong that developers are reluctant to perform the proper planning. We grab the project and run to start coding as soon as possible.
Paying attention to quality is also the best way to improve productivity. Emphasize quality at the beginning, middle, and end of a project. In the beginning, you plan, gather requirements, and design a high-quality product. In the middle, you emphasize construction practices. Finally, you do the testing.
However, testing is what many people think of when they think of software quality assurance. It is only one part of a complete quality-assurance strategy, and it’s not the most effective part. Testing can’t detect a flaw, such as building the wrong product or building the right product in the wrong way. Such flaws must be worked out earlier than in testing - before construction begins.
From: Code Complete