And it began.... After our initial talks about the product, we got together for a big requirements gathering. Since the first version would be targeted primarily at Chimney Sweeps, I asked of our Chimney Sweep what he would want....what he would need. This was in January. I, like most people today want INSTANT results. I figured I could put together what he was asking for in 2 weeks (Using .NET), since I my AutoShop program already had much of the basic functionality he was requesting. I figured we could test it for a month and begin selling a month later. I set an initial target date of March 1st because there was a chimney sweep convention mid-march that we could sell it to. Well... it didn't quite work out that way, and boy am I glad. While I did have a functioning "1.0" product, the quality of which was similar to many things I see "just being put out there" by developers these days, it didn't go out. Compared to the 1.0 we are actually releasing next month, I feel much better about the product we are selling now. It has lots of "wow" features, and is as good as some of our competitors 5th or 6th versions.
First impressions mean everything. Perhaps if we had gotten our 1.0 out the door last year we would have made a sale or two. But I think most people would have been highly unimpressed with our product, and we still probably would have made the same changes we have in there today, so people would have constantly have been updating. Constant updates on a web app are no big deal, it doesn't require much from the user. But users do NOT want to update their software frequently, if ever, on the desktop. Techies like updating, or at least don't mind it, because its like getting the newest model of a car for free. But non-techies (whom our customers mostly consist of) just want the software to work out of the box. If it doesn't work like they expect the first time, they will not purchase from you again, and assume all future versions are similarly bad. I also go by that line of thinking. Netscape 4.7 and early 6.0 were so terrible, that even though the new Netscape is essentially Firefox, I refuse to try it because I assume its nothing but slow, buggy junk.
When you release desktop software, assume its impossible to get someone to update their software. That means you can not be casual about small bugs...everything must work from 1.0. Thats the next lesson... always get a wide variety of people to test your product. What is intuitive to one person may be completely incomprehensible to the next. It never ceases to amaze me how after weeks and months of usability testing, how a new user can find something or point something out that we missed in all other rounds. Also be sure to test on a variety of computers. Using Virtual PC or VmWare is not good enough. I tested our later betas on every Windows OS using Virtual PC, and it worked with flying colors. (Well Win98 pointed out a couple things that needed to be tweaked) But low and behold, on Win XP computers running Novell, a new bug appeared. A bug that would not appear anywhere else, but made the product almost not work at all in Novell. Users will have computers loaded with spyware and viruses, they will have AMD's, they will have low ram, low hard drive. Each of these situations can present unique problems that YOU will be blamed for. "This program runs slow", could mean their computer has never been defraged and is filled with spyware. But the user does not know this. That is one reason we encourage our customers to buy PC's from us. Selling PC's and laptops is a low margin, high frustration business. If I had my choice, I wouldn't mess with the hassle, but it is more important to us that our customers have the best experience possible.
So in conclusion, don't rush things. Take your time. As Eric Sink says, we are craftsmen. It is absolutely worth spending the time to polish and perfect your application, because you never know what little problem or feature is the difference between a sale and a return.