Developing Perspective

#111: In it for the long haul.


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

00:00:03   podcast discussing news of note, iOS development, Apple, and the like. I'm

00:00:07   your host, David Smith. I'm an independent iOS and Mac developer based in Herne,

00:00:10   Virginia. This is show number 111 and today is Tuesday, March 5th, 2013.

00:00:16   Developing Perspective is never longer than 15 minutes, so let's get started.

00:00:20   Alright, so today's episode is going to have two topics. I'm going to talk about the

00:00:26   process of updating a very old app and then talk a little bit about burnout and related

00:00:32   things.

00:00:33   So to start off, I'm going to talk about an update that I'm working on now.

00:00:35   The project that is my primary focus right now in addition to some of the other things

00:00:39   that I'm doing.

00:00:40   And it talks about updating my recipe book, which is one of my sort of more successful

00:00:45   apps.

00:00:46   It's been on sale for quite a while.

00:00:48   And I'm trying to bring it up to what I'm going to call version three.

00:00:51   Now my recipe book is an app that's been around for almost three years.

00:00:55   I think it was launched the summer of 2010.

00:00:58   So I've been working on it in some capacity for at least

00:01:01   probably about three years.

00:01:03   And during that time, it's had 30 released versions

00:01:06   last time I checked, which works out

00:01:07   to be somewhere around a version a month or so,

00:01:11   in terms of since it's actually released until now,

00:01:13   which is quite a lot.

00:01:14   There's a lot of things that have changed

00:01:18   in terms of look and feel, in terms of functionality,

00:01:20   in terms of how the app works over that period.

00:01:23   And it creates some interesting questions

00:01:25   when you're going to go and do a big update, when you're

00:01:27   going to do some stuff that gets into some database, that

00:01:29   gets into some usability, that gets

00:01:31   into all these kinds of questions

00:01:33   that you don't have when you're creating a new app.

00:01:36   When you're just starting with something new,

00:01:37   you just create it.

00:01:38   And there's no existing user base.

00:01:40   There's nobody's data you have to worry about.

00:01:42   And for something like my recipe book,

00:01:44   it's even more complicated because what

00:01:46   you're dealing with is users' non-recreatable data

00:01:50   in that sense.

00:01:51   So people are collecting and building

00:01:53   databases of recipes they like.

00:01:55   And if something were to happen to them,

00:01:57   if they install the update and their data goes away,

00:02:00   we have a pretty substantial problem.

00:02:01   And the app would certainly be not-- the users

00:02:06   wouldn't be happy with that.

00:02:08   And this actually happened once before.

00:02:10   I accidentally shipped an update that if you

00:02:12   had a database that was above a certain size,

00:02:17   it would corrupt the database, which was unfortunate.

00:02:19   And I immediately pulled the app actually

00:02:22   actually had to pull the app from the store,

00:02:26   so that the update wouldn't propagate,

00:02:28   submit an expedited review with the fix,

00:02:31   and the app was just out of, not in the store

00:02:33   for about four days, and it cost me a bit of money

00:02:35   and a bit of goodwill, but in the end it worked out.

00:02:38   But the point is, it's very complicated, I think,

00:02:42   when you are doing these kind of upgrades,

00:02:44   versus a fresh update.

00:02:45   And so I just kind of wanted to talk through

00:02:46   some of my thoughts about that.

00:02:48   The first, and the most important part, I think,

00:02:50   doing these kinds of things, to realize that you at the end, you

00:02:53   just kind of have to be pragmatic about it. There's

00:02:57   you're never going to be able to test every possible

00:03:00   configuration, every possible path, all the different things

00:03:03   that users can do. And so your goal is just trying to cover the

00:03:06   vast majority of them and to do things in a way that will

00:03:09   degrade gracefully as best you can. So for example, I can, it's

00:03:13   not reasonable or sort of practical for me to test. You

00:03:18   You see a user three years ago had bought the app at version 1,

00:03:22   bought it, installed it, added a couple of recipes,

00:03:25   never did anything to it.

00:03:26   And then-- or even worse if they'd kept using it.

