About a year ago, I came to a very enlightening epiphany as a developer: building a desktop app sucks. I was writing the application in C#, thinking I was ahead of the times using a modern and advanced language. While C# is great, my execution of it was well behind the times. I was creating a Windows Form application, all well and good when developing on my local machine. However, when it came time to deploy my application, my brain practically exploded from all the hurdles I had to overcome. It wasn't until after this process that I realized how much I hated (most) desktop applications. Here are just a few of the problems I ran into.
Distribution – How should I get my great app to the populous? I could have been old school and put it on a CD and shipped it to people, but even just typing that sounds painfully slow. So instead, I threw it up on a website for download. That is great except for the fact that browsers like Chrome will warn users if a file hasn't been downloaded very often. So everyone just thought I was just trying to give them a virus. Lovely.
Installation– This was one of the worst issues I had throughout the whole project since it differed from machine to machine. Even though the app was built for Windows, everyone has a slightly different environment. Some have XP or Vista or 7. Some had .NET installed while others did not. Some had a different version of SQL Compact pre-installed on their machine. The list could go on and on. Sure I could have spent an extra 30 hours on packaging and deployment, but for a simple app like mine, I simply didn't want to take the time to learn and implement a huge step like that.
Accessibility – This can go hand in hand with the above problem. After all my hard hours of work, there was one big gut punch that my tunnel vision did not anticipate: not everyone has a Windows machine! All of my Mac users were left out to dry. Have a mobile phone or tablet? Too bad. Only big, bulky, inconvenient Windows machines could run my meager app.
After it was all said and done, it was a huge time sink that amounted to very little deliverable product. I learned a lot (aka, wasted a lot of time) on the project, and can see the silver lining. I just wish I didn't have to learn the hard way! Since then, I've scraped the project completely and started from scratch. Now it is an MVC web application which is much easier to maintain, update, and deploy. It can be accessed by any device with a browser and is thus much more readily available to all. Ahhhh, thank you browsers (except for you IE, you’re still horrible).
My experience has led me to envy great desktop apps like Spotify, FileZilla, and GIMP, but it also has taught me to avoid them when possible. I would highly recommend you do the same! There really isn't much you can’t do on the web nowadays in terms of applications. So the next time you install something on your machine, think to yourself “Can I find an alternative online?” Chances are, you can, and your experience will be much better because of it.