Too Many Buttons
Software usability is broken. Good design is the key to the financial success of companies like Apple and Google, and it is inevitable that the software industry as a whole will start doing product design properly.
I have been a Windows programmer for over 12 years, and I recently have had to start using Vista for reasons beyond my control. I am pretty furious at how badly designed the software is. I am not talking about the engineering of the product, I mean the user experience. Some of the poor design choices in Vista and recent Microsoft products include:
- putting buttons on every corner of a UI.
- nesting toolbars, and tabs, so that the user no longer know what they are doing
- hiding the menu
- changing the options on the menu each time it is opened
- mixing and matching fonts and colors
- too many different kinds of controls
- completely changing the UI when a user navigates a directory structure
- nagging the user incessantly about downloading every incremental release whether they need to or not
- property dialogs with a list of nearly a hundred options
- making strange things happen when you accidentally hit shift or ctrl twice in a row.
- not allowing undo to work in a text entry box
- displaying error codes
- telling users to contact a non-existent administrator
- asking "are you sure" three or more times in a row
- grabbing the keyboard input for a dialog, while the user is typing
The problems that Microsoft encountered, is the same as for every other software company:
- Engineers have too much say in product design
- Good software design is expensive
- Planning and design is done primarily at a feature level rather than product level.
So for those making the decisions at a corporate level, having better design requires two things:
- Accept that good product design is going to have a significant cost. You are going to have conduct lots of tests, and create design teams. A design team should consist of a mixture of design specialists and engineers. This can help keep the group realistic, and prevent the development team from revolting.
- Remove some of the decision making from the development teams. When they have the power to veto or modify designs, things quickly deteriorate into the path of least resistance (e.g. Friday afternoon features).
- Encourage the design teams to take a whole picture view of how all the features in the product fit together.
The end result should be happier customers and bigger market-share.