It's a story familiar to every software designer. You start a project, talk to the "customer," write up a detailed spec sheet, get it approved, do the coding, and produce a prototype. The customer ...