00:03:30   But you know, if they'd-- and they'd never upgraded.

00:03:32   And then they installed version 3.

00:03:35   So now there's 29 intermediary versions that they have not had.

00:03:40   And it gets very complicated for me

00:03:41   to be able to test what that would look like to their data.

00:03:44   Typically, that should work fine.

00:03:46   I have a lot of lightweight migrations

00:03:48   that just run and it works pretty well.

00:03:51   But it's one of those things that I'm not

00:03:53   too worried about that.

00:03:56   As a percentage of my users, very few of them

00:03:58   bought the first version, just because over this lifespan

00:04:01   it's only been around for probably about a month or two.

00:04:05   But the reality is I just can't worry too much about that.

00:04:08   When I look at my version stats and details about that,

00:04:10   it's not a high percentage of users who are on old versions.

00:04:13   Most people are running the latest version

00:04:15   on the latest OS.

00:04:17   And so I can generally speaking say, focus on those, and then try and be just sort of

00:04:22   mindful of how that would affect older users.

00:04:25   But the reality is, it's there's only so much you can do.

00:04:28   And then this is just one of those sort of things that I've come to grips with that I

00:04:32   can never please everybody with every update.

00:04:34   And so I just have to sort of understand that.

00:04:37   And then in terms of what I do for that update, it's interesting because you just have to

00:04:40   understand what makes sense for a big update.

00:04:44   You know, this is an app, you know, it's been around, I said for about three years, there's

00:04:47   not a lot of things that I need to do to it.

00:04:49   I mean, the app has been largely unchanged for probably about a year now, if not more,

00:04:54   and it still sells at almost the identical level as it did when it was first introduced.

00:04:59   It's just, it keeps going and that's awesome.

00:05:01   But the reality is, you want to update it periodically, if for no other reason than

00:05:07   just to kind of continue to engender that goodwill with your users.

00:05:11   trying to find what are the things that are frustrating about it. You know, if the app

00:05:15   is featured fairly, you know, from a feature perspective is fairly complete, there's not

00:05:18   much more in terms of what it needs to do. We're just trying to find different ways to

00:05:23   make users lives better. And so like this, this feature and this update is primarily

00:05:27   focused on making the app universal, which is one of those, you know, widely requested

00:05:31   feature, you know, make it work from right now it's an iPad only to make it work on an

00:05:34   iPhone as well. And it's something that users have wanted. And it's something that I'm,

00:05:39   you know, working on and will be releasing.

00:05:41   And it was that's-- at this point,

00:05:43   it's that and a few other minor features are all

00:05:45   that we hear these days.

00:05:47   And so at some point, the app will likely

00:05:50   fall into a more just sort of long-term maintenance mode.

00:05:53   It was just kind of a strange thought to me.

00:05:55   Usually, for a lot of my applications,

00:05:57   I'm constantly working on them.

00:05:59   I'm constantly improving and updating and kind of thinking,

00:06:01   I have this long list of features that would be nice,

00:06:04   would be nice, would be nice, would be nice.

00:06:06   At some point, you kind of run out of that.

00:06:07   this has already happened to me with audiobooks on my other apps, where I have, I don't do

00:06:12   major updates to it anymore, because functionality wise, it does pretty much everything I've

00:06:16   ever wanted to do. And I, you know, add content to it, and I tweak the UI's and whenever new

00:06:21   OS's come out or new devices, I make sure it looks good on those. But the reality is

00:06:25   what that the benefit that that's created for me is I can focus on new things, you know,

00:06:29   have another project at this point, I'm not quite ready to share it yet. But I have a

00:06:32   new project that I'm working on, that'll be a big release, probably my big app for 2013.

00:06:37   And it's the interesting part of that,

00:06:42   being comfortable with that intentional neglect

00:06:46   in a positive way, is just something that I've had to come to grips with

00:06:51   by being a one-man shop.

00:06:54   That at a certain point, an app gets pretty good, it gets good enough,

00:06:56   and continuing working on it beyond a certain point,

00:06:59   you start getting a lot of diminishing returns.

00:07:02   And that's not to say you want to ignore things, let them decay.

