PodSearch

Under the Radar

162: The Five Stages of Developing a New App

 

00:00:00 ◼   ► Welcome to Under the Radar, a show about independent iOS app development.

00:00:04 ◼   ► I'm Marco Arment.

00:00:05 ◼   ► And I'm David Smith. Under the Radar is never longer than 30 minutes, so let's get started.

00:00:09 ◼   ► So this episode I think is going to be kind of talking about

00:00:14 ◼   ► where I am in the development of my calendaring app.

00:00:18 ◼   ► It's hitting a point now where it's getting close to release.

00:00:23 ◼   ► And as I've gotten closer and closer to release, that word has taken on

00:00:28 ◼   ► a different meaning for me, where it's almost like this app wants to see the world.

00:00:33 ◼   ► And I'm just grasping onto it, and at some point I just have to release my grasp and off it goes.

00:00:38 ◼   ► It is not like I'm pushing it out into the world, it is not like it is ready or something.

00:00:43 ◼   ► It is just at some point I have to release my hold of it and off it will go.

00:00:47 ◼   ► So at some point it will be released. Right now I'm hoping to have that time be about

00:00:52 ◼   ► April 17th, assuming app review goes well, which is in about two weeks, which, given that we're a fortnightly show,

00:00:57 ◼   ► means this is probably the last episode before it goes out into the world.

00:01:02 ◼   ► And so there's a lot of interesting questions and choices and things that I have to be dealing with now that I think make interesting

00:01:07 ◼   ► show topics, as well as kind of interesting to talk through

00:01:12 ◼   ► the experience of the last couple of weeks of kind of getting

00:01:17 ◼   ► over that last, it's like the classic thing of that last 20%, that last 10%,

00:01:22 ◼   ► the last 5%, 1% that feel like they just stretch on forever and

00:01:27 ◼   ► can sometimes fill you with sadness and despair. But that's sort of where I am

00:01:32 ◼   ► and it's kind of exciting to have finally gotten to there. It looks like it will be about two months

00:01:37 ◼   ► from when I started working on this app until when I hopefully ship it now.

00:01:42 ◼   ► First of all, congratulations, that's awesome. And I'm really happy to hear all that.

00:01:47 ◼   ► How does this compare time-wise or effort-wise

00:01:52 ◼   ► to other apps you've done recently?

00:01:57 ◼   ► Recent is a funny question, because it's been about two years since I launched another app.

00:02:02 ◼   ► And I think, I think, Workouts Plus Plus

00:02:07 ◼   ► was my last app that I launched. And I would say about two months

00:02:12 ◼   ► seems like a good amount of time for me to work on an app.

00:02:17 ◼   ► I think two months is enough time to make something worthwhile, to make something that's

00:02:22 ◼   ► useful, that has a reasonable and good degree of polish to it,

00:02:27 ◼   ► but isn't something that is just taking too long.

00:02:32 ◼   ► If I spend more than this, it's unlikely that I'm going to be making the app better.

00:02:37 ◼   ► It's more likely that I'm just kind of going down rabbit holes and

00:02:42 ◼   ► honestly building an app that may or may not actually meet my customers' needs.

00:02:47 ◼   ► I think two months is a good enough point. The app is good, it works, I use it every day.

00:02:52 ◼   ► I think it's useful, I put it out to some beta testers and they think it's useful.

00:02:57 ◼   ► But now is the point that it needs to go out into the world and see what people actually think of it.

00:03:02 ◼   ► It seems a good amount of time for me in the way that I work. Obviously everyone's productivity

00:03:07 ◼   ► and the amount of time they have to devote to something varies, but that's a good amount of time. I feel good about it.

00:03:12 ◼   ► It isn't like quickly throwing something together. It's long enough that it's

00:03:17 ◼   ► a concerted, serious effort, but not too long that it's going to...

00:03:22 ◼   ► If I spend six, seven months on this and it goes nowhere, that's kind of problematic.

00:03:27 ◼   ► The stakes get higher and higher. I think in a lot of ways raising those stakes, unless it really is

00:03:32 ◼   ► like make or break for your business, becomes really questionable.

00:03:37 ◼   ► Ultimately I need to get back to working on my other apps that at this point are

