Do you consider design and development to be different activities? If your thought process is along the lines of, “Our design is complete, now it’s time to start construction!” – with construction meaning programming – you’re being trapped by the construction metaphor. Here’s why.
The work of software architects and software developers is more about design than construction. A software architect focuses on creating a high-level technical framework that other developers can work from. An architect focus on the layers of the system, the components required and the interfaces needed in order for a system to function. Software developers use this framework, but focus primarily on the design of component internals: the algorithms, data structures, and the organization of the code.
Programming is a combination design and instructing the computer on behavior.
Software construction is fully automated by the computer. It’s called a compiler. The source code that programmers are responsible for creating is actually the final, detailed blueprint that the compiler follows to construct the executable code.
One troubling aspect of software – troubling from the standpoint of achieving predictability – is that while users can anticipate what the software will look like in advance (particularly if there are good prototypes, even if they are only “paper prototypes”),users are typically not that good at visualizing the software in context with its underlying behavior. Users typically want to make changes once they get their hands on the software and use it, because this is the point that the abstract becomes very real for them. Changes are made to the “software blueprint” and the software is re-constructed from that blueprint, and the cycle begins again.
Software construction is fast and easy, it’s the design that takes time and effort.