Developing Perspective

#49: Addressing Demand


00:00:00   Hello and welcome to Developing Perspective.

00:00:03   Developing Perspective is a podcast discussing iOS development, Apple, and the like.

00:00:07   I'm your host, David Smith. I'm an independent iOS developer based in Herndon, Virginia.

00:00:11   Developing Perspective is never longer than 15 minutes and is recorded about three or four times a week.

00:00:15   This is Show #49. Let's get started.

00:00:18   All right. I have a couple of small topics to start off today's show with, and then I'll move into the main topic.

00:00:23   To start with, I was just talking about--I wanted to talk about one of the great features

00:00:27   and additions to the iOS developer experience that was added in iCloud.

00:00:33   And it's something that you may not actually have been aware of,

00:00:35   and so I just wanted to point it out.

00:00:37   For a long time now, iTunes Connect, which is where you do all of your app management,

00:00:41   is a portal where you can download crash logs.

00:00:44   And back in the old days, these were uploaded via iTunes

00:00:49   when someone synced their device and then hit a button that said,

00:00:53   said, yes, go ahead and send diagnostic and stability

00:00:57   reports or something like that.

00:01:00   And in general, in my experience back in the day,

00:01:02   that almost never happened.

00:01:04   Every now and then, you'd get a report in there,

00:01:06   but you could have millions of downloads and have 10 reports.

00:01:10   And it just wasn't especially helpful.

00:01:13   But one of the new things that's kind of fun in iCloud--

00:01:17   and this was added in iOS 5--

00:01:19   is that now, when the user is setting up their iCloud

00:01:22   account, one of the little check boxes they push is, you know, "send Apple diagnostic

00:01:27   information," I think it is. And I think by default it's enabled. And that, if they check

00:01:33   that, then as best I can understand, crash reports are then sent automatically over the

00:01:38   air when your app crashes to iTunes Connect. And as a result, I found the crash report

00:01:45   in iTunes Connect to be so much more valuable. So I definitely recommend if you're, you know,

00:01:51   sort of getting ready to do an update, looking for some bugs,

00:01:53   looking for some things that may make your app better,

00:01:56   that's definitely a place to go.

00:01:57   And basically, you just go into iTunes Connect.

00:01:59   You click on the application.

00:02:00   You click on a particular version,

00:02:03   because it's been done by version.

00:02:04   And then over in the top right corner, it says Crash Reports.

00:02:07   And you just kind of browse there.

00:02:08   And you can download them.

00:02:10   And just always, another note is to make sure

00:02:13   that you always keep the desim file whenever you do a build,

00:02:16   especially one that you're going to submit to the App Store.

00:02:19   This is a little debugging symbols file.

00:02:21   If you just do build in archive, it'll

00:02:23   be sort of stored automatically.

00:02:24   But make sure that you keep that somewhere safe,

00:02:27   because you can't symbolicate your crash reports,

00:02:31   and they'll be kind of meaningless otherwise

00:02:34   if you don't have that decent file.

00:02:35   So just make sure you keep it.

00:02:37   And then basically, you can just download them,

00:02:39   and you go into Xcode, and you can

00:02:40   look through all the crashes.

00:02:42   It'll just give you stack traces of where the problems are.

00:02:45   Evaluating stack traces is a bit of a black art.

00:02:48   sometimes it feels like, because you're--

00:02:51   maybe 50% of the time, it's straightforward.

00:02:53   You look at it, it's a stack trace.

00:02:55   It tracks back to a line in your code

00:02:57   where you're doing something silly.

00:02:58   You're putting a nil object into an array.

00:03:00   You're doing something that's just clearly not going to work.

00:03:04   And you see, you can go through and you fix those.

00:03:06   And then you'll end up with the next case.

00:03:09   And these are the crashes that you look at,

00:03:11   and you're like, that's got nothing to do with my code.

00:03:15   You look through the stack trace, and it's all in UIKit.

00:03:18   It's all in Foundation.

00:03:19   And so then you're kind of like, huh,

00:03:22   is this a bug in the framework?

