People who use metaphors to illuminate their software development process are better at programming than those who don't use metaphors, and can write better code faster.
Some experts say that software development is a science, is art, is a process, is driving a car and so on.
Writing metaphor software development implies that the process is a costly trial-and-error process, rather than careful planning and design.
Some people compare software development to farming, "do a little at a time," and finally add to the entire system. In fact, the system should be planned for fertilization, the details of the design of fruits and vegetables, and the effective management of land to increase the output of the code, and finally get a bumper harvest of code.
It is better to use system growth to make metaphors, similar words such as "incremental", "iterative", "adaptive", "evolutionary". design, compile, and test incrementally are the most powerful software development concepts known at the moment.
Build skeleton-attached muscles and skins accept real input and output (add a small amount of code at a time until you get a fully operational system)
Software development such as building houses:
The definition of a problem--what kind of house would you like to build
Software architecture design--and architects to discuss the overall design
Detailed design of the software-draw a detailed blueprint, contract out
The construction of software--playing foundation
The Art of software development