I typically follow a 3 step method:
- agree on requirements beforehand, I send you a summary of my understanding for approval, together with a proposed course for action
- determine the success criteria, writing documentation and unit tests before the development of agreed features
- deliver the completed software, and support you for the installation/configuration