For a project of any significant size :
* Have a crystal clear idea of what you want built.*
This is itself most of the work. It is surprisingly hard for business people to understand that writing software is actually "specifying What needs to be coded" for 50% of the effort.