I was almost two years into a job as Senior .NET Developer when my boss called me into his office. “You should absolutely write some iPhone apps!” This was early 2009. He had just read about Ethan Nicholas striking it rich after releasing a free “Lite” version of his game, iShoot. “Ethan wrote this game without knowing any Objective-C before, and he was able to quit his job. You should give it a try.”
Part of me wondered about my boss telling me I should quit my job, but I really appreciated the encouragement to try new things. I thought it over for a few days and started to believe it could happen. I began reading about Objective-C, the iPhone SDK, and the design guidelines.
I still used a flip phone, but my wife had an iPhone. When she couldn’t find a good app to keep track of her hourly job, I volunteered to build a great one for her. I had about fifteen years of programming experience at the time; how hard could it be?
I ordered a Mac mini and dove in. After I figured out what the heck autorelease did, things went pretty smoothly, and the first version was ready to submit to App Review by end of June.
I thought I would just release the app to learn about the App Store. Maybe a few people would actually buy it.
HoursTracker went live in the App Store on July 12th, 2009. Surprised to see it getting some traction, I decided I should take HoursTracker a bit more seriously. I focused on adding features and improving the design. I also set up a “marketing website” and signed up for AppFigures. AppFigures helped me obsess over things like rankings, daily sales, and customer ratings and reviews.
Weekly revenue continued to grow. Lifehacker picked HoursTracker as the best time tracking app for iPhone. Apple made a short video about the app. It ranked above Angry Birds for a few days. People often ask “What do you do for a living?” Slowly my answer became “I’m an iPhone app developer.”
Six years later
It’s been six years since that conversation about iShoot, and I’m still working on making HoursTracker better. I keep a part-time .NET development job, 20 hours per week, but not out of necessity. My app brings in more money than I could earn with a full-time job. Many happy customers depend on HoursTracker every day. I made what I thought was a decent product, put it up for sale, and then I made it better. I didn’t know anyone in the press, my app was never on the App Store front-page, and nobody in the community had ever heard of me. That stuff helps, I’m sure of it, but it isn’t the only path to success.
As an individual developer, I read many blogs and listen to podcasts to keep engaged and in-tune with the happenings in the industry. Recently I’ve had a few conversations with Jeremy Olson from Tapity, an app marketing whiz who does a great job sharing with other developers. We were discussing freemium business models and community morale when he suggested I write about my experience. Obviously, my perspective is unique to my situation, and timing is a factor for every business. But, having benefitted from the knowledge others have shared, I’m here to share my advice for making a living on the App Store.
When I need something in everyday life, say, a light bulb, I just go into Home Depot. I can buy anything on the shelf worry-free. If I get it home and it has a weird blue-ish hue or something, no problem — I take it back to the store and exchange it for a different one. I haven’t wasted my money. Retail has worked this way since I can remember. But, this is not how things work in the App Store.
While refunds are possible in the App Store, the perception is that if you buy something and it isn’t what you wanted, you’ve wasted your money.
This truth goes all the way back to 2009 with those “Lite” apps: Users prefer to download an app for free, and maybe spend money when they are sure it is worth it to them. As developers, we often bemoan the low prices of apps. We say “Come on! It costs less than a cup of coffee!” But, if we’re being honest, that’s a false comparison. People spend their money on coffee every morning knowing what they are getting. The fact is, people don’t buy unproven goods with no guarantees. It’s not about the price.
Software typically solves this using trials and/or money-back-guarantees. These techniques have proven to be the best approaches for both developers and customers. They are what we have in retail, what we have in software outside the App Store, and what we have in services. It’s not a one-size-fits-all solution, and some products really can’t be sold that way (just as some specific real-world purchases are “final”), but this option wants to exist.
There’s only one problem with trials in the App Store:
2.9 Apps that are “demo”, “trial”, or “test” versions will be rejected.
This is App Store Review Guideline 2.9. This means we can’t have our app say “Thanks for trying our app! To continue using it, tap Buy. Otherwise, please uninstall this app.” As long as Apple has this rule in place, developers have to find another way to serve users while staying in business (important if we want to continue serving them). This means some useful level of functionality must be permanently free in every app.
It is easy to accidentally give too much away for free.
Why would a user purchase an app if it does everything they need for free? Some of them might, just to support the app, but most will assume you’re making money some other way (ads? data-mining? VC?), or just not even think about it at all. And that’s fine, our business needs are not our customer’s problem. But still, I’m doing this instead of something else. Namely, taking a full-time job. If I’m not doing as well or better as I could with a job at BigCo, then I’m being irresponsible with my time. So, how do we make a living when our product must be permanently free to use?
One approach is to put ads in your app. The free edition of HoursTracker shows banners from iAd. But for HoursTracker, I know I’ve done a great job when the user spends the least amount of time in my app and yet still tracks their time accurately. That’s not good for an ad-supported product. So, if I’m trying to make more money from ads, then I’ll be working against my customer’s needs and thus my own best interests. And, ads don’t encourage people to upgrade (since most of the apps they use are filled with ads: Facebook, Twitter, YouTube, Google), but they do create a perception that this free app is ad-supported. When ad revenue is less than 10% of total, that perception is not helpful.
Another approach is to sell premium features. For some apps, this is a great choice. Maybe you’re selling a painting app. You could probably sell extra brush types just by giving users a sample canvas to try them on and putting a big Buy button in the corner of the screen. But, if your app is differentiated by superior execution of core features, you don’t want to put any of those behind a purchase.
You want to showcase those features so your prospects can see why your app is great and decide to become your customers.
There are great ideas on the horizon for HoursTracker that may be a good fit for one of those approaches. But, not currently. What makes HoursTracker a great app is that it is easy to time your work or enter your time manually, and it does a great job with all the housekeeping and reporting around that data. Ease of data entry, ease of reporting. That’s “Great Productivity App 101,” right? So how does HoursTracker lead users to a purchase?
HoursTracker prospects have access to all features of the app. After they’ve entered a couple of weeks of time entries, they’ll know if the app is something they want to pay for. One can continue using the app without making a purchase, but this language creates an understanding that you’re expected to buy the app if you’re satisfied with how it works for you.
Some people install the app, experiment with it briefly, and know pretty quickly if it suits their needs or not. Others choose to live with it for a few weeks and make their decision slowly, often trying several apps simultaneously. The goal is to make sure the app is a known quantity, just like that morning coffee, before making a purchase decision.
Because HoursTracker has been in the App Store since before In-App Purchases were introduced, there’s a pay-up-front version of it still available in the App Store. Let’s see how the revenue distribution has changed over time:
The direction is pretty clear. That 36% revenue from the paid version is actually still quite high. Likely some customers are not finding the upgrade option in the app and are instead returning to the App Store to upgrade. When that’s fixed, I expect the split will be more like >90% In-App Purchase.
A few words about pricing
Pricing is dynamic. App Store dynamics change (search, rankings, policies), shoppers change, competitors change. Everything is constantly changing. Having an app in the store for so long, I’ve witnessed pricing trends in my app’s category. Sometimes, it was better to have a low price. I got more downloads for my app, and that helps visibility and generates more word-of-mouth. Other times, visibility is reduced for apps like mine, and a higher price is better to keep the app viable.
The price elasticity of your app is affected by the environment in which it is sold, and that is always changing. Test, re-test, and then test some more.
My advice: Try a price reduction promotion to see if a lower price yields more revenue. If you can stomach it, let the discounted price stand long enough to get a feel for network effects. Try the opposite — check if increasing the price works better. Re-test previous pricing tests from time to time. What failed before could work beautifully now. Don’t get hung up on what you think the price should be. Do what works, and experiment often.
Six more years
There’s been a lot of talk about how indie developers can’t make any money on the App Store. It’s been said that being indie is just working extra hours for no pay. That we are better off working a regular job.
Well, I think a lot of us are out there, quietly doing just fine. HoursTracker had its best year ever in 2014, and five years of best ever years before that. If you can solve an important problem in a way that resonates with a sizable group of people, you can find success. There’s always room for a fresh take on an already well-served problem, too.
Every app idea is different, but with the right mix of passionate execution, deliberate strategy and agility, I think indie developers can thrive in today’s App Store. Here’s to another six years!