That is where design patterns came from. The person that allegedly introduced the concept to the world was Christopher Alexander in his book "A Pattern Language: Towns, Buildings, Construction" in [1977][1]. From there, [the Gang of Four][2] (GoF) [picked it up][3], and the rest is history. Even now during lectures and in software development and architecture books analogies between the construction world and the software development world keep prevailing. Some source of analogies and references: - For example, changing requirements during the construction of a building it would perhaps become more evident to the client how absurd this is, e.g.: "OH, and I want a garage instead where the kitchen you just finished is". - Temporary aids such as scaffolding (meaning in [construction world][4]|[software development][5]) - Clients cannot keep adding features without it costing them, lots of times they want stuff done for free, and sometimes we are dumb enough to accept; that just couldn't happen in the construction world (see [requirements creep][6]). - The roles in software development: the architect is central to the design of the solution; consultor and contractor can be interchangeable terms; the workers are the programmers. - The client cannot provide accurate requirements in both cases. - Budgets and time estimates are often wrong. - The product cannot be really seen in its true form until the end. - A building might have [construction faults][7] after built, the same way software has bugs. (If more come to mind, I'll add them.) There are some who don't think the general analogy is correct, a recommended reading for this is [The Software Construction Analogy is Broken][8]. Also, there is a question about this on SO titled [What's wrong with the analogy between software and building construction?][9]. [1]: http://en.wikipedia.org/wiki/Design_pattern#cite_note-Alexander.2C_A_Pattern_Language-0 [2]: http://hillside.net/the-gang-of-four [3]: http://en.wikipedia.org/wiki/Design_pattern_(computer_science)#History [4]: http://en.wikipedia.org/wiki/Scaffolding [5]: http://en.wikipedia.org/wiki/Scaffold_(programming) [6]: http://searchsoftwarequality.techtarget.com/tip/How-to-avoid-requirements-creep [7]: http://www.cyprus-property-buyers.com/luxury-homes/gallery-2.htm [8]: http://www.kuro5hin.org/story/2003/3/13/211831/159 [9]: http://stackoverflow.com/questions/1241912/whats-wrong-with-the-analogy-between-software-and-building-construction