Under the Radar

293: Butterflies in the Garden


00:00:00   Welcome to Under the Radar, a show about independent iOS app development. I'm Marco Arment.

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

00:00:09   You know, we, as indies, we usually are pretty good on the programming front, because that's kind of, you know, that's usually what most of us do.

00:00:17   We are developers and we go out on our own and we make our own apps. There's usually other parts of the skill set that we don't cover well.

00:00:25   You know, we've talked about this before, like, you know, when you hired Steven as an employee, you know, we've talked about, like, hiring for or contracting or bringing in somehow people who are good at things that you're not good at,

00:00:36   or people who can free you up to do way more of the things that you're best at and not have you being bogged down in tasks that you're not so good at.

00:00:45   At first, for a long time in my career, I thought I should hire a designer, because my design skills were not good, it seemed like it was holding back my apps,

00:00:54   and over time, I kind of tried, like, different contract designers here and there for bits and pieces, usually some kind of isolated thing, like a one-time pass-through of the app or something,

00:01:05   but I never really consistently worked with a designer. Instead, what I did was very slowly build up my own design skills with heavy help from Apple's built-in resources,

00:01:16   but, you know, very slowly build up my own skills so that I kind of don't need a designer anymore, at least for most things.

00:01:25   One area that I have tried to do that in and have not ever been good at, I am a terrible manager of myself.

00:01:36   When I work, when I even take work time during the day, how I stay focused at work, you know, when I'm actually writing code or working on the app,

00:01:46   and it goes even larger than that, it goes even to things like how I decide what to work on.

00:01:52   I'm kind of all over the place with my direction of what to work on, and I will sometimes, like, you know, invest a whole bunch of time into a feature that, you know,

00:02:00   maybe is not the most pressing thing on my plate right now, or maybe I'm under a time crunch to try to hit a certain release or date or an Apple release or something like that,

00:02:09   and I start getting sidetracked on something that really is not necessary for that release.

00:02:15   You know, while there are tasks necessary for that release, I could be doing, and I'm instead, you know, kind of misfocusing my time or spending my time, you know, in unwise ways.

00:02:25   And I'm also, I'm very, very bad at long-term time estimation, you know, as I think many, many programmers are.

00:02:34   Estimating software time is difficult. That's a difficult problem across the entire industry.

00:02:40   But it's not an impossible problem. It's impossible for me, but it's possible for people who know what they're doing to do a much better job of it.

00:02:48   So I joked, I think, on the show, I think I joked six months ago or so, my first hire should probably be some kind of project manager for myself.

00:03:00   And in the meantime, I have gotten very lucky. I have gained a really great manager in my life.

00:03:11   And she took an interest in helping me get my giant rewrite out the door, because I've had, you know, you work on the server cache rewrite for, geez, a year and a half now?

00:03:22   Something like that, yeah.

00:03:23   Something like that, yeah, because when I started working on Blackbird, you know, two Decembers ago, it's been about a year and a half.

00:03:28   And I have been feeling really down about my development work for a lot of this time.

00:03:34   I've been really feeling like, oh, man, this was a terrible idea. I had to do it, you know, from a technical debt perspective. I had to do it.

00:03:42   But I have just felt so far from it being possible to complete. It just felt like an impossible thing that will never happen.

00:03:51   And it just felt like the release date was just infinitely far in the future.

00:03:56   And I've always had in mind, I wanted to release it this year for Overcast's 10th anniversary, because that's this year.

00:04:05   The more I looked at it, as time went on, and then we moved our house, and all of a sudden, like that exploded my schedule and my life in so many ways.

00:04:14   And we renovated the house, and that exploded it further.

00:04:18   And so it just felt impossible for me to hit this release target. And I was really feeling bad about myself, you know, earlier this winter and spring, just thinking, like, how am I ever going to get this done?

00:04:29   I'm never going to get this done. And I felt bad about disappointing my customers. I felt bad about losing, you know, the spot in the market that I've built and earned for myself over all these years, because I've been, you know, neglecting the app as I'm doing this rewrite.

00:04:43   I was feeling terrible. Well, I now have a project manager.