00:03:42 ◼   ► paying my bills and are the important things in many ways. This is a

00:03:47 ◼   ► experiment, a possible new line of business for me,

00:03:52 ◼   ► but I have an established base of other apps that are my line of business that I need to make sure I'm not

00:03:57 ◼   ► neglecting for too long.

00:04:02 ◼   ► You did this tweet about the five stages of developing a new app and

00:04:07 ◼   ► every one of these things could be an entire episode of this show, and some of them have been.

00:04:12 ◼   ► I'm curious, even just at the beginning here, stage number one of developing a new app for you is the curiosity stage.

00:04:17 ◼   ► This kind of plays into the time budgeting thing. What made you decide to work on this app

00:04:22 ◼   ► and to make this and to do this instead of either

00:04:27 ◼   ► more maintenance stuff on your other apps or instead of a different type of app idea completely?

00:04:32 ◼   ► Sure. Before we get into that, I'll just go through briefly my stages of developing an app that I

00:04:37 ◼   ► developed in my mind for what I've experienced where it starts with curiosity

00:04:42 ◼   ► and then it goes to excitement, then productivity, then despair, and then polish,

00:04:47 ◼   ► and then finally you'll actually ship it at the end of that. And the curiosity phase

00:04:52 ◼   ► I think is that phase where you have an idea.

00:04:57 ◼   ► At this point, all there is is that idea. Typically, I think

00:05:02 ◼   ► for most, certainly on the productivity side, but I guess even just on a game or

00:05:07 ◼   ► any kind of app where you're going to have some little hook, there will be some kind of twist

00:05:12 ◼   ► that you're trying to put into the world, like a unique way of doing, in my case,

00:05:17 ◼   ► calendaring and time zone coordination. You have this idea

00:05:22 ◼   ► and you're kind of in this curiosity phase of, "Huh, I wonder if that would work?"

00:05:27 ◼   ► And you're thinking about it, but it's purely just this kind of very vague, high-level

00:05:32 ◼   ► idea or something that you have. I have these all the time, I have a list of them.

00:05:37 ◼   ► I don't maintain that list quite as much as I used to because at a certain point, ideas aren't

00:05:42 ◼   ► actually worth very much. Ideas are just things that you have, and sometimes they're good, sometimes they're bad,

00:05:47 ◼   ► and unfortunately you won't really know if it's good or bad until you really get farther down the process.

00:05:52 ◼   ► But for this specific app, what got me from curiosity to excitement, which I think is the

00:05:57 ◼   ► important next step in wanting to make something, is that I showed a very early

00:06:02 ◼   ► prototype. I was just bored one afternoon, I was doing some

00:06:07 ◼   ► deep maintenance work in Podometer++, and I had this idea, I was like, "Oh, let me just spend," kind of hit the

00:06:12 ◼   ► point where there was long enough in the day left that I could build something

00:06:17 ◼   ► rough and quick, but not enough at a time that I could tackle my next big feature

00:06:22 ◼   ► in Podometer, and so I was like, "Hey, I'll quickly throw something together." And then I showed that to

00:06:27 ◼   ► my mutual friend, Mike Hurley, and he, who is someone who

00:06:32 ◼   ► does a lot of work coordinating meetings in multiple time zones, he got excited.

00:06:37 ◼   ► And he saw the potential for where this was going, and his excitement

00:06:42 ◼   ► was the thing that sort of flipped it over in my head, where it went from something that was just

00:06:47 ◼   ► an idea to something that was like, "Oh, that's interesting," someone who actually

00:06:52 ◼   ► would use this on a very regular basis, like, "My ideal user thinks this is really cool

00:06:57 ◼   ► and would sort of love to see this go somewhere." And that switched it over

00:07:02 ◼   ► from the curiosity, like, "I have an idea," into "I'm excited now."

00:07:07 ◼   ► There is something very exciting about finding, you know, it's like having

00:07:12 ◼   ► this idealized user in your mind, and especially if that idealized user is a person. Sometimes it's you, sometimes it's

00:07:17 ◼   ► your spouse, a friend, whoever that is, but someone who else is excited about the app, who sees

00:07:22 ◼   ► its potential, who can sort of start asking you those kinds of questions that push the

