Note: This document is work-in-progress. Please don’t publish it on news sites, or otherwise link to it in public without the author’s permission. Private linking is acceptable.
Most people agree that designing a program, planning it and thinking about it is a good idea. Extreme Programming suggests to have one design meeting every week, which sounds reasonable.
Joel Spolsky gives the motivation for designing software in one of his articles, which is a recommended read. He also voices an opinion about over-formal design (with lots of UML diagrams, etc.) that can actually be a disadvantage to a project’s success.