00:04:50   That's great.

00:04:51   And she has been coaching me and helping keep me on track and helping me prioritize what to do and in what order to help me hit my intended ship date.

00:05:03   You know, it's funny, like, I feel like I have all this power in me. Like, I can make code. I can write a lot of code. I can make stuff happen. I can build stuff.

00:05:13   It's like if you hold a garden hose, like, three feet down from the end and just let it spray all over the place. Like, that's how my focus has been for most of my life.

00:05:25   And to have actual focus from a real expert in the area, to have somebody who really is good at this be able to, like, really, like, coach me is invaluable.

00:05:38   I now have a real project management spreadsheet that has, like, tasks and time estimates and an intended release date and what I have to do next and what I can do, you know, in the next version after the release versus have to do right now.

00:05:54   For this, for, like, the first version that's out there. And it has been wonderful. There's still a long road ahead, but it feels possible now in a way that it has not felt possible for the last year and a half.

00:06:09   So I am just head down work mode. Like, I am focused. I am working. I am making real progress. And it finally feels good. I finally feel like I am able to make things. That my goal is achievable.

00:06:24   My time that I have been putting in over this last year and a half has not been wasted. I will make it. I will ship it. And that feels wonderful. And so I am in a very good place now. And I wasn't for a long time.

00:06:40   That's so wonderful to hear. And I know, like, you've mentioned this to me, little bits and pieces over the last couple of weeks, but it's been very cool to even see a change in the way that you talk about your work since you've had this help to kind of direct you and organize you and kind of helped.

00:07:00   The hard part was not the coding. It was not what you actually needed to build. It always seemed like it's the sequencing and knowing how much to build and what to build and kind of drawing lines to know what's in this release, what's not in this release, what should we be working on next.

00:07:17   Is there a chain of dependencies to this where it makes sense to build things in a particular order because if you're thoughtful about that ahead of time, then you can have more efficiency in the way that you're building it. And that's just very cool to hear.

00:07:31   It is one of these challenges, I think, because I think both of us certainly fall into this camp. And I imagine many people who would approach kind of the indie app development, you know, software thing, you're coming at it because you have some specific skill. Like, I think it's an incredible, this job that we have would be incredibly difficult if you didn't have a sort of, I don't know the right way to say it, it's like, you have to be above average at something, because you need to be, you need to have a distinctiveness in order to have an edge enough to be able to build something.

00:08:00   And enough to be able to be successful, because it is such a difficult business otherwise that if you're doing everything in the average way, it's going to be very just a really uphill climb. But the things that we have that you and I think we're just we're very good at the coding part and to some degree are okay at the design part.

00:08:16   And we've, you know, but those skills are not, you know, they don't necessarily translate into an ability to be a good project manager and organizer and, you know, the many other jobs that go into this. And I think, when you were talking there reminded me of when I was at college, I was on the rowing team at my college.

00:08:36   And I always remember it was one of those fascinating things where so I would row and there. And but when I was rowing, my job was just to pull on my or, you know, in sequence with everyone else and like make you know, do essentially just do the work. But I'm facing backwards the entire time.

00:08:51   Because there's someone else whose job it is to steer the boat and to make sure that it's going in the right direction and to be doing the actual orchestration of that. And that was the coxswain who sits, you know, who sits in the in the stern of the boat and is actually doing all that steering and I and because of that,

00:09:05   I didn't have to think about it, I could just focus on putting the power down into the water, and relying that someone else is making sure that the boat is going in the right direction, that that's not my job. And I just made me think of it. It's not exactly what you're saying. But I think there's an element of that. And it's like, your, your power is in the coding part. But knowing what code to write when and sequencing that and planning it out and having a sense of are you realistically going to hit a deadline you're imposing on yourself or all those kinds of questions are in some ways a better way to do that.

00:09:34   Or in some ways a better, better served by someone who is not you who can look at the process from the outside. And, you know, based on what you're doing, be updating those estimates and updating those plans, having a sense of things like doing that organization work, and that frees you in some ways to be able to put your head down in my in my metaphor, like just focus on you putting the power into the water, and trust that it's going to end up in, you know, in the direction that you want it to go. And this is something that I've completely seen with myself with Steven is, it is a different, you know,

