Really good mail from Bill Nottingham about target markets for Fedora. It is pretty crazy how much software in general is written without thinking about who will be using it, why they’ll want it, and how it will be used.
A current example of the wrong way (in my opinion) to create software is OpenSolaris’ NetworkManager-type program. They call all this work design, but really almost all of it is the engineering implementation design, especially this thread. It has very little to do with how people use the software; there are some sentences to the effect of “oh yeah, there will be GUI popups or something”. The UI page doesn’t exist yet even. To be fair to them, maybe I’m looking in the wrong place, but I didn’t see any non-engineering design.
Having been next to Bryan, Seth and Dan when they were working on NetworkManager, I saw firsthand how a good interaction design and an understanding of the target market is key. For example, in the initial design, they made a decision not to support static IP addresses. That may seem crazy to a programmer, but the target market (Fedora wireless users) basically never uses static addresses. Thus, no need to support them, and the design became much simpler.
Nowadays, I wouldn’t even try to write real software unless I had a good interaction designer on the team. From the start. Not like someone pulled in 70% of the way through to double check the widget spacing on all the incomprehensible popup dialogs I’d created.