Develop software in increments using 2-week iterations; use iteration 0 (or cycle, 0) for environment setup and proof-of-concept.
Have an iteration planning meeting before each iteration to pick the user stories that will be developed in the next iteration.
Get best-guess estimates from developers, based on chosen stories for iteration.
Users provide acceptance tests as detailed requirements; developers implement these as unit tests.
Let developers design and develop the system with user available for Q&A, as needed.
Deploy production-ready code every two weeks after it has passed the user acceptance tests.