00:10:03   it is a different mentality that I can have, if someone else is doing a lot of the organizational work that I previously was sort of taking on myself, because I can just focus on like, sort of like I take a ticket, I take a task, whatever the thing is, you know, whatever sits the system that you're using a spreadsheet, that's great. I think I'm using GitHub issues now, which works fine. Like the actual system doesn't matter. But the ability to just be like, here's the next task, take the task, work on the task, put the task down, you know, when you're done with it, put it back into the system.

00:10:32   And that creates a bit of freedom to just be head down rather than having the sense of, oh, I come up with something or I'm working on the right thing. And you kind of end up jumping from thing to thing to thing. And it doesn't really make progress that you want. Or you end up going down a rabbit hole that you don't realize you're down a rabbit hole to like five days down. And then you realize like, why was I doing this? This isn't actually productive. This isn't really heading in the direction that I'm actually trying to make the project go. There's no accountability externally to be like, huh, so what are you working on today? Interesting. So

00:11:02   why are you working on that?

00:11:03   Do you have to do that today? Yeah. It's like you maybe that could wait for something else. Like, you know, it's like, just in a very kindest way, that sense of accountability to something external, I find very freeing and very powerful and to help me be able to put the power down. And it sounds like you maybe had a similar experience. Oh, yeah. I mean, even you know, even what you're what you're just saying of like being able to, to like have someone else who's not you be involved in that process, and to be able to ask good questions or to kind of, you know, make you face some of your own assumptions.

00:11:33   Or make you question like, does do I need to do this right now? Or could this wait until you know, the first point update or something like that? Or you know, how many people are actually going to use this feature? Is it really worth investing all this time right now when you have like, you know, feature a over here, which 80% of your of your customers are going to rely on needs attention, while you know, what you're working on is feature X, which like, you know, point 1% of people will use, you know, maybe that's not the best use your time right at this moment, you know, because I find like, when I look back at my indie career,

00:12:03   I've never been good at time management. And I've never been good at prioritization. I've made up for that by like, I've always said that one of my superpowers as being an indie, like one thing I'm good at that enables me to be an indie is that I'm pretty good at being able to figure out what I don't have to do.

00:12:25   You know, this was a skill born in school, I was, you know, trying to do the least homework possible throughout my entire educational career, such as it was, I learned pretty pretty well, like how to tell what assumed tasks that everyone thinks you need to do, like offer really good, you know, email support for your technical support, like I you don't have to do that.

00:12:47   It's like, I learned what I don't have to do, and how to tell and so I'm able to, I'm able to take on projects like writing a whole podcast app that often take larger teams, I'm able to do it myself because I'm able to narrow down like, alright, here's the features that I actually think I need to do.

00:13:08   Here's features that some people say they want, like for example, like written podcast reviews, they want to be able to write reviews for the podcast they like, well, if I do that, I have to hire a staff to review them for, you know, spam and abuse and I have to have different language support to be able to read different languages and stuff like that.

00:13:23   So that's a huge time and cost hole that it turns out podcast apps don't really need that, it's something people occasionally want, but you don't need it. So I just don't do it.

00:13:32   So I'm good at decisions like that, of like, this whole thing I'm not gonna do, and this opportunity over here, that's an interesting opportunity, I'm going to jump on that.

00:13:41   Like that kind of decision making, I've always been pretty good at. Where I am bad is deciding how to prioritize things to hit, you know, time targets.

00:13:52   So like, whenever, this is one of the reasons why the last few years, like in the fall, I have often missed day one of the iOS release for that fall, because I just wasn't, I didn't have my scheduling together.

00:14:03   Like I just wasn't, I wasn't ready, because I didn't use my time well in the summer or in the fall or whatever.

00:14:09   So my skill in the former of choosing what to do and what not to do, my skill there has blinded me to my lack of skill in the prioritization and sequencing and some of those decision making skills that I'm really bad at.

