PodSearch

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.