Once you have client who wants to work with you, the first this you need to do is to get a specification of what they want you to build. This is particularly important if you are working with a fixed price quote.
It might surprise you, but some clients do not know the specifications themselves. At least not at a level you should have before you start development.
What is a good specification?
(A god specification will) Establish the basis for agreement between the customers and the suppliers on what the software product is to do.*
It should be complete. For example, instead of saying, Foo page should have comments, it needs to specify whether the comments will be ajaxed, what type of users can leave comments and such.
- It should be comprehensive. If your software will have 10 types of screens (or pages), the specification needs to describe the 10 types, instead of describing one and claiming that other 9 are similar.
- It should provide the baseline test cases. How will the software will be tested. What are the criteria to pass the tests?
- What are the external API and infrastructure it will integrate with?
- What are the performance characteristics it needs to meet?
How to get clients to write good specifications?
Sometimes clients may be wary of writing detailed specs. If that happens
- Remind them that these specifications help you budget and estimate time
- Remind that these help them think through all the scenarios
What should a good spec contain
(Not are required)
- Textual description of what the software does
- Wireframes explaining the UI
- Data model with the data to capture
- User stories
- Test plan