00:07:27 ◼   ► idea forward, that are like, "Well, what if it did this? What if it did that?"

00:07:32 ◼   ► It would be great if it did this, and that's where the excitement builds, and I think you kind of have to

00:07:37 ◼   ► have that switch. There's something that will make you excited, and

00:07:42 ◼   ► without that excitement, it's going to be really hard to move forward, because if all you have is an idea

00:07:47 ◼   ► and you're not really excited about it, but you just kind of want to do it because reasons,

00:07:52 ◼   ► like, it's next couple of phases where you're going to start actually having to dig into the code and work and do

00:07:57 ◼   ► all that, it's just going to feel like a grind. It isn't going to be productive. It isn't going to

00:08:02 ◼   ► be something that you can really want to do and do your best work on, probably.

00:08:07 ◼   ► Yeah, that's honestly, that sounds very sound. I mean, you probably have a lot

00:08:12 ◼   ► more experience than most people do about deciding what apps to work on,

00:08:17 ◼   ► what apps to create, whether to create an app or not, so that actually makes a ton of sense.

00:08:22 ◼   ► Yeah, and I think the key thing there about that is, it's like you can work on anything,

00:08:27 ◼   ► and that is both a blessing and a curse. And in many ways, what I find is

00:08:32 ◼   ► working on something that, like, if the reason I think

00:08:37 ◼   ► it's a good idea to work on is just purely financial, like, "Huh, maybe this would be a good way to make money"

00:08:42 ◼   ► or something, I find that excitement, that energy

00:08:47 ◼   ► falls very flat very quickly.

00:08:52 ◼   ► The difference between what makes a good, like, will actually make a good app in the end, you know,

00:08:57 ◼   ► is that actual, just genuine excitement, and you can't stop thinking about it, and you keep

00:09:02 ◼   ► thinking of new and interesting ways. Like, the problem has captivated

00:09:07 ◼   ► you, and that's the thing that will actually make you make a good app, rather than other

00:09:12 ◼   ► kind of more amorphous reasons. I think that's the switch, that as soon as you hit that,

00:09:17 ◼   ► like, that's the lightning in the bottle that will actually push the process forward,

00:09:22 ◼   ► rather than just, like, doing it because you think it's, like, you know, a good move

00:09:27 ◼   ► financially or something. You have to find some kind of reason to be excited,

00:09:32 ◼   ► because if you're not, like, moving on to the next stage of development where you're trying to get into productivity is just going to be

00:09:37 ◼   ► painful. And this is, I think, in my own experience, when I go into apps with that kind of

00:09:42 ◼   ► thing in the back of my mind, either I never emerge from that productivity phase, like, I never

00:09:47 ◼   ► actually make anything, or that productivity phase takes forever, and it feels bad while I'm

00:09:52 ◼   ► doing it, and it isn't actually, like, a useful, you know, like, productive time.

00:09:57 ◼   ► So moving on to, I mean, phase two, I think, so you listed phase two as excitement.

00:10:02 ◼   ► This is kind of involved, I think, and you've even already partially covered it.

00:10:07 ◼   ► So I guess, how do we move on to

00:10:12 ◼   ► stage three, productivity? Yeah, and I think this,

00:10:17 ◼   ► this is the phase of development where you are trying to take these,

00:10:22 ◼   ► like, the excitement phase is great, but it's also, it's kind of like you have, it's like a

00:10:27 ◼   ► firework has gone off, and it's one of those fireworks that just, like, explodes in every direction. Like,

00:10:32 ◼   ► there is awesome, cool, shiny things going, but they're going every which way, and

00:10:37 ◼   ► that's cool, and that's fun, but the transition from that into productivity is all about

00:10:42 ◼   ► putting hedges around your, your ideas.

00:10:47 ◼   ► It's about saying, you know, the app is going to be this and not this. Like, this is the, you know, the

00:10:52 ◼   ► thousand no's for every yes kind of idea. Like, you have to start

00:10:57 ◼   ► drawing the lines around your ideas and say, like, this idea is one that is worth pursuing,

00:11:02 ◼   ► this one is not, because otherwise you have no vision for the app, and you won't, honestly, you just won't have

00:11:07 ◼   ► a direction to work in. So very quickly, like, you kind of, in this, my case, it's like I had to decide, like,