00:14:25   And so it is wonderful to have someone who's great at that coach me and challenge me and check in and say, hey, how are we doing on this? Like, you know, where are you at, what are you gonna be working on today? Oh my God, it's invaluable. It's so, so good for somebody like me.

00:14:40   And for all of you out there who don't need this skill, that's first of all, that's wonderful for you. Enjoy that.

00:14:48   But I bet there is something that you could need. I bet there is some hole in your skill set or something you're not quite as good at as you could be that is holding you back.

00:15:01   And it can be hard to find that or to really nail that down, especially as an indie, it can be hard to identify that in a way that you could actually like afford to bring someone in.

00:15:12   Even if it's as simple as like bouncing ideas off of a friend over coffee once every week or two, or even if it's as simple as that, find someone in your life that can serve this role. It's very, very good.

00:15:27   We've talked in the past about how beta testing serves this role for the actual testing of your app. And it's wonderful, even if you just have your partner or your friends beta test your app, having like three or four people testing it, you can usually find really substantial shortcomings and sticking points and you can fix them.

00:15:45   I think this is similar. You can bounce ideas and scheduling priorities off people. Like, "Hey, do you think it's worth me spending three weeks doing this?" Even just bouncing that off of a friend can be very valuable.

00:15:57   So I strongly suggest, you know, look around in your own life to see like are there opportunities for this? Maybe you can find like I have, like, "Oh, wait a minute. I was actually really terrible at this and I can probably get a lot more done and make much better use of my coding skill and my time with some guidance."

00:16:16   We are brought to you this episode by Indeed. We're driven by the search for better. But when it comes to hiring, the best way to search for a candidate isn't to search at all. Don't search. Match with Indeed. If you need to hire, you need Indeed. Indeed is your matching and hiring platform with over 350 million global monthly visitors according to Indeed data and a matching engine that helps you find quality candidates fast.

00:16:37   So ditch the busy work. Use Indeed for scheduling, screening, and messaging so you can connect with candidates faster. And Indeed doesn't just help you hire faster. 93% of employers agree Indeed delivers the highest quality matches compared to other job sites according to a recent Indeed survey.

00:16:52   Leveraging over 140 million qualifications and preferences each day, Indeed's matching engine is constantly learning from your preferences, so the more you use Indeed, the better it gets for you. So join more than 3.5 million businesses worldwide that use Indeed to hire great talent fast.

00:17:08   Listeners of our show will get a $75 sponsored job credit to get your job more visibility at Indeed.com/undertheradar. That's Indeed. I-N-D-E-E-D.com/undertheradar. Go there right now and support our show by saying you heard about Indeed on this podcast. Indeed.com/undertheradar.

00:17:27   Terms and conditions apply. Need to hire? You need Indeed. Our thanks to Indeed for their support of this show and Relay FM.

00:17:35   Yeah, because I'm struck by how much of this ultimately is, it's been a topic that's come up a lot recently, I think, on this show, is the sense of understanding that what we're doing in terms of running a business is so multifaceted, that there are so many different roles that we have to face.

00:17:54   And this was the thing, I think, at the end of last year, I had a whole episode where I broke down all of the roles I do, and it was like there was 57 of them, and it was just overwhelming. And I think what so much of this is about understanding what are those roles are essential.

00:18:08   Like there are a couple of very key things that the business will not function if you cannot do. And one of them is the software design, the software actual implementation, the work with App Store Connect, maybe marketing work. There's some of those things that are just like have to be there.

00:18:27   And then there are these other roles that are things that sort of enhance your ability to do the other things. And I think project management very much falls into one of those roles that it isn't necessarily essential. And this obviously, to some degree, you're always doing it.

00:18:42   But there have been definitely been long periods of time in my indie career where I was just kind of like, I don't know, like I was just like a butterfly bouncing between flowers in the garden. Like I would just work on whatever I wanted to work on when I wanted to work on it.

00:18:56   And eventually you'd get to this place that you're like, "Oh, this seems shippable. Maybe I'll ship it." And then you just like move on to the next thing. And it is very undirected, very kind of just maybe whimsical. Like, you know, you have the waterfall, you have Scrum, then you have whimsical development where you just like make it up and bounce around.