00:03:24   Or is this something that I'm causing the framework

00:03:27   to have a problem?

00:03:29   And more often than not, it's the latter.

00:03:31   I very rarely found actual crashes in the OS.

00:03:34   I'm sure they exist, but nine times out of 10 or 99 times

00:03:38   out of 100, if you see a crash like that,

00:03:41   you're doing something sort of wrong with the frameworks.

00:03:46   And it's likely documented that what you're doing isn't going to work.

00:03:51   An example of this is, say, where you don't

00:03:53   set the delegate of something to nil when your object is deallocated.

00:03:58   Simple example.

00:03:59   Something like that, where the crash will actually potentially

00:04:02   happen in their object when they start trying

00:04:04   to access something in your delegate.

00:04:06   But you didn't tell them otherwise.

00:04:09   So that's just something I wanted to--

00:04:11   I ran into it yesterday when I was doing a big update, kind of my bug fix

00:04:14   update for audio books.

00:04:16   And I noticed that--

00:04:17   I was like, oh, you know, I've got these vague crash reports

00:04:20   from users, and every now and then they'll send in a crash

00:04:23   report.

00:04:23   But I was like, oh, I wonder if iTunes Connect's gotten any

00:04:25   better, and it definitely has.

00:04:27   So definitely check that out when you're doing your next

00:04:29   update, and you may be able to catch and crush a few bugs.

00:04:33   All right, second thing, and it's kind of vaguely related,

00:04:36   is a trick that I recently started doing to kind of get a

00:04:40   sense of how many users are using your application, or

00:04:45   have your application installed on their phone, if you have an app like

00:04:49   some of mine that have been around for quite a while,

00:04:52   it's sometimes a little weird and intimidating to think like, "Well, how many of these

00:04:56   people are actually using it?" If you say

00:04:58   you had a million people who download your app,

00:05:01   is that a million, you know,

00:05:04   is 999,000 of them still using it, or a thousand of them still using it?

00:05:09   And it's kind of helpful to judge

00:05:11   how much time you want to invest in the app, how much time you want to

00:05:14   sort of put forth, just kind of good for curiosity. And this is actually one of those few things

00:05:19   where the Android market actually does a really good job of this because they track this for

00:05:23   you and they'll tell you the number of active installs and things like that.

00:05:27   But a good proxy that I recently started using to judge roughly how many people have your

00:05:32   app installed is if you go into your iTunes Connect sales reports, you get sales, you

00:05:39   get in-app purchases, you get free downloads, and then you get updates. For a long time

00:05:44   I thought updates was just kind of useless.

00:05:46   You know, Apple's just throwing this number at you that seems kind of arbitrary.

00:05:49   It's the number of people who installed an update for the application the day before.

00:05:53   And I was like, "What am I going to do with that?"

00:05:56   Now what I kind of view that as is I take, when I submit an update,

00:06:00   I take a look at say roughly say a week's window of updates after I do,

00:06:04   you know, after my point release is approved.

00:06:08   I look at that and I say, "Huh.

00:06:10   what amount, what proportion of my users updated.

00:06:16   And that's probably a reasonable proxy for how many users still have your app installed

00:06:20   on the phone.

00:06:21   It doesn't mean that they're actually using it, they could just be hitting update all,

00:06:24   but it's probably a reasonable proxy for that's how many people have it on their device.

00:06:29   So I just kind of wanted to throw that out there.

00:06:31   I think it's kind of an interesting statistic.

00:06:32   All right, and so now I'm going to move into kind of the main topic for today's show, which

00:06:37   is specifically about pricing.

00:06:39   And this is motivated by just a refrain I've heard quite a few times recently.

00:06:44   A lot of it's by sort of older, old is probably the wrong word, but people who've been making

00:06:51   software before the App Store, people who used to make their living selling software

00:06:55   directly or those types of situations who complain about pricing in the App Store.

00:07:03   And it's one of these funny things that I kind of, you know, it's just a topic that's

00:07:08   been talked about a lot and I don't want to belabor it too much, but I have kind of an

00:07:12   interesting perspective that I hopefully, well I hope it's interesting, is a lot of

