Like with most things in life, proper planning is vital.
The same goes for Software development, where if you fail to plan, you plan to fail.I believe in following a well defined development methodology, which includes predetermined phases and processes, and making sure that all parties involved understand and follow this methodology religiously. Quality is not negotiable, all systems must be graceful and fully tested, if quality is a deterring factor on price then quantity should be reduced, but never quality. The development methodology serves one basic purpose; Expectation, as all parties know what is required and when its required.
Many developers underestimate the importance of a solid development methodology especially when dealing with small projects. This leads to many headaches, one of the most serious, under-scoping, which in turn leads to poor quality software, frustrated developers and clients.