00:11:12 ◼   ► you know, there's like two or three core features that are the truly,

00:11:17 ◼   ► kind of, hopefully, like, unique or novel and interesting things about this app, and those are the ones that

00:11:22 ◼   ► I'm going to kind of build my hedges around and start working in, and the, you know, the productivity

00:11:27 ◼   ► comes, I think, from focusing in in that way. Like, whatever that is, whatever that hook is,

00:11:32 ◼   ► that hopefully you're still excited about, you kind of just have to say, this is what

00:11:37 ◼   ► it is, and no more. You know, if you, if you stay in the excitement phase too long, you'll just kind of keep, and

00:11:42 ◼   ► keep coming up with these creative ideas, and you'll end up with all of these things, but you won't actually make anything.

00:11:47 ◼   ► Like, ultimately, you have to say, you know, like, these two or three things are what make the app the app,

00:11:53 ◼   ► and I'm just going to dive into building those, and, you know, I tend to take an approach of, I just, like,

00:11:58 ◼   ► pick something and just kind of quickly work at it from top to bottom to actually get it working,

00:12:03 ◼   ► and then, like, in this case, what's very great with that is I can take that and show it to people,

00:12:08 ◼   ► show it to, you know, people who I think would use the app and get feedback very quickly, you know, that kind of,

00:12:13 ◼   ► that iterative approach, and I tend to take the, sort of the narrow, deep approach of that,

00:12:18 ◼   ► so, like, I had, you know, often in an app you'll think about it with different screens or different

00:12:23 ◼   ► modes of the application, and it's like, here's what I'm thinking for event editing, here's what I'm thinking

00:12:28 ◼   ► for, like, the timeline view, this is what I'm thinking for the calendar view, and, like, just, you know,

00:12:33 ◼   ► diving in on that one feature, getting feedback, and then kind of working from there

00:12:39 ◼   ► is something that I find does really well with productivity, and I think that's what helps, sort of,

00:12:44 ◼   ► shorten this process that I'm not pursuing every little idea I have, like,

00:12:49 ◼   ► I really try and have the discipline of, like, there's two or three things, and I want to make those two or three things

00:12:54 ◼   ► as good as I can, and I have to keep reminding myself that if those two or three things are really good,

00:13:00 ◼   ► the other ideas that I have that I've captured and thought about will make grade, you know, 0.1, 0.2, 2.0,

00:13:06 ◼   ► like, I can keep extending the app from there, but productivity requires that discipline of

00:13:11 ◼   ► narrowing down that giant, you know, firework to just, like, the two or three streamers that, you know,

00:13:16 ◼   ► you're most excited about, that you think are most captivating or most, like, unique to you and what you can do.

00:13:25 ◼   ► We are sponsored this week by Linode. With Linode, you can instantly deploy and manage an SSD server in the Linode cloud.

00:13:30 ◼   ► You can get a server running in seconds with your choice of Linux distro,

00:13:35 ◼   ► resources, node location, and so much more. Linode serves their customers with the help of ten data centers around the globe,

00:13:42 ◼   ► and they're about to add more. Mumbai, India, and Toronto, Canada will both have data centers before 2020.

00:13:49 ◼   ► All of Linode's servers feature native, enterprise-grade SSD storage, and there's a 40-gigabit network backing them all,

00:13:56 ◼   ► and they all use Intel Xeon E5 processors. This is really high-end gear. This means you're able to serve your customers

00:14:02 ◼   ► even faster than before. And, so you don't have to worry about overspending, Linode has designed their pricing tiers

00:14:08 ◼   ► to feature hourly billing with monthly caps on all plans and add-on services, including the backup service,

00:14:14 ◼   ► node balancers, and all of their servers. And right now, Linode is hiring. So if you want to learn more about that,

00:14:19 ◼   ► check out what they're looking for, go to linode.com/careers. So Linode has pricing options to suit everyone.

00:14:26 ◼   ► Their plans start at one gig of RAM for just $5 a month, and they offer high memory plans starting with 16 gigs of RAM.

00:14:33 ◼   ► And they have a special offer for our listeners. Listeners of the show can go to linode.com/radar