00:07:16   people I think sort of confuse two uses in the English language of the word "value."

00:07:23   Saying, "Oh man, it's the race to the bottom, devalues my software."

00:07:28   And it's one of those awkward things where, just kind of like with "free" in the English

00:07:32   language, there's "free" as in "beer" and "free" as in "liberty."

00:07:36   the same word has two very different meanings. And you can take value as sort of the intrinsic

00:07:42   value, the worth, the excellence, all those other kind of attributes of it that kind of

00:07:49   make it awesome. And on the flip side, value is also like a business term that's a measure

00:07:55   of sort of revenue, of income, of money, of what the sale price for something is, if you

00:08:02   were to look at it as the value of a house.

00:08:06   And I think often those two terms get conflated in a way

00:08:10   that's not productive, that a lot of people say, well, if I

00:08:13   make the price of my app low, I will devalue it.

00:08:19   Now what they're really saying is by lowering the price, they

00:08:22   may lower a potential customer's perception of the

00:08:27   quality of their software.

00:08:29   So that's a fair statement, and that may be true.

00:08:32   That's certainly another interesting part of it.

00:08:34   But I think often what they say, when they say that, what they mean

00:08:38   is, if I lower my price, I will make it seem cheap, and I won't make money.

00:08:45   And it's a funny thing.

00:08:46   You can look at it a couple of different ways.

00:08:48   You could say, well, I want to make as much money as I can,

00:08:53   which is a perfectly reasonable, good capitalistic approach

00:08:56   to selling software.

00:08:58   And if that's the case, it seems like really at the App Store

00:09:02   right now, especially on the iOS side, the best way to do

00:09:05   that is with a relatively low price, potentially even free,

00:09:08   and supplementing that with in-app purchase.

00:09:11   It allows you to address quite well the demand curve for your

00:09:15   application.

00:09:16   There are some people for whom the value or the price at

00:09:20   which they are willing to pay for your app is either zero or

00:09:23   close to zero.

00:09:24   And then you have this whole curve of people who, with

00:09:26   increasing amounts of a desire to part with their money.

00:09:31   And you can address that all within that purchase.

00:09:33   So there are some people who are going to have paid you $100,

00:09:35   or $20, or $30.

00:09:37   And then you have some people who

00:09:38   are going to have paid you nothing

00:09:40   and just looked at a few ads.

00:09:41   By addressing that whole curve, you just-- it's like calculus.

00:09:45   You've maximized the value or the revenue

00:09:49   that you've received.

00:09:51   And so in many ways, that's the way forward.

00:09:55   But often you kind of have this... the flip side of that is people will say,

00:09:58   "Well, I don't want...

00:10:00   I want my software to cost ten dollars. I want my software to cost five dollars.

00:10:03   I want to be, you know,

00:10:06   viewed as a premium brand in the App Store."

00:10:09   And, you know, it's

00:10:11   certainly a worthwhile thing, you know, to say that about yourself,

00:10:16   or to say that about kind of what kind of an app

00:10:19   or brand you'd like to be.

00:10:21   But I think... and that's great,

00:10:23   but I think I always get a little frustrated when the flip side of that is

00:10:26   I'm having difficulty making money

00:10:28   as a premium brand.

00:10:30   You know, no one really care, like no one would care if Tiffany's

00:10:34   announced one day that their sales are flat, people just aren't buying

00:10:37   overpriced diamonds.

00:10:39   It's like, okay, well apparently people don't think that

00:10:42   you're as premium as you used to be or, you know, those kinds of things. Like, complaining

00:10:46   about that doesn't make sense.

00:10:47   If you can charge a high price and make a high revenue, fantastic. Enjoy that, that is

00:10:51   awesome.

00:10:52   live in the dream, high five.

00:10:56   But the reality is if you're in the app store to make a living, if you're in the app store to make money,

00:11:00   your goal is more likely to be, you know, how can you derive the

00:11:05   most revenue from the

00:11:06   work that you do?

00:11:08   And that's not to get to a point, you know, there's sort of the dark side of that, of kind of