00:07:03   But there's a point at which the steady state of a really quality solid app that is has very few bugs that has been just absolutely polished and polished and polished, that you just sort of let that ride and make adjustments to it rather than major changes.

00:07:18   I kind of think about this, otherwise you would get into the situation that you saw

00:07:22   with something like, say like Microsoft Word.

00:07:25   Over time, it just kept growing and growing and growing to a point that it starts doing

00:07:30   all these crazy things that aren't really enhancing its core functionality, that aren't

00:07:35   making it better at, you know, doing text processing or, you know, writing things.

00:07:42   And you end up with these overly featured complicated apps that people have trouble

00:07:46   using.

00:07:47   And so on the flip side, what I try and do is make something that is good and useful

00:07:52   and gets super polished and focused. And then once you run out of major features that make

00:07:56   sense to do, it's like, okay, that's probably what it's going to be, at least for a very

00:08:00   long time. And you just live with that and it lets you, you know, free up your time to

00:08:05   work on new and interesting projects.

00:08:06   All right. And so the next thing I was going to talk about, this is a question that I got

00:08:11   from Nathan Reyes on Twitter. And he was just asking me to talk a little bit about burnout.

00:08:17   and talking about how I deal with that, or I guess in terms of like, what do you do with

00:08:22   that? I mean, it's a common problem. It's a common situation, I think, for just people

00:08:27   in general that you kind of get to a point where you're just overwhelmed when you're

00:08:31   beat down. And it's very hard to sort of face your next day in some ways. First, the first

00:08:38   thing that comes to mind is probably a good disclaimer to have is that this is one of

00:08:43   those things where you, the sort of the things that I can say

00:08:47   about it will not will absolutely not apply to

00:08:50   everyone. Because by its nature, the reasons that we are sort of

00:08:55   face burnout of the reasons that we face difficulty in our work

00:08:57   are going to be so unique to us. And so this is one of those. If

00:09:01   you have to work, you know, 15 hours, 16 hour days, month after

00:09:06   month, because that's what you need in order to feed your

00:09:08   family, like I, who am I to say that's not a good decision, a

00:09:11   good choice. But what I in general, these are kind of the

00:09:14   broad lessons that I've learned that I think apply more often,

00:09:18   and especially if you can take a step back from your situation

00:09:21   can help you kind of decide and navigate where you should head

00:09:24   next. So first, this is kind of a an echo of what I said in my

00:09:29   ergonomic episode a couple weeks ago, is it's important, I think

00:09:34   whenever you're approaching your work, that you consider from you

00:09:38   consider from the outset that you have to be able to work in

00:09:42   such a way that you can continue working indefinitely. And so in

00:09:47   the ergonomics perspective, I was saying, you know, make sure

00:09:49   your office physical environment is set up such that, you know,

00:09:52   it's not putting any strain on you that over time will end up

00:09:54   wearing you down. And on the flip on the sort of the burnout

00:09:58   side of that, I think it's from a work schedule from a pressure

00:10:02   from a intensity perspective, that same, that same principle

00:10:06   applies that if you aren't in a situation that you feel like you could keep doing forever,

00:10:12   then there's probably something that you need to do about it. You need to make a change.

00:10:15   You need to do something because by that very definition of that situation, you can't continue

00:10:21   to do that. At some point, you will hit a point that you are just done. And that's almost

00:10:27   certainly going to happen at the least opportune time. And the consequences of that happening

00:10:31   are unlikely to be good. So the first thing is if you find yourself in a situation where

00:10:36   you just like, you know, I can't, there's no way I could keep doing this. You really

00:10:39   need to understand, look, like look introspectively about that you need to understand what's going

00:10:44   on, you need to talk to your boss, talk to your clients, just understand how what what

00:10:48   is causing that, you know, trying to just as much as you can think about it. This is

00:10:52   a great thing to get other people's advice about how where you're spending your time

00:10:57   talking to them about your workflow. It's just like, this is something that you almost

00:11:01   certainly if you can find peers, whether that's at your workplace, whether that's going to

00:11:05   a meetup or conference and talking to other people, someone's probably gone through it.

