Why I'm Done Making Desktop Applications

Posted on September 5, 2009 by Patrick in Uncategorized

//

[Editor's note: now available in Belorussian translation.]

Breaking up has always been difficult for me.  I tend to fall in love with being in love, and continue a relationship well past the point of futility.  And so it is with my oldest love, writing desktop software.

I’m sorry, desktop apps.  We just don’t have a future together anymore.  Its not you, its me.

A bit of background: for the last three years I’ve sold Bingo Card Creator, a desktop app which pretty much does what it says on the tin.  It has gone from being a passing fancy to a rather lucrative hobby to, well, a bit more than that over the years.  As I gradually became more invested in the business of writing desktop software, I got more and more snippy about the periodic desktop versus webapp flamewars, and defended the ascendancy of desktop software.

What Changed My Mind

Over roughly the same period my day job has changed and transitioned me from writing thick clients in Swing to big freaking enterprise web apps.  I’ve learned SQL, Rails, etc and used them to fairly decent effect in selling Bingo Card Creator, which is a Swing app (if all you have is a hammer…).  This summer, I decided to try stepping my web programming skills up a notch, and released a web version of Bingo Card Creator.  It has exceeded all my expectations: in ease of writing, in features, in sales, in support burden, in marketability, etc.  In game theory terms, it strictly dominates the desktop version, when seen from the eyes of the developer at any rate.

If I were starting out today, I would, without a shadow of a doubt, write a web app instead of a desktop app, for these reasons:

The Shareware Funnel Is Lethal

I have never used the word “shareware” to describe Bingo Card Creator, because I think that it is an anacronism that my customers do not understand, but among fellow technically inclined people it describes the business model succinctly.  Someone visits your website, downloads your trial, and hopefully purchases your program.  That process is called a funnel, and if you break it down into concrete steps, the shareware funnel is long and arduous for the consumer:

  1. Start your web session on Google, like everyone does these days.
  2. Google your pain point.
  3. Click on the search result to the shareware site.
  4. Read a little, realize they have software that solves your problem.
  5. Mentally evaluate whether the software works on your system.
  6. Click on the download button.
  7. Wait while it downloads.
  8. Close your browser.
  9. Try to find the file on your hard disk.
  10. Execute the installer.
  11. Click through six screens that no one in the history of man has ever read.
  12. Execute the program.
  13. Get dumped at the main screen.
  14. Play around, fall in love.
  15. Potentially weeks pass.
  16. Find your way back to the shareware site.  Check out price.
  17. Type in your credit card details.  Hit Checkout.

I could go into more detail if I wanted, but that is seventeen different opportunities for the shareware developer to fail.  If you don’t catch the download in the 30 seconds people give your website, no sale.  If your customer can’t find the file after they download it, no sale.  If it requires a JRE upgrade and after restarting their computer they’ve forgotten what they were working on, no sale.  If they play around with it, close it, and can’t remember how to open it again, no sale.  If they get to the sales page and can’t operate your shopping cart, no sale.

Is it any wonder why shareware has typical conversion ratios of 1% or less?

Web Applications Convert Better

A web application doesn’t have to be downloaded or installed, never requires a restart, and never requires a contextual change just to open up a purchasing page.  As a result, the conversion ratio is higher.  Much higher.  Here are the actual stats from Bingo Card Creator.  I’m looking at conversions from my best performing AdWords campaign only, because that minimizes sources of variation like, e.g., the different types of traffic I’ve gotten in the last 2 months (while the webapp was available) versus in the last three years.

Visitor to Free Trial:

  • Downloaded: 18 ~ 22%
  • Web App: 22% ~ 26%

Trial to Purchase:

  • Downloaded: 1.35%
  • Web App: 2.32%

This is essentially the same application.  If anything, the online version has less features, and it has 2 months of development whereas the downloadable application has had 3 years of improvements made to it.  Yet the online version outsells my desktop application almost two to one.

Your AdWords Strategy Is Very Sensitive To Conversion Rates

A portion the numerical disparity is because I have started to react to, e.g., the difference in conversion rates of advertising and promote accordingly.  A sale of either nets me the same amount of money, about $28.  However, if you break out the math on how much AdWords costs per sale (cost per click divided by conversion rate to trial divided by conversion rate to purchase):

  • Downloadable version: $20 AdWords CPA
  • Web App: $9 AdWords CPA

(You’re welcome, Google.)

This doesn’t just save me money, it helps me trounce my competitors.  For example, if my competitors are selling downloadable software, and they are equally as skilled as I am about writing AdWords ads and optimizing their websites, then it should also cost them about $20 a sale to advertise on AdWords.  (This explains why I never see ads for the competitors who try to gain volume by undercutting my price — if you’re going to price at $23.95, you’d better be a crackerjack SEO because you simply cannot afford to outbid me in AdWords.)

Decreasing my cost of customer acquisition by over half lets me bid more for my AdWords to gain additional volume.  For example, for the longest time my AdWords strategy was more or less monetizing traffic other people couldn’t be bothered with, while larger brands producing e.g. printed bingo supplies went after the head terms like [bingo cards].  With vastly improved conversion rates, I might be able to advertise profitably on those terms, increasing my volume and making me very, very happy.  As it is, I have walked up bids a bit and am getting 25% more inventory than I usually do.

Web Applications Are Easier To Support

Many desktop developers hate customer support with a burning passion in their soul.  I actually enjoy it, but I enjoy making it unnecessary even more, as there is no customer support experience so good as avoiding the problem in the first place.

Support requests from last 50 customers:

  • Desktop Application: 15
  • Web Application: 3

I’ve had three years to streamline the website, purchasing process, and application for my desktop app, and that has helped me greatly reduce the number of inquiries I get.  Even after all that work, the main culprits are pretty much the same as ever: installation issues, lost registration keys, and bugs present in old versions of the software that are still floating around download sites.

Web apps, by comparison:

  • Have no installation issues, because there is no installation.
  • Do not require registration keys.  (Technically, because I allow users to use both the desktop and web application, I issue them one — but it is immediately applied to their account via creative abuse of e-junkie and cookies.  Most customers get to use their software immediately without actually reading the bit in the email sent to them — or failing to read it, as happens quite often.)
  • Never have an accessible version of the software older than the most recent one.  By comparison, if you were to Google [bingo card creator version 1.04] (which hasn’t been distributed in, hmm, two years or so), you’d find it on hundreds of download sites.

The Age Of The Pirates Is Coming An End, Jack

I’m famously lackadaisical about software piracy, preferring to concentrate on satisfying paying customers rather than harming their experience with anti-piracy methods.  However, the existence of pirates is a stitch in my craw, particularly when any schoolmarm typing the name of my software into Google is prompted to try stealing it instead:

spacer You want to take a quick stab at how many pirates have circumvented the copy protection on the online version?  Bwa.  Hah.  Hah.

I once remarked to Paul Graham that the future of software was with pervasive integration with the server simply because that means that downloading the client doesn’t let you pirate the software any more than downloading Firefox lets you pirate Basecamp.  (Ironically, I made that point in a defense of desktop software as a business model.  Mea maxima culpa!  Theoretical utility of desktop software is one thing, but I can’t ignore what my numbers are telling me.)

Phone Home vs. Google Analytics

One of the curious traits among software developers is that, speaking as a group, we feel something like “I own what happens on my machine and nothing should happen without my say-so”.  This generally leads to a severe reluctance to “phone home” from the application to the developer’s server — even reports on very innocuous data like “Did I steal this software or not?” is often tarred with the label spyware.

On the Internet, privacy expectations have evolved a bit in the last few years.  The overwhelming majority of the public has been told that they’re being tracked via cookies and could not care less.  If you write a privacy policy, they won’t even bother reading it.  Which means that you can disclose in your privacy policy that you track non-personally identifying information, which is very valuable as a software developer.

  • What features of your software are being used?
  • What features of your software are being ignored?
  • What features are used by people who go on to pay?
  • What combination of settings is most common?
  • What separates the power users from the one-try-and-quit users?

Tracking all of these is very possible with modern analytics software like, e.g., Mixpanel.  You can even wrestle the information out of Google Analytics if you’re prepared to do some extra work.  You can do it in a way which respects your users’ privacy while still maximizing your ability to give them what they want.

Some people may be under the impression that users will tell you what they want.  Nope — most of them will assume you are like every other business they have ever dealt with, where their opinion doesn’t matter, and the software is offered take-it-or-leave-it.  And they just left it!

Things I learned about Bingo Card Creator customers which I never knew before I had an online app:

  • The most common word used in bingo cards is — ready for it — “baby”.  I completely underestimated the demand for Baby Shower bingo cards, and avoided making an official set for years.  As soon as I had the top ten word list (which was all baby shower words) I fixed that.
  • The more features I add to the software, the worse it sells.  (This is, needless to say, highly unintuitive to most software developers.)
  • Most customers purchase within two hours of signup, so it is absolutely imperative that their first use of the software exceed all their expectations.

Web Apps Can Be Customized Per User

Downloadable software pretty much has to treat every user identically by default.  There are very limited ways to segment users, and no way to report the results of experiments.  For web apps, however, if you have a halfway decent A/B testing library (like, say, the free one I wrote for Rails developers), you can experiment with having multiple versions of the application available concurrently, and see which one performs best.

The data collected by A/B testing has helped me:

  • simplify my options screens to avoid confusing users
  • improve the first-run experience
  • write instructions such that they’re easier to follow

In addition to changing program behavior randomly, you can segment your users.  I have only scratched the surface of how powerful this is, and it is already producing solid results for me:

Don’t treat your newbies like you treat your power-users. You have a database.  It records all their actions since the dawn of time.  Use it.  I have a couple very simple heuristics for “is probably still getting used to the software” and, if you are, the software treats you with kid gloves.  For example, it hides complex, seldom used options by default.  It gives you instructions to a degree that a power-user might find insulting.  (I don’t have the artistic skills to draw a little animated paperclip but I would if I could!  It looks like you’re trying to make a bingo card.  Need help?)

Give your customers a “credit” score.  I have a particular heuristic which segments users into four buckets.  It isn’t exactly FICO, but it does successfully predict conversion rates: they range from 10% in bucket A to 0.01% in bucket D.  Bucket C is interesting, though — they convert some of the time, but don’t seem to be getting quite the value out of Bingo Card Creator that Bucket A does.

I wonder if Bucket C would feel differently if they got a $5 coupon in the email.

Meanwhile, it looks like Bucket D isn’t very interested in paying me money under any circumstances, but if I had a scratch-my-back-to-get-it-free option, I could place it prominently on their dashboards.

Long Cycles Mean Low Innovation.  Short Cycles Mean Fast Innovation.

This sort of thing is very difficult to do with desktop apps, because you can’t reliably collect data on what approaches work, and you have the build/test/deploy/distribute cycle to worry about.  It takes months for a new version of the desktop application to hit more than half of my users, and I give out upgrades for free.

By comparison, I can literally have an A/B test coded, tested, and deployed globally in under a minute, for ones which are fairly low impact.  Relocating a button, for example, requires two lines of code, a SVN commit, and a quick server restart.  I start getting data immediately.  By comparison, doing that on my desktop app would require 15 minutes of building, then waiting weeks while the new trials percolated from my website to the various download sites, and probably unforseen issues on Mac OS X 10.4 because apparently in a past life I must have stepped on Pharaoh Jobs’ cat.

Recently, a desktop developer’s mailing list that I’m on commented that a release weekly development cycle is unsustainable, bordering on suicide.  As a desktop developer, I agree, it would break me.  As a web application developer — I have released 67 updates to Bingo Card Creator in the past 7 weeks, and this isn’t even my day job.  A button here, some textual edits there, seven A/B tests, etc etc, and pretty soon you’re looking at the magic of compounding 1% improvements.

Speaking of Magic

I love desktop applications.  I prefer them to web apps almost any chance I get. You can keep your Google Docs, Excel is superior in almost every way.

As a developer, I love getting permanent presence right in front of the user (on their desktop, naturally).

My customers love desktop applications.  They love the “physicality”.  They love the perceived security (the number of people who purchased backup CDs and then proceeded to only use the webapp is downright distressing to me).  They love that the application has first-class OS support, feels native, copies and pastes right, works with double clicking files, etc etc.

But at the end of the day, I’m an engineer.  I follow the numbers where they lead me.  The numbers say that sales in this August were 60% over those of last August, despite a major blowup with Google that should have cost me dearly.  All of my attempts to distill wisdom from the statistics have lead to one conclusion: the cumulative advantages of the web application, in my advertising, in my on-site experience, within the application, within my development process, and within my purchase funnel are just stupendously superior to the desktop app.

I’m sorry, desktop apps.  We had good times together, but we’re through.

[Edit to add: I'm going to continue supporting all customers of Bingo Card Creator, regardless of how they choose to get it. The next major release will almost certainly be its last. The webapp, and my future webapps, seem to be much better investments.]

This blog is about the business aspects of running Bingo Card Creator, a small software company. Want more great articles? I keep a list of my best work curated. A brief summary of the last few years is available here. If you like what you see, I encourage you to sign up for the RSS feed. Thanks for visiting!

spacer

About Patrick

View all posts by Patrick
A/Bingo makes the rounds
BCC 3.0 — Got a moment to beta test?

No Responses to “Why I'm Done Making Desktop Applications”

  1. spacer
    Alexei VInidiktov September 5, 2009 at 10:01 am #

    Wow, Patrick!

    Thanks for this major kick in the rear! I came to the same conclusions a while ago, but haven’t acted upon them until this moment. I hope now I can and will do that.

  2. spacer
    nickknyc September 5, 2009 at 10:10 am #

    i am looking forward to thoughtfully responding to this once i get out of a internet/cell services challenged area

  3. spacer
    Patrick September 5, 2009 at 10:41 am #

    I look forward to reading it, Nick. If you put it on your blog, drop me a line so that I can mention it. I’m patrick@ any of my domains or patio11 on Twitter.

  4. spacer
    Jose September 5, 2009 at 10:45 am #

    I agree it’s way easier to make a web app.

    Me too prefer desktops apps as a user.

    So that means there is a place for easy to make easy, easy to deploy everywhere(multiplatform) desktop apps that could use the network. Maybe the adobe AIR APIs will make it. Just creating an installer (and compiling) on two Linux distros, MacOsX,and two windows is hell.mmmm interesting, I never thought about it, we need a standard way of doing that.

  5. spacer
    Simon Strandgaard September 5, 2009 at 10:57 am #

    Thank you for sharing your story. Very tempting to follow in your footsteps because it’s really difficult to sell my desktop app. The apple app store concept has made the funnel much shorter, so it could be interesting to try code for iPhone.

    What about pr and webapps. If you have a desktop app you can announce new versions of your software. With a webapp this oppertunity for pr doesn’t seem to be there. How do you tell the world about it?

  6. spacer
    Jarvis Crofts September 5, 2009 at 11:25 am #

    Great post Patrick, really insightful.

    I particularly like a web app’s ability to circumvent piracy without taking a single thing from the paying customers. This is something that is going to be very valuable to developers and consumers.

  7. spacer
    Brian September 5, 2009 at 11:40 am #

    Um, I don’t really know how to say this, but wow, just wow and “thank you” too.

    Great blog entry, one of the best entries I’ve seen in a while (and I read a lot of good ones).

  8. spacer
    Taxicab Tom September 5, 2009 at 12:38 pm #

    Patrick, thanks, very insightful! I mean, I am doing webapps for a living for years, but I am preferring ‘physical’ desktop apps myself at the same time. Obviously it’s time to reconsider and act on what I knew already.
    Thanks for the hard data btw!

  9. spacer
    QuadQuadQuadQuadQuad September 5, 2009 at 1:24 pm #

    No one gives a shit, seriously, except others who blog and look at other blogs just to comment so the others can get comments back on their blogs to feel like people actually *care* about their blogs.

    In reality though, passer-bys just don’t give a shit why you’re done with A and switched to B.

  10. spacer
    Michael Griffiths September 5, 2009 at 1:27 pm #

    1) I completely agree with you.
    2) I wouldn’t count desktop apps out just yet.

    Why not? Because the core problem you identify is _conversion rate_. It’s harder to convert someone visiting your website to a paying customer for downloaded software than for an online web-app.

    There are other advantages, e.g. easy analytics.

    But with new software delivery platforms such as Adobe Air, .Net Web Apps & ClickOnce (latter now integrated into Windows 7 natively) & Silverlight Out of Browser – > and no doubt things I don’t know about, the difficulty to installing a desktop app cuts SIX steps out of your list of 17. Click install link, app downloads and installs instantly.

    And with these web-enabled frameworks (esp. Adobe Air and ClickOnce) you can have them report to the server on launch (check for updates) if the user is connected to the internet; making it somewhat more difficult to pirate.

    But hey, we’re 3-5 years away from decent adoption for any of that stuff. Right now, web apps are the way to go.

  11. spacer
    Patrick McKenzie September 5, 2009 at 8:37 pm #

    The Google translation of the above pingback is beyond awesome.

    Swedish:

    Jag slåss med näbbar och klor för att allt ska flytta till webbläsaren. Och här får jag bra eldunderstöd, och andra kloka tankar, från en tidigare desktop-kramare.

    Google:

    I fight tooth and nail for everything to move to the browser. And here I get good fire support, and other clever ideas, from a previous desktop-hugger.

    I think “previous desktop-hugger” is going on a T-shirt.

  12. spacer
    John September 5, 2009 at 9:06 pm #

    You make very good points. However I disagree with your conclusion that it is unwise to continue to make a desktop version of your program.

    To someone with an infinite supply of great ideas, this is the correct conclusion. Why waste time on less profitable activity? However, if a developer wants to focus on a something (“I am going to offer the end-all be-all of Bingo Card creation”), would it not be better to make a full “family” of versions of the program? The work to issue the app on another platform is less than the first. A complete line-up is a good selling point: a customer sees that you are fully invested in this lineup, and it provides more value if their registration gives the purchase of the desktop app and the online version. The profit return doesn’t see the same margins, but it’s a profit nonetheless.

    I think the proper conclusion is to take your situation’s information into consideration (as you obviously have, and have drawn excellent insight from), and prioritize accordingly.

  13. spacer
    Dennis Gorelik September 5, 2009 at 10:34 pm #

    Patrick, great article!
    More than 6 years ago demand for web development pulled me from desktop development into web, and I’ve never looked back since then.
    Web apps are much easier to scale, update, and track, and that seems to be much more important than better UI responsiveness in desktop apps.

  14. spacer
    Hernan September 5, 2009 at 10:35 pm #

    Great post! Me, I prefer web apps 99% of the time. Especially for “vertical” enterprise apps — web apps give less way for the developers to foul up the user experience.

  15. spacer
    Matthew September 6, 2009 at 12:45 am #

    I would be very interested to learn what criteria you are using to divide your users/potential customers into the 4 different conversion rate buckets you mention.

  16. spacer
    Mark McLaren September 6, 2009 at 3:16 am #

    One more benefit of Web Apps: People can try it without installing it. I suspect that for a lot of people, “Installing the software” is a relatively big commitment and means they have to un-install the software afterward, and many people have no idea how to do that.

    However, I’m not prepared to give up on desktop apps (and especially not mine!). I wonder whether you can generalize from Bingo Card Creator to web apps in general. That is, an email client or blogging editor would get better conversion rate as a web app, but a photo editing program or database query tool would not…?

    Also, the desktop version of Bingo Card Creator is missing a few tricks:
    1. When the user clicks the ‘Download’ button, they are given the option (in IE) to ‘Save’ or ‘Run’ – some won’t know what to do so will just give up. They need big, clear instructions for what do do. For example: www.solaraccounts.co.uk/download.php
    2. When they do run the setup.exe file, they get a big nasty box with a red cross saying ‘The publisher should not be verified’.
    3. The UI of the desktop app is ugly. Sorry, but it has to be said – the default Java Swing UI looks like a 10-year-old’s homework project.

  17. spacer
    Jordi Cabot September 6, 2009 at 5:10 am #

    I think it is important to distinguish between web applications and vendor-hosted web applications (SaaS). The first scenario (the web application is installed

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.