There’s a couple of issues I’d like to address with this article
- First impressions might be the last
Many who try out software might only use it once or twice before discarding it judging it to be of “no use” due to annoyances and “small” issues and never coming back.
That makes providing a polished experience with everything from installation, getting started etc to the actual interface very very important.
- User-driven developement
Iterative developement is clearly the best way to develop software, no one is going to design and build the perfect software in one fell swoop. Getting feedback and bugs reported can be very useful. However letting the users drive your development is usually a big mistake.
First off users lack what you might call the “cohesion of the design” that the designer has, you can’t build software to please everybody but need to inflect the user interface to avoid builing a frankenstein hybrid between a car, truck and landmower that no one wants. What you chose not to put into your application is more important than what you put in.
Secondly, to paraphrase Steve Jobs “The user doesnt know what the hell he wants”. You should never ask a user what he wants, only what problems he has, and what goals he is trying to achieve. Then it’s up to the designer to come up with a proposal and then perhaps get feedback on it. Start out with a smaller focus group for feedback before releasing it to everybody.
- The cost of doing major redesign/refactoring once you ship is exponentially higher. If you ship your product and then realize you left out some important piece of architecture or concept it will be very hard to implement, first you have to convince the powers to be that you should be allowed to do it, and then handle the users who might have gotten used to the interface and then provide version compability.
Software in development is agile (with the right designers/programmers), shipped software is rapidly solidyfying concrete.
- Aren’t we tired of software that over promises and under delivers? Nowadays it’s almost the default to start hyping your software long before it’s released, release a crappy and/or or buggy alpha and then spend two years before the application is finally “decent”. Meanwhile only the most dedicated users have stayed around.
One day someone is going to release a unhyped piece of well-tested and innovative software and I hope I’m alive to see it
- Programmers aren’t designers. This is a delicate subject sure to piss of alot of people but sadly it’s through. Most programmers can’t design, but most think they do. It’s unfortunate that alot of software is built without some kind of interaction designer ever been involved.
You only have to look at alot of software to see that most maps more clearly to the programmers vision of doing tasks than the users needs and goals. There are a few exceptions, programmers who also can design, of course every programmers thinks he is one of them (even me) but must aren’t.
Get a good iteraction designer, it will make a world of difference
On the other side, designers who lack understanding of technical issues and possibilities won’t be able to do the most optimal design either, and unfortunately technical adept designers are about as uncommon as programmers who can design.
So to summarize my take on it. No software will ever be perfect, but be sure it’s polished and “conceptually” finished when you release it. It’s always better to release a little later and better than “on schedule” and flawed. That’s how you build user loyalty and not get content user but passionate ones.
Never ever ever release sucky software because that will be it and no one will care enough to give it a second chance.
(Sorry for the rant)