Programmers don't build, they design. It's more akind to what building architects do in a cad program. They go through many iterations and changing specs.
What we need is a practical way to keep the design and implementation synchronized and yet decoupled