00:14:39 ◼   ► and use promo code radar2019 to get $20 towards any Linode plan. So on that one gig of RAM plan, that could be four months for free.

00:14:47 ◼   ► And with a seven-day money-back guarantee, you have nothing to lose. So give Linode a try today.

00:14:53 ◼   ► I use Linode. Dave uses Linode. I've been using it since long before they were a sponsor of ours.

00:14:58 ◼   ► I absolutely love Linode. I have all my stuff hosted there because it's just the best web host I've used.

00:15:03 ◼   ► So see for yourself at linode.com/radar. Once again, promo code radar2019.

00:15:09 ◼   ► To learn more, sign up and make the most of that $20 credit. Thank you to Linode for their support of this show and all of Relay FM.

00:15:16 ◼   ► So then, sadly, after the productivity phase comes the least desirable phase of developing a new app,

00:15:23 ◼   ► which I think is an important one to focus on, though, because I feel like so often we see the finished products of things

00:15:30 ◼   ► and don't necessarily think about sometimes some of the anguish or despair that went into their creation.

00:15:37 ◼   ► And so I say the fourth phase of developing a new app is despair. And what I mean by that is probably twofold.

00:15:43 ◼   ► It is sad. But it is true, though. I've never built anything where it was always happy.

00:15:51 ◼   ► It always felt like it was going great. It was always a good thing. There's always this phase.

00:15:56 ◼   ► And it's usually kind of after you've gotten most of it ready, you've solved all the big problems, typically the easy problems,

00:16:03 ◼   ► then you hit this point where you get sad.

00:16:08 ◼   ► And it's usually about there's difficult, either sometimes there's a technical problem that you've been putting off

00:16:15 ◼   ► that sometimes you just kind of have to then actually face and deal with, and you kind of get this feeling of,

00:16:20 ◼   ► "Will this ever work? I want to make this happen, but I'm just not sure I'm good enough or the problem is just too big."

00:16:28 ◼   ► Or the second part of it is the fear that often I feel around actually showing it to the world.

00:16:37 ◼   ► It's the phase where you start to feel like, "What if people don't like it?"

00:16:41 ◼   ► And honestly, the more I've done this is the knowledge that definitely people won't like it.

00:16:45 ◼   ► There will be some group of people who will not like what you did, who will say it is silly and foolish

00:16:52 ◼   ► and "Why did you waste your time on this?" and so on. It's not worth anything, so on.

00:16:57 ◼   ► That is the inevitable result of putting something out into the world. There will be people who don't like it.

00:17:04 ◼   ► And the closer you get to actually putting something out into the world, especially something that you really like,

00:17:10 ◼   ► you've built this beautiful thing and you want to show it to the world, and then you start having the anxiety around

00:17:16 ◼   ► dealing with that negativity, knowing that hopefully it'll be balanced and there'll be a lot more positivity around it,

00:17:24 ◼   ► that it will go well and people will like it. The majority of people will like it and it'll be good,

00:17:30 ◼   ► but the reality is that negativity will impact you more specifically than the positivity will, unfortunately.

00:17:40 ◼   ► And so you end this awkward phase. And it's also just that last little grind feels more like a grind.

00:17:48 ◼   ► We're long past the excitement phase. We're long past the part of the project where you were really just like the initial

00:17:55 ◼   ► honeymoon phase of excitement and joy and you're solving all the cool problems first and it feels great.

00:18:01 ◼   ► A few weeks into just dealing with low-level bugs or weird layout issues or whatever it is, eventually that excitement

00:18:08 ◼   ► will wear off and it's just a question of moving through. And the biggest positive that I have from that

00:18:16 ◼   ► is the knowledge that that is totally normal to feel despairing in the development of an app.

00:18:25 ◼   ► The key is to just not get stuck there, to just keep moving forward from there, knowing that you'll get through.

00:18:33 ◼   ► And I always have. I've shipped literally dozens of apps. All of them included this phase where I get really down

00:18:39 ◼   ► and kind of sad about it and I start worrying about if anyone's going to like it and there'll be a complete failure

00:18:44 ◼   ► and this is a huge waste of time and I just push through and put it out in the world.

00:18:48 ◼   ► And generally it hasn't been a complete waste of time. And generally it has been something that I could benefit from

