| I think architecture is a fine metaphor for actually constructing software, just no one treats software the way we treat architecture. Imagine putting an architect on a plane, and during the flight briefly explaining some elements of a house to be built: It needs to be 2 stories and have a big kitchen, open concept, 4 bedrooms. Something like that, yes? How long will that take? I couldn't possibly say! Well, just give me a range. Etc. So the plane lands and the architect wonders exactly where he is. This is a plot in a forest. Before we can begin we need to clear these trees and get plumbing and electricity hooked up... Hey, you didn't mention any of this in your estimate! Now we are months behind schedule but the groundwork is finally laid. We are really behind the 8 ball schedule-wise! Just do a quickie job the rest of the way, ok? But when the architect goes to hire carpenters he discovers they only speak French! Didn't you know you this house is being built in France? I forgot to mention it. You speak that language, right? Well, figure it out. You are the architect after all. |
When the house is halfway built, we ask the architect to add a basement floor with temperature remotely controlled via a spotty WiFi signal. Oh, and a satellite dish on the roof too, after all we're practicing "agile architecture"!