Brian Andreas is one of my favorite artists; in one of his books he writes "In my dream, the angel shrugged & said, If we fail this time, it will be a failure of imagination & then she placed the world gently in the palm of my hand."
Capers Jones (Patterns of Software Systems Failure and Success) and Robert Glass (Software Runaways: Lessons Learned from Massive Software Project Failures) have both detailed various kinds of failure modes in software-intensive systems. In my experience, when complex software system development fails, it does so for one of four reasons: a failure of imagination, extreme overengineering, a benign neglect and lack of involvement of the needs of the system's various stakeholders, and a failure to grow the system incrementally and iteratively. As a recent example of the latter kind of failure, the FBI's Virtual Case File looks like it will be scrapped, with a few hundred million gone to waste.
While on this riff of artists, one of my favorite directors/animators is Hayao Miyazaki the genius behind such wonderful films as Spirited Away. In a recent interview in the New Yorker (January 17th, 2005, page 69), Miyazaki's approach is described as uniquely Japanese: "In traditional Japanese architecture, you start with one room - maybe the alcove, where you hang some pictures. You spend a lot of time tying to pick the right shelves, the right little pillar, what kind of handles the drawers will have. Only when you finish that room do you worry about the next. In the West, you start from the general and go to the specific. A Hitchcock movie might start off with a panorma of the city, and then a house, and then the stairway inside. If you're a Japanese filmmaker, you might start with the railing on the stairway."
For the software architects who read this blog: do you tend to start with the city or the railing?