00:18:54 ◼   ► either financially or learn something from or just creating something that I'm proud of.

00:18:59 ◼   ► And ultimately that is enough for it to be kind of worth doing. But I think it's important to just put out there

00:19:06 ◼   ► that it is totally normal and natural to hit a point where you're like, "What am I doing? This is terrible.

00:19:11 ◼   ► No one's going to like this." Or, "This problem is too hard. I'm not good enough."

00:19:15 ◼   ► The problem is, "This is too big of a thing to undertake. What was I thinking?"

00:19:21 ◼   ► But you just kind of have to push through and hopefully on the other side you can get into finishing up the app,

00:19:27 ◼   ► putting it out into the world, and moving on in a good way.

00:19:31 ◼   ► So probably everybody making an app goes through this phase and they probably assume that experienced developers

00:19:39 ◼   ► like me and you don't go through it, that we somehow are immune to those feelings.

00:19:44 ◼   ► But we're not. You said you go through it with pretty much every happy release.

00:19:48 ◼   ► I go through it with almost everything I do, too. There's always that self doubt of, "What if no one likes this?"

00:19:53 ◼   ► Or, "What if this flops in the market?" Or, "What if this has problems?"

00:19:57 ◼   ► And I think about that not only with every new thing I create, which isn't that frequent,

00:20:02 ◼   ► but even with every update I do. I still have that feeling every single time I issue an update.

00:20:08 ◼   ► Of like, "What if this is really bad? What if this is received really poorly?"

00:20:13 ◼   ► And it can be paralyzing. It can prevent you from shipping anything, or once you do, it can prevent you from changing anything.

00:20:19 ◼   ► But some people just have those feelings all the time, and we are two of those people.

00:20:25 ◼   ► And if you are, too, know that A, you're not alone, and B, it is possible to work through that and to ship things anyway.

00:20:34 ◼   ► And chances are, you are being way more critical of your own work than anyone else will be.

00:20:41 ◼   ► Yeah, and I think, too, that point there is the thing that you have to be self-aware enough to know that

00:20:47 ◼   ► you are aware of all of the problems that exist in your application.

00:20:53 ◼   ► And most of those problems are things that your customers won't notice or won't be aware of.

00:21:01 ◼   ► Like the compromises you had to make, or the choices you made. It's the difficulty of being so intimately familiar with an application.

00:21:09 ◼   ► You know where all the problems are, where all the little glitches are. If you do this, this, and this, and this, then this bad thing will happen.

00:21:16 ◼   ► And because you're aware of all of those things, you kind of start to see all of those things in a way that

00:21:25 ◼   ► you're a typical customer who comes into your application from nothing.

00:21:31 ◼   ► They have no expectation, and they have not seen any of the problems, hopefully.

00:21:36 ◼   ► Obviously, if your problems are immediately as you launch the app, you may need to go back to the productivity phase and keep working.

00:21:42 ◼   ► But hopefully, your problems and your issues and the things that you're worried about are going to be pushed off to the edges.

00:21:47 ◼   ► And they're coming in completely blank and fresh to your application.

00:21:51 ◼   ► And they're going to start with all the good stuff, all the great stuff that you got right.

00:21:55 ◼   ► And that's going to be their experience. Whereas your experience, all that stuff you take for granted,

00:22:00 ◼   ► and you just focus on the stuff that you're not sure about, or the design questions that you don't feel great about, or whatever it is.

00:22:05 ◼   ► Those negative things feel big to you because you are aware of them.

00:22:10 ◼   ► Whereas the reminder I have to keep saying is that no one else is going to notice those, or at least not initially.

00:22:15 ◼   ► And they're not going to be as big of a deal because typically, the issues or the things or the things that I don't like as much at the app,

00:22:21 ◼   ► or the problems that I see are going to affect smaller and smaller proportions of users.

00:22:26 ◼   ► And I can certainly push those percentages out the more I work on the app.

00:22:31 ◼   ► But ultimately, your perspective of your own app is very different than a typical customer's perception of what the app is and how it will be.

00:22:39 ◼   ► So don't worry too much about that and just kind of push through it knowing that it will be fine.