00:11:09   And you can often get a lot of ideas or a sense of really what the root cause of it

00:11:14   is from that and be able to sort of respond accordingly. And secondly, the thing that

00:11:20   I think about with that is it's understanding that your work schedule is probably has more

00:11:28   flexibility in it than you than you think. And by that I mean, I

00:11:32   know for myself that I, the times that I need to work crazy

00:11:38   hours or be under super pressure, and there's a place

00:11:40   for that. And it's probably fair sort of disclaimer to say that

00:11:43   you can, you know, usually for you have to understand how long

00:11:47   you can go and you want to have a sort of a definite limit for

00:11:50   yourself on that for how long you want to go in that mode. You

00:11:53   know, it's kind of like, I go into there's periodically I've

00:11:56   needed to go into like a superpower mode where I'm working long hours with great intensity.

00:12:00   But for me, I can't do that for more than about five days before I'm done. And after

00:12:04   five days, I just have to change. And if it's necessary beyond that, then we have a big

00:12:09   problem. But generally, you just want to understand for yourself what a sustainable schedule looks

00:12:15   like, and then do everything you can to approach that and to get it. And this is one of those

00:12:21   things that's like, "Well, that's fine for Dave, I guess." Like in terms of, "Well, that's

00:12:24   not my situation. You know, my boss puts a lot of pressure on me. My boss says that I

00:12:29   have to do this and this is the best job I can find." And like, okay, that's really

00:12:34   unfortunate if that's really true. If you really are finding yourself in a place where

00:12:40   the only option you have is to burn yourself out. But really what you need to do is be

00:12:45   making conscious steps, I think, at every point to say, "Okay, this is the situation

00:12:52   I'm in right now. This is where I find myself. I wish it was different. I wish I wasn't didn't

00:12:57   feel so stressed. I didn't feel so burned out. I wish I could, you know, sleeping more,

00:13:01   spending more time with my kids, whatever it is. And you have to think, okay, if that's

00:13:06   true, if that's really how I feel, if that is important to me, what can I do to change

00:13:11   that? Where, what can I do about my schedule, about the clients I take, about the job I

00:13:16   I have that will allow me to put my time and energy into the places that I care more about.

00:13:23   Because if you really love your work and you really enjoy it, and this is where you want

00:13:26   to put your energy, you're probably not going to get burned out doing it. But if you look

00:13:30   at yourself and you're saying, "Man, this is rough. I'm getting crushed." You have to

00:13:35   change that. And there's no easy answer. There's no shortcut or trick that can make that go

00:13:41   away. You can be perhaps more productive with your time to try and squeeze the amount of

00:13:46   work that is needed into a smaller amount of time. And that

00:13:50   may help. But at the end of the day, whatever the situation is,

00:13:54   you have to be able to say, you know what, I'm more important,

00:13:58   my health and sanity is more important than the work I'm

00:14:01   doing. I'm not going to look back on my deathbed and say,

00:14:04   Hey, you know, I wish I really had shipped that project a week

00:14:06   earlier, you want to be able to look at yourself in the mirror

00:14:09   and say, you know what, I'm taking care of the things that I

00:14:12   care about. And that's often really difficult. But being you

00:14:15   know, being an adult is often really hard. All right, that's

00:14:19   it for today's show. As always, if you have questions, comments

00:14:22   or concerns, I'm on Twitter at underscore David Smith. I'm on

00:14:25   app net at David Smith. There's a feed for both of both of those

00:14:29   networks for the show at dev perspective, which is where just

00:14:32   an update every time a new episode comes out if that's your

00:14:34   preferred way to get it. And also, I just wanted to mention

00:14:37   I'm starting something new on my blog, David dash Smith.org,

00:14:39   where I'm starting to post much more regularly.

00:14:42   And if you like what I have here,

00:14:43   you may also like the articles I'm writing there.

00:14:45   So check it out.

00:14:46   That's david-smith.org.

00:14:47   There'll be a link in the show notes.

00:14:49   And that's it.

00:14:50   Have a great week.

00:14:50   Happy coding.

00:14:51   And I'll talk to you later.