1. Requirements should be clear, complete, detailed, cohesive, attainable, testable and must be agreed by all players. Use prototypes to help nail down requirements. In agile environments, continuous close coordination with customers/end-users is necessary.2. Stick to initial requirements as much as possible. If changes are necessary, they should be adequately reflected in related schedule changes. If possible, work closely with customers to manage changes. This will provide them a higher comfort level with their requirements decisions and minimize excessive changes later on.
3. Allow realistic and enough time to plan, design, test, bug fix, re-test, change, and document in the given schedule.
4. Make extensive use of group communication tools - groupware, wiki's, bug-tracking tools and change management tools, intranet capabilities, etc. Insure that information/documentation is available and up-to-date, promote teamwork and cooperation. Continuousally communicate with end-users if possible to clarify expectations.