00:22:45 ◼   ► And I can just say that from the experience of shipping lots of apps, it will be fine.

00:22:51 ◼   ► The worst thing you're imagining is unlikely to be the case. It's much more likely to be a more positive experience than the worst thing you can come up with.

00:22:57 ◼   ► Because you can come up with some pretty bad things.

00:22:59 ◼   ► Yeah. By the way, this applies to lots of things in life that you might make.

00:23:03 ◼   ► I know a lot of people who this applies to their cooking, where they know as they're cooking,

00:23:08 ◼   ► they know as the cook, they know everything that went wrong.

00:23:11 ◼   ► They know that the carrots are a little bit underdone.

00:23:14 ◼   ► They know they put a little bit too much salt in this one stage.

00:23:16 ◼   ► But when the whole family is eating it and enjoying it, no one else is nitpicking it to that degree,

00:23:21 ◼   ► and no one else even notices, and everyone else is just enjoying how good it is.

00:23:24 ◼   ► And you're the chef, and you're sitting there thinking, "Damn it, I wish I would have done this part better."

00:23:28 ◼   ► But this applies to so many things that we make.

00:23:31 ◼   ► Yeah, no, I think it's a good reminder.

00:23:33 ◼   ► You're too close to it to actually see it.

00:23:35 ◼   ► And this is where I think it's probably an important thing, too, to have other people that are supporting you in this process.

00:23:42 ◼   ► Like, my wife is great at doing this with me, where she'll focus on the good stuff, the things that I'm doing well,

00:23:47 ◼   ► and encourage me in that.

00:23:50 ◼   ► And that helps diminish a little bit the sting of the things that I feel like are compromises,

00:23:55 ◼   ► or aren't as good, or whatever it might be.

00:23:57 ◼   ► It's having other people reacting to it, because they don't see that.

00:24:00 ◼   ► All they see are, in many ways, the good stuff, the optimism part of that,

00:24:05 ◼   ► of the glass half full aspects of what you're doing.

00:24:09 ◼   ► And they see your victories, and they can celebrate those with you.

00:24:12 ◼   ► And when you have a hard technical problem, and you finally solve it and crack it,

00:24:15 ◼   ► it's good to have someone to celebrate that with you, just to help push you through this phase,

00:24:21 ◼   ► so you can kind of get into the last one.

00:24:23 ◼   ► All right, so your stage number five is polish. Are you there yet?

00:24:28 ◼   ► Yes. So I entered this phase on Monday, I would say.

00:24:32 ◼   ► That was my official kind of, like, I am at the point, and actually, I had to take a piece of paper,

00:24:39 ◼   ► and drew a sign, and I stuck it to my iMac Pro, and it says, "No more new features."

00:24:44 ◼   ► Like, I've hit the point where I need to remind myself that if I want to get this out the door,

00:24:49 ◼   ► if I want to get out of the despair, if I want to just, like, ship it,

00:24:52 ◼   ► you at some point just have to say, "The features are done, the app is good enough,

00:24:56 ◼   ► and now I'm just going to polish."

00:24:58 ◼   ► And polish is a fun part, like, at least I find it fun, where it's like,

00:25:01 ◼   ► you're just going around the app, kind of looking at it and saying, you know,

00:25:05 ◼   ► "Could I make this better? What is slightly wrong about this?"

00:25:08 ◼   ► Like, "This is what you're looking for." You know, weird layout issues, performance issues.

00:25:12 ◼   ► This is where I, like, I tend to crack over, you know, you crack open the time profiler and instruments,

00:25:17 ◼   ► and start looking around and find those weird, like, "Huh, there's this one function

00:25:21 ◼   ► that takes up huge amounts of time in my application. Why is that? What can I do about it?"

00:25:25 ◼   ► And, you know, you're polishing it up and just making everything a little bit better.

00:25:30 ◼   ► You're not adding functionality, you're not typically adding, you know, much code to it.

00:25:35 ◼   ► This is the refinement and the tidying it up phase.

00:25:38 ◼   ► And two, I would say this is also a great phase, this is the phase where you go through and do stuff like

00:25:42 ◼   ► making sure your voiceover support is good, or those types, or like dynamic type,

00:25:47 ◼   ► like you start doing those little kind of things that maybe don't make as much sense early in the process

