Programmers are largely responsible for helping move a product from design to implementation.
This process is always full of snags:
- implementation details rear their ugly head and make parts of the design infeasible
- user feedback on early prototypes leads to changes in the design
- new technologies alter the field of what is possible, bringing back designs previously thought impossible
- priorities shift, schedules change, and requirements wander
How do you keep design and implementation in contact during the implementation? What processes do you use? Tools? Artifacts? Guidelines? Communication strategies?

