Tuesday, March 20, 2007

End of a mISV: Lessons Learned #1

Stick with what you know. I've been working on the web and web applications since the beginning. Almost all of my professional development jobs have involved web applications or their backend interactions, and that is where 95% of my experience lies. So when I started ChimSoft, what made me choose to make a desktop app? Well, as I mentioned before, ChimSoft was originally an application for Automotive shop management. I started the autoshop program as a desktop application because I thought I really needed to learn WinForms to strengthen my skill set. And I had a customer in mind for that app, for whom a web application definitely would not work. Winforms did end up being the right tool for this job. At one point last year, I surveyed our customers about having a web version of ChimSoft. There was unanimous confusion and dislike.

If I had to give a primary reason for ending the development of ChimSoft, it would be the fact that it is a desktop app. For any new mISV's out there, if at all possible, make a web app! Desktop apps allow much more functionality and speed, but they are an absolute nightmare for support. Even with our relatively small customer base, there was always something that was not working on someone's computer. In my "lab" I had virtual machines that ran Win 98, ME, 2000, XP, and Vista with various configurations. I always ran through a battery of tests on those machines before deploying. But still there would be random issues with one person's computer. Norton is a problem. Novell gives a certain problem. Having a certain resolution made a problem. For some reason a 3rd party library breaks on 1/10th of the installs. The installer has a problem. Even though I tested on all of my friends, family's, and virtual PCs, there still were random problems that would pop up that require hours of support, troubleshooting and development. Sometimes after all that, you find out it's another program that's breaking yours. This is extremely frustrating as a developer, because it makes your quality look shoddy, yet a through test really was performed. Next, theres the problem of 50 people having 36 different versions. I had a built in "Check for Updates" feature, but few people explored this on their own, and I did not have it running by default. Since ChimSoft uses a database, keeping this schema updated was also a pain.

The next issue with desktop apps is that I had never done one before! So when I started adding advanced features such as DVR capabilities (To record chimney scanning video), or I was working on the interface, I had no original code to draw on, or interface experience. The result is that the ChimSoft interface has been rewritten several times to be the most usable. One positive of this is that because I did not have a "real windows" app to draw on, most of the reason people buy ChimSoft is that it is so much easier to use then the competition, who look very much like your typical programmer-design Windows app.

BTW this is not meant as a volley in the Web app vs Desktop app debate. I still think for this specific type of software, it MUST be a desktop app. All I am saying here is that I am not the best person to be working on such a thing, and I wouldn't doubt a "real" Windows app developer would enjoy working on this a lot more.

6 Comments:

At 1:34 AM, Anonymous Anonymous said...

Great post, Phil, and I'm looking forward to reading more of them! Not sure I agree with your recommendation that web apps are a better idea for new micro-ISVs. If you're hosting the app on your servers, then suddenly you're a one-man webhosting company (not my idea of fun). And as far as I can tell, hosted web app services are really hard to sell to people. I can't think of too many small ISVs that have been successful with this model (37signals, maybe?).

If you're selling a web app that people install on their own servers, then you have all of the same configuration support issues as with a desktop app. Plus you need to support multiple browsers, etc.

Finally, it may just be because I'm much more experienced in Windows desktop development than in web development, but it seems to me that desktop apps are a LOT easier to program than web apps. Ajax seems like an ugly hack to me, and the browser was designed to present documents, not applications.

I haven't explored it too much yet, but I'm really interested in the potential of WPF. Now that Vista is making the .NET framework ubiquitous, we may be near the point where it's very easy to write web-deployed applications that have all of the UI power and usability of a desktop app.

 
At 9:53 AM, Anonymous Anonymous said...

Your experiences seem more like a reason not to use .NET than not to use desktop apps.

I have to be honest here, I really really hope that people take you advice.

Customers want desktop apps and the less competition there is, the more money I make!

 
At 10:38 AM, Blogger James said...

Jesse: I agree that there is probably more profit to be made for new mISV'ers currently in the desktop realm. The profit route for web apps is still quite unsure at this point. And there are definitely just as many negatives with web apps, I guess the main difference is that I have the experience and codebase to mitigate many of those problems.

Anon: Ironically, .NET was the least of my problems. Not once did a customer complain about having to download the runtime (most people had 1.1 installed already). Back in the day I wrote a MFC game... just in time took to develop vs WinForms, I personally wouldn't consider that as an option. Would a Java or qT app solve a lot of the problems I had? Maybe, but you're still at the mercy of other people's PC configs.

 
At 7:47 PM, Anonymous Anonymous said...

Re; Phil's assertion that web is easier to support: With a web app software publishers don't have to figure out answers to questions of registration keys, upgrades, etc. It's just username and passwords and you've got full control over who and when uses the app. You only have one version out there so don't worry about supporting different versions and don't worry too much (except for browser compatibility) of supporting different OS and hardware.

All that said though: Ease of support is not a reason itself to go or not go with any given model. Hosted or desktop really depends on the users' needs and environment.

For our users, the hosted web model works great. They don't have IT staff (or if they do have an IT staff they don't want to deal with them because the IT staff has a long turnaround time or is costly), they don't have a network other than Internet connections that they use for email and Internet, they don't have a server room, or even sometimes are virtual teams without a physical office but still need to share information contained in one application. They often don't even feel comfortable installing anything on their machines. I've had a user tell us they came to us because their laptop died and he lost all his contact information because he never bothered to back it up. Small business people just don't want to deal with IT stuff and are happy to let us do it. Yet we still don't manage hardware, web hosting, backups, networks, etc. either. We have a data center company do all that for us.

 
At 11:19 PM, Anonymous Anonymous said...

Phil - great post and sorry to have gone off topic. Please keep up the great insight and thanks again for sharing your experiences!

 
At 1:51 AM, Blogger James said...

Hey Scott, I think you are right on point. The Web vs Desktop should definitely be decided by need. All I was trying to say, is that if all possible you should search out a product that can and should be implemented as a web app ;).

 

Post a Comment

<< Home