00:25:52 ◼   ► when things are still in flux, and if you've spent a lot of time working on voiceover,

00:25:57 ◼   ► on functions and controls that ultimately get removed from your app or changed,

00:26:02 ◼   ► like I find that it works well to do that towards the end when things are stable,

00:26:07 ◼   ► things aren't moving around anymore. I have a great understanding of kind of what the app is,

00:26:11 ◼   ► and how it should function, and the flow, and you just polish. And don't go crazy with this phase.

00:26:16 ◼   ► Like, this phase is an important one, I think, because, you know, as with anything,

00:26:21 ◼   ► like, while the actual process of building it is going to leave some rough edges,

00:26:25 ◼   ► and this is the pulling out the sandpaper and just tidying everything up, you know,

00:26:29 ◼   ► making sure it's performant, making sure it's, you know, layouts and alignment,

00:26:32 ◼   ► and everything is consistent, and also the step of just taking a step back

00:26:36 ◼   ► and trying to come into the app with a fresh set of eyes as best you can.

00:26:40 ◼   ► You know, so like sometimes for me, it's I'll load it up on a different device than I'm used to,

00:26:46 ◼   ► you know, so I do most of my development on my iPhone X, you know, I load it up on an iPhone SE,

00:26:51 ◼   ► and just like the dramatic change in size changes my experience with it,

00:26:56 ◼   ► and so it can kind of give me a fresh set of eyes for it, for like, does everything feel consistent,

00:27:00 ◼   ► does everything feel right, and kind of helps go through there, so you can kind of just spend this little period

00:27:05 ◼   ► polishing everything up before you finally, you know, actually ship it off to the store.

00:27:10 ◼   ► All right, so your final stage is shipping.

00:27:13 ◼   ► When do you think this might happen? Do you want to make any announcements?

00:27:16 ◼   ► Because it's probably going to be before the next episode, right?

00:27:19 ◼   ► Yeah, I mean, so my hope right now is to launch April 17th, which is two weeks from yesterday,

00:27:24 ◼   ► as we were recording, I think, which means, in my mind, I want to submit to the app store,

00:27:29 ◼   ► probably on Monday, so like in about two days, or working days.

00:27:35 ◼   ► So at this point, it's just like polishing it up, submitting it, and then in the hopes that, you know,

00:27:39 ◼   ► App Review is quick now, but you just never know if anything is going to come up and catch you.

00:27:46 ◼   ► And then obviously the shipping stage is not just nothing, because also I have to do all the screenshots

00:27:50 ◼   ► and the app store description and all that kind of thing as well,

00:27:56 ◼   ► but my hope is that I can get that knocked out in the next couple of days,

00:27:59 ◼   ► submit it to the app store, and then sort of launch middle of April,

00:28:04 ◼   ► and in the hopes of just getting this thing out and being able to show it to the world,

00:28:09 ◼   ► which is the exciting sort of next step, obviously.

00:28:13 ◼   ► Well, awesome. I wish you the best of luck.

00:28:16 ◼   ► And I don't know, it's kind of fun. I feel like this is going to be a really great episode of this show

00:28:22 ◼   ► to refer people to as their first episode of this show, because I feel like this is like our entire show

00:28:28 ◼   ► condensed in summary form into one episode.

00:28:33 ◼   ► And I do hope, and I've heard from many people that they find this show useful

00:28:38 ◼   ► because they're trying to get started. And if that is you, then know that it is a rewarding process,

00:28:44 ◼   ► but it is not a straightforward process all the time. It will have ups and downs,

00:28:48 ◼   ► and many parts of it that maybe at the time don't feel great are just totally normal,

00:28:53 ◼   ► and you'll just work through it, and in the end result, you'll get to the polish phase,

00:28:57 ◼   ► and then you'll get to the shipping phase.

00:28:59 ◼   ► And it feels really cool when you hit "Submit to App Review."

00:29:03 ◼   ► It's an experience I've done several times now, and it never gets old.

00:29:07 ◼   ► So just know that it is possible, and you just kind of have to keep working at it.

00:29:12 ◼   ► Thanks for listening, everybody, and we'll talk to you in two weeks.

00:29:14 ◼   ► Bye.