00:19:12   Yeah, shot in the dark development. Yeah, it's like that's exactly how I've done everything. Like I just kind of like I make some stuff, I bounce around like you were saying. And then like at some point I feel an itch like, "I want to ship this." And I just ship it. Like there's no other planning. There's no like, there's no consideration. There's no like long term plan. It's just I feel like shipping right now. Get this out there.

00:19:34   And the thing about that is like, it can work, right? It is obviously like you and I are both examples that is it is not that a more structured or rigorous or thoughtful project management approach is essential. But it is very useful. And I think it's one of these interesting tensions that you can run into of it's like finding whether it's appropriate or necessary to deploy this kind of a thing will I think depend a lot on what kind of work you're trying to accomplish that.

00:20:03   I think this kind of, you know, actually really thinking through in a project management view in terms of breaking, you know, taking big ideas and breaking them down into tasks and estimating how long those tasks are, and thinking of those tasks in terms of should they be sequenced and how should they be grouped. Like those exercises, which I remember, like, you know, and I took a software engineering course way back when I was, you know, getting my degree. I remember like, you have a go there's you can have these very regimented, you know, design processes for stuff like this. And it's like, the regimentedness of that is probably

00:20:33   not as what is helpful as actually just the exercise of going through it. And it's like, I find this kind of thing is super helpful for any project that is going to take me more than probably a week, maybe a week and a half, two weeks. Like if it's a shorter timeline than that, it's some feature that I'm working on. I can probably get by with the like butterfly in the garden approach to development. But as soon as it becomes longer than that, as soon as it becomes something that you're going to be measuring in months, it probably is much more important to actually take the time

00:21:03   you know, in the in the beginning to work through the actual plan and having to have a sense of what you're going to do. And for me, this is always like the most important part of this is like the right after WDC period is working out. Okay, what does my summer look like? And I think maybe to make that this like, like your experience is awesome for getting this this this update out. But I think maybe the the generalizable version of that for all of us is like in two and a half weeks, we're going to be faced with a summer with lots of opportunities, lots of things that we could

00:21:33   build things that we should build. And starting at the beginning of that period with a period with a exercise of saying, Okay, what am I going to do? How am I going to approach this from a project management perspective, is very helpful, regardless of whether you actually follow through on your plan. It's like the planning is in some ways the most helpful part, the day to day accountability and the back and forth and the management of that is super helpful. And it's something that I think I as like I've said, I increasingly value that that is a role that is more heavily

00:22:02   part of my life now. But the really valuable part is the conversation. It's like, you know, it's the back in the day when I used to do agile at a day job, it was like the sprint planning meeting was the thing that was actually super helpful far more than the actual like, sprint items and the organization and all the like the infrastructure we had to do there, which was necessary because we were working with a larger team and you had to manage it. But the really valuable part is that we took a time every two weeks to sit down and be like, Okay, what are we going to work on? What worked

00:22:32   last, you know, cycle what didn't work this cycle. And I think that's one of those things that is hard to necessarily appreciate how valuable it is until you don't do it for a while, which is probably definitely I've definitely done. And you just kind of end up down, you know, wasting so much so much effort going in directions that aren't what you actually want or don't actually aren't making your product better or making it or making it better in ways that aren't going to actually make the you know, a tangible impact on your business. And so I think if you it's like for all of us,

00:23:02   this is a good opportunity coming up in a couple of weeks to really take this approach because any project that's going to last more than a few weeks, you need to probably spend some time up front working on and having a plan, whatever that plan may be.

00:23:17   Yeah, especially in the context of WDC because, you know, when when I look at areas that that I'm especially bad at these areas, and I think a lot of indies are to a lot of them are technical purity goals, where like one of the things that I've decided to push off is the watch app. You know, I've written I've rewritten the entire base of the app and the entire UI, like basically everything except the audio engine, which is the same. But like I've the entire sync and storage layer. And

