Software developers frequently complain that the process of specifying and developing software is wildly irrational. If people built houses the way they built software this is what you might see:
Dear Mr. Architect,
Please design and build me a house. I am not quite sure of what I need, so you should use your discretion.
My house should have between two and forty five bedrooms. Just make sure the plans are such that bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also bring me the cost breakdown for each configuration so that I can arbitrarily pick one.
Keep in mind that the house I ultimately chose must cost less than the one I am currently living in. Make sure, however, that you correct all the deficiencies that currently exist in my house (the floor of my kitchen vibrates when I walk across it, and the walls don't have nearly enough insulation in them).
Also keep in mind as you design this house that I wish to keep yearly maintenance cost as low as possible. This should mean the incorporation of extra cost features like aluminum or vinyl siding. If you chose not to specify aluminum, be prepared to explain in detail.
Please take care that modern design practices and the latest materials are used in construction of the house. The house should be really nice. However, be alerted that the kitchen should be designed to accommodate among other things, my 1952 Gibson refrigerator.
To assure that you are building the correct house for our family, make sure that you contact each of the children and also the in laws. My mother in law will have very strong feelings about how the house ought to be designed since she visits with us at least once a year. Make sure that you weigh all these options carefully and make the right decision. I, however, retain the right to override any decision you come up with.
Please don't bother me with small details right now. Your job is to develop the overall plans for this house. Get the big picture. It is not appropriate at this time to be choosing the color of the carpet. However, keep in mind that my wife likes green.
Also do not worry at this time about acquiring resources to build this house. Your first priority is to develop detailed plans and specifications. However, once I accept these plans, I will expect to have the house under roof within 48 hours.
While you are designing this house specifically for me, keep in mind that sooner or later I will have to sell this house. It should have appeal to potential buyers. Please make sure that before you finalize the plans, there is a consensus of the population in my area that they like the features this house has.
You are advised to run up and look at my neighbor's house he had constructed last year. We like it a great deal. It has many features that we would like to have in our new home, particularly the 75 foot swimming pool. With careful engineering I believe that you can design this into our new house without impacting the construction cost.
Please prepare a complete set of blueprints. It is not necessary at this time to do the real design since these blueprints will be used only for construction bids. Please be advised however, that any increase of cost in the future as a result of design changes will result in you getting your hands slapped.
You must be thrilled to be working on such an interesting project such as this. To be able to use new kinds of construction and to be given such freedom in your designs is something that doesn't happen very often. Contact me as rapidly as possible with your design ideas. I am enthusiastic about seeing what you can come up with.
P.S. My wife has just told me that she disagrees with many on the instructions I've given you in this letter. As architect it is your responsibility to resolve these issues. I have tried in the past and have been unable to accomplish this. If you can't handle this, I'll have to look for a new architect.
P.P.S. Perhaps what I need is not a house at all, but a travel trailer. Please advise me as early as possible if that is the case.