00:11:11   getting into scamming and

00:11:14   kind of fleecing users, which I would certainly advise against,

00:11:18   but you know there's ways to

00:11:20   view pricing as a tool to extract that value

00:11:24   and in a way that just is basic microeconomics

00:11:28   makes good sense.

00:11:30   That's kind of

00:11:31   the way I approach it. I view pricing as a tool that I have

00:11:35   to allow me to make money.

00:11:37   You know, I don't really associate too much intrinsic value

00:11:42   in the price. That, oh, well,

00:11:45   all my apps are 99 cents and that makes me a cheap app developer

00:11:49   or whatever. I mean, I have a couple of apps that are more expensive than that.

00:11:52   But in general,

00:11:53   you know, I just feel I'm trying to price something where I think I will make the most

00:11:56   money.

00:11:57   And the actual cost of that

00:12:00   is really only important to the customer.

00:12:02   And that's, you know, that's fair enough. If some customers think that

00:12:05   my app is worth more than great, if some of them think it's less than, you know,

00:12:10   great, I'm not going to get them.

00:12:11   But what I really want to avoid is,

00:12:13   you know, not taking advantage of people who

00:12:17   could do who could find my app interesting, who could find it useful,

00:12:20   but are turned off by a high price.

00:12:22   And so,

00:12:23   rather than getting, you know, a dollar from them, I'm getting zero from them.

00:12:27   On the flip side,

00:12:29   you want to make sure that if there are people who are willing, who'd be really interested

00:12:31   and engaged and want to give you lots of money, that you're addressing them to, and giving them an

00:12:34   opportunity

00:12:36   to give that back to you. It sounds like kind of a funny thing, but,

00:12:38   you know, it's like you really are creating an opportunity for someone to part with their

00:12:42   money and to give it to you. And, you know, it's a willful,

00:12:45   often happy joyful thing. I have many people who contact me and support

00:12:49   and it's like

00:12:50   you know I'm glad I was able to support you and keep this going and

00:12:53   keep making the app awesome

00:12:55   and they're happy to keep... by creating an opportunity for them to

00:12:58   give me money

00:12:59   they feel good about that

00:13:01   you know and so I think that's kind of where I am. I think I tweeted the other day

00:13:05   in my recent update to audiobooks it's been kind of striking how important free is in

00:13:09   the app portfolio these days

00:13:12   uh... were making about in revenue i'm making about twice what up for my free

00:13:16   app

00:13:17   and from the paid app and do the absolute central identical except one of

00:13:20   them shows ads

00:13:21   and the other one doesn't

00:13:22   and in the paid after you there's no ads in the free up a show i had so i used to

00:13:26   do

00:13:27   aggregator and all the stuff that mob ads and all the stuff that i'd still add

00:13:31   now because

00:13:33   the quality about the so much better and

00:13:35   it's just so much simpler for and better from a coding perspective

00:13:39   but when i found

00:13:41   is that's, you know, I think that means that I'm addressing the entire spectrum

00:13:45   probably of user.

00:13:46   Where I go, there's some people who get the app

00:13:49   who give me, you know, pennies from watching ads

00:13:53   and then there are people who get the free app, like it, buy all the in-app purchases

00:13:57   and, you know, make some money from them directly.

00:14:00   There are people who buy the app for ninety-nine cents

00:14:03   and

00:14:04   who then never see an ad but they've given me their buck

00:14:08   and then kind of you know also potentially buy in at purchases and you

00:14:12   by addressing that whole spectrum

00:14:14   i think i mean it's it's a good wise business move

00:14:17   uh... you know kind of as a especially as it you know as a smaller business

00:14:21   i can't afford to be leaving money on the table

00:14:24   so anyway

00:14:25   just some thoughts

00:14:26   hopefully that's helpful

00:14:27   as always if you have questions comments concerns hit me up on twitter i'm @_davidsmith

00:14:33   the twitter feed for this podcast is dev perspective

00:14:36   and otherwise, hope you have a good week.

00:14:38   Happy coding, and I will talk to you later.

00:14:41   Bye.