00:23:47   the entire UI is all rewritten from scratch. The old watch app or the current watch app that's out there is built on all the old stuff. The new stuff is way faster and way easier on the servers to sync and it's way faster to run. It's way lighter weight. So the watch would really benefit from it. But I'm not going to make the watch app on time.

00:24:07   And so I was thinking, like, as I was, you know, before I really like sat down and plan all this stuff out, I was thinking I have to do the watch app at the same time. I have to do everything at once because of technical purity. Like then I can remove all the old code from the from the app project and the code base and I can just have all the new stuff. But what that does is push everything back another few months.

00:24:28   Why would I do that when it turns out most people are using just the phone app? Like the watch app is very popular, although not at all for stand alone playback, which is a big part of its code. But the use of the watch app as a phone remote is very popular.

00:24:43   And so I need to do it at some point. It's important to do it at some point. But it took someone else to point out, like, do you need to do that for this release? And I was like, oh, actually, no. No, I don't. Like, I could do the watch app later. I just, for technical purity, I want to have done it all this way.

00:25:05   Like, and I feel like with with WBDCC season, so often we have temptations like I want to move everything to the new API or to the new system or whatever, whatever it is that we're able to adopt with with, you know, what they're going to announce.

00:25:18   It's so tempting to be like, I want to make everything new again and move everything to the new whatever the new framework, the new language, the new API, whatever.

00:25:27   And so often we let those technical purity goals interfere with actually serving our customers. Like, what my customers really need right now is a new iOS app.

00:25:37   And if the watch app takes another few months before I get it out the door, it's fine. No one cares except me with my larger than necessary Xcode project.

00:25:46   Like, no one else cares. It doesn't affect anything else at all. The watch app will keep working exactly as it's been working. Who cares?

00:25:52   And it can often take someone else to challenge you to say like, hey, this thing that you keep raving about of converting everything to Swift async or whatever, like, how important is that to your customers?

00:26:03   And that's a really important thing to keep in mind as we head into this season of temptation, season of technical temptation.

00:26:09   Make sure to keep keep the customer needs in mind and possibly paramount to the ideals that we would love to achieve technically.

00:26:19   Yeah. And I think related to that, too, is it's the value of understanding that you having a deadline for your work, which I think is something that you sort of have imposed on yourself for this particular update,

00:26:30   is the sense of is also such a useful forcing function to help you to make those kinds of choices in a more customer focused way.

00:26:39   Because I think it's one of the awkward things of the way we do our businesses is that we don't tend to have real hard deadlines, even things like iOS launches, like, is it important to be day one?

00:26:50   If it is, then maybe it is an important deadline. But if you're not, you know, doing something that's totally novel in a way that will be super important for your app, like maybe you could say, oh, maybe I'll just do it, you know, whenever I can lift shift, or I'll ship a basic version of it on day one, and then just kind of roll it out or whatever.

00:27:06   But the sense of having a deadline is also something that is like one of the project management things that is so helpful to for me is that I have to say at some point, you know, this is the I have a point where I say, you know, put up my no new features sign in my office and only work on polishing and refining the app.

00:27:22   But it's like, I have to have a deadline where I'm going to put up that sign and say, this is it. This is what I'm working towards. And I think the earlier I know when that deadline is going to be, the more I'm able to plan around it and work towards it in a way that is actually productive.

00:27:35   And, you know, not cutting, I'm cutting the right corners, maybe as a way as a way of thinking it because you're inevitably you're never going to be able to ship everything you ever wanted all at once. Like that's just never going to happen. I've been doing this for a long time, and I've never been able to do it. So either, you know, it's either it's impossible or so you have to be when you know, much better developer than anyone I've ever heard of. So it seems like you're always gonna have to make those trade offs. And so no made, you know, making those trade offs early in the process because you're working against a deadline is I think, a very helpful way to do that.

00:28:05   And it's helpful too as well to make sure that you're on the right track.

00:28:07   Yeah. And in so many ways, as we keep finding as we get older, you don't have to do everything alone. It turns out having other people help you is really beneficial and really nice. Thank you everybody for listening. And we'll talk to you in two weeks.

00:28:24   Bye.

00:28:25   Thank you.