Under the Radar

Under the Radar 106: Long Projects


00:00:00   welcome to under the radar a show but

00:00:02   independent iOS app development I'm mark

00:00:04   Worman and I'm David Smith under the

00:00:06   radar is never longer than 30 minutes so

00:00:08   let's get started so today I wanted to

00:00:12   talk through an experience I've been

00:00:13   having recently where I so it's very

00:00:18   fair to say I typically do lots and lots

00:00:20   of small little bursts of work on a

00:00:23   variety of my different apps like I have

00:00:25   a lot of different apps so I tend to

00:00:26   just like be like a little bee just

00:00:27   buzzing from flower to flower like

00:00:28   taking care of little things as they

00:00:31   come I never know and then I find myself

00:00:33   in a situation where instead I need to

00:00:36   kind of sit down and have a kind of a

00:00:38   long extended you know development

00:00:41   project to really push a product forward

00:00:43   and for me right now that's around

00:00:46   workouts plus plus which is my workout

00:00:49   management and configuration app for the

00:00:52   Apple watch and so usually I would say

00:00:55   the longest I work on a you know on a

00:00:58   particular update to an app is maybe a

00:01:00   week sometimes two at the most and at

00:01:02   this point I'm coming up on two months

00:01:04   working on this update for workouts plus

00:01:06   so it's a pretty substantial amount of

00:01:10   time and energy and investment that has

00:01:12   gone into this update and you know while

00:01:13   I've had to do bits and pieces from side

00:01:15   to side which I'll actually get into as

00:01:17   a topic it's a long time thing and I

00:01:20   think is it looking right now I'm aiming

00:01:22   to have the update out at the beginning

00:01:23   of December which would have meant that

00:01:26   we've been about three months of work

00:01:28   which is a substantial investment in him

00:01:30   for me in this case too and I also have

00:01:33   this vague sort of outside pressure that

00:01:36   I want the app to be out at the

00:01:37   beginning of December so that it can be

00:01:39   you know sort of nice and stable and out

00:01:42   and available for the new year when is

00:01:45   typically a good good time and a big

00:01:47   time for workout and health and fitness

00:01:49   related things

00:01:50   so as I've been going through this

00:01:53   process I've been trying to keep be

00:01:54   aware of kind of some of the things that

00:01:56   I've had to keep in mind and some of the

00:01:57   things that I've done as a result and it

00:02:00   seems like an interesting topic to talk

00:02:01   about through the show so like probably

00:02:04   best place to start it's just to kind of

00:02:05   unpack some of the things that I've

00:02:07   tried to make sure that I did before I

00:02:09   started and so use some of the questions

00:02:13   that I thought I needed

00:02:13   like it's like why am I doing this like

00:02:16   and you know why do I want to do this

00:02:17   update do I think this is actually a

00:02:18   good idea is it worth it like is this

00:02:21   going to be worth it either in terms of

00:02:23   me you know making the apps dramatically

00:02:25   better expanding my market making more

00:02:27   money or honoring the attention of press

00:02:30   or Apple like whatever it is it's like

00:02:32   trying to understand why I'm doing it

00:02:34   and if it's actually going to be worth

00:02:37   doing trying to understand what I'm

00:02:39   actually trying to accomplish most least

00:02:42   so that I can know when I'm done because

00:02:45   from experience I know that often

00:02:46   what'll happen is I will go into one of

00:02:48   these development projects where I'm

00:02:49   like okay I give myself permission to

00:02:51   kind of run wild and to not have it be

00:02:54   just a couple of weeks and then I can

00:02:57   just sort of end up aimlessly wandering

00:02:59   in the wilderness for weeks and weeks

00:03:01   because I don't really know where I'm

00:03:03   going and I'm just enjoying like the

00:03:04   development process which can be kind of

00:03:07   fun sometimes but can be really damaging

00:03:09   or problematic to getting other things

00:03:12   done if I just like to have this aimless

00:03:14   wanderer so trying to think about like

00:03:15   when will I know I'm done what are the

00:03:17   the core features what it's like my

00:03:19   basic it's almost like when you're

00:03:22   running a term paper or something and

00:03:24   you so if you try and write the

00:03:25   introduction and the conclusion and then

00:03:27   you fill in the middle it's like trying

00:03:28   to work out well what am I going to put

00:03:30   in my release notes when I submit this

00:03:33   to the app store and while that may

00:03:35   change you know how this development

00:03:37   goes it's like if I can't concisely

00:03:39   describe what it is I'm trying to do I'm

00:03:41   almost certainly going to get into

00:03:43   trouble then asking questions like is it

00:03:47   possible and if it's not how do I know

00:03:52   or if I'm not sure if something's

00:03:54   possible like in for example in this

00:03:56   update I've been working on a lot of

00:03:57   Apple watch audio playback stuff some of

00:04:01   that is like kind of possible some some

00:04:03   of it is completely impossible you're

00:04:05   being very kind we've talked about this

00:04:07   before I didn't in Kate detail but

00:04:11   finding that line between possible and

00:04:13   impossible was very important to find

00:04:15   out up front and to make sure before I

00:04:18   committed a lot of energy to the parts

00:04:21   of audio playback on the watch that are

00:04:24   the support of supporting stuff you have

00:04:26   to do you know

00:04:27   the easy part in some ways is that is

00:04:31   that core playback experience like the

00:04:33   hard part is all the other management

00:04:34   and file management and configuration

00:04:36   and syncing and stuff you have to do

00:04:38   it's like making sure I deal with that

00:04:39   first but it's kind of this process of

00:04:41   saying like is this possible am I sure I

00:04:43   can do it what do I want to do and then

00:04:46   why am i doing it and if I can answer

00:04:47   those questions that I'm probably in a

00:04:49   pretty good place to get started yeah I

00:04:52   this is an area the whole just like long

00:04:54   term update or new app management that

00:04:58   I'm just very bad at this I'm very very

00:05:01   bad like I I gave a talk a while ago to

00:05:03   NS conference about how I planned

00:05:06   overcast from a marketing perspective

00:05:07   like 404 1.08 for the initial app launch

00:05:10   and I I made this big document you know

00:05:12   similar to what you were just saying

00:05:13   about how you know how you you kind of

00:05:16   imagine the app store release notes as

00:05:19   like a goal and like what what what

00:05:20   should those say and how do I get there

00:05:22   I did I did a similar thing where like I

00:05:25   basically like laid out the the

00:05:27   marketing bullet points for overcast why

00:05:30   choose this over any other podcast app

00:05:32   and Latos had early on and did a bunch

00:05:35   of market research you know looking at

00:05:36   the other apps to see like it that were

00:05:37   in the that were competitive at the time

00:05:40   and saying like I well why would

00:05:41   somebody use overcast over app X and I

00:05:44   went through all the competitors at the

00:05:46   time big and small why should somebody

00:05:48   choose overcast over this app and that

00:05:50   kind of helped me plan my marketing you

00:05:53   know focus for the app it kind of helped

00:05:56   inform the the feature selection what to

00:05:59   focus on what what to not really focus

00:06:01   on certain markets that I would chose

00:06:04   just to not address I'll have my app do

00:06:07   XY and Z is you know things like smart

00:06:09   speed and voice boost and the main you

00:06:11   know the the reorder of a playlist stuff

00:06:13   and everything all that stuff that was

00:06:14   like my main marketing bullet point list

00:06:16   an app is so much more complicated than

00:06:18   that in practice there's so much more

00:06:21   you have to do those core features of

00:06:23   the app were done probably after three

00:06:28   or four months or at least close enough

00:06:29   to done and then during the beta I kind

00:06:31   of finish them but the app took me like

00:06:33   a year and a half or two years to make I

00:06:35   think so I forget exactly it's been a

00:06:37   while and so the entire rest of the time

00:06:40   was spent

00:06:41   things that were not on my planning list

00:06:43   you know just doing all the different

00:06:45   administrative screens and the backend

00:06:48   on the servers and all the different UI

00:06:51   details and I find that I'm very very

00:06:54   bad at time management and and I would

00:06:58   say completion estimation deadlines

00:07:00   estimation once I get into all that

00:07:03   nitty-gritty stuff of you know like the

00:07:06   main feature might be complete or close

00:07:08   to complete because the main feature

00:07:10   might be some cool technical thing that

00:07:12   I'm doing that you know that took maybe

00:07:14   a day or two or a month and in the worst

00:07:16   cases you know but then the entire rest

00:07:19   of the app around it that's so much more

00:07:22   complicated you know I had a major

00:07:24   problem with this this past summer when

00:07:26   the iOS 11 changes came in and and even

00:07:30   before I knew about the I out the the

00:07:32   iPhone 10 you know even when I when it

00:07:34   was just I was 11 and drag and drop and

00:07:36   all the new tableview mechanics and and

00:07:38   everything else I thought I would have

00:07:41   time for a major feature update this

00:07:43   fall as well as a UI update to iOS 11

00:07:47   and not only did I did I totally fail at

00:07:51   that but then at the very last minute

00:07:53   the iPhone 10 was announced and you know

00:07:57   we all knew it was rumored we and we

00:07:58   kind of knew that something like this

00:07:59   was coming but I don't think any of us

00:08:01   really knew how much work it would be

00:08:02   for apps to adopt it well my original

00:08:05   plan for my 4.0 update could contain so

00:08:09   much more than what I actually shipped

00:08:11   us 4.0 because the basics of it of just

00:08:14   like keeping up with Apple that took the

00:08:17   entire amount of time I had and the very

00:08:20   very small number of bullet point

00:08:22   features that actually made it out in

00:08:23   addition to those like though like the

00:08:25   new like contextual row actions where

00:08:27   you can pull across the whole road to

00:08:29   delete like mail I added those on the

00:08:31   very last day of the beta it took me

00:08:33   half a day I added them in the very last

00:08:35   build I think the entire rest of the

00:08:38   time was spent on yeah every on the

00:08:43   massive amount of work required to just

00:08:45   update the UI for these things and to to

00:08:47   pull out some of my old hacks and put it

00:08:49   in a couple of new hacks but try to keep

00:08:50   the new hacks at least fewer a number

00:08:53   that were severity than the old one

00:08:54   and I just completely mismanaged and

00:08:58   more importantly totally miss estimated

00:09:01   the entire project yes I feel like

00:09:04   through the thing that I sound similar

00:09:07   happened to you but I know happens to me

00:09:08   many times is not necessarily realizing

00:09:11   to how once you start embarking down the

00:09:15   road of a big update the awkward

00:09:17   position it finds you you find yourself

00:09:18   in is then like the app from a

00:09:20   user-facing perspective essentially

00:09:22   appears stalled then your note use all

00:09:27   of a sudden you stop getting small minor

00:09:29   like incremental updates that you know

00:09:32   like the things that just take a half a

00:09:34   day to work on to build an ad to the app

00:09:36   like all of a sudden they get sort of

00:09:38   stuck behind this dam of this big

00:09:41   feature that it feels really it's either

00:09:42   technically difficult to ship because

00:09:44   you end up with weird like version

00:09:46   control management stuff of like well I

00:09:48   could add it to the old version but the

00:09:51   old version is like massively gonna be

00:09:53   you know ripped apart and we put back

00:09:55   together or it's doing work that is

00:09:57   going to be you know replaced or have to

00:09:59   be repeated and you know in the actual

00:10:01   like the new for the new feature branch

00:10:03   or things like that like you end up in

00:10:05   these really awkward places where

00:10:06   suddenly the app just kind of gets stuck

00:10:09   and that's really awkward and I feel

00:10:11   like in some ways it's a good thing to

00:10:12   keep in the front of my mind that you

00:10:15   know right now all of my apps

00:10:16   except for workouts plus plus have been

00:10:19   updated for the iPhone 10 and that's

00:10:23   like that's good like that all those

00:10:25   update those updates are up but for

00:10:27   users of workouts plus plus as much as

00:10:30   it's nice for me be able to say oh

00:10:31   coming soon like awesome amazing update

00:10:34   that I think you're really going to love

00:10:35   it's kind of awkward to that it's you

00:10:39   know the app that I'm putting the most

00:10:40   effort into is the one that is falling

00:10:42   the most behind and so it's probably

00:10:45   worth making sure that as we're starting

00:10:46   on these projects it's like a sort of

00:10:48   timing them right like often I I think

00:10:51   we've talked about before in the show

00:10:52   where it's often good to do these types

00:10:53   of updates maybe in the sort of like

00:10:57   February to April time group timeframe

00:11:00   in sort of apples development cycle

00:11:02   where things tend to be fairly calm

00:11:04   before wEDC

00:11:05   which I didn't do this time

00:11:08   but in general it's just a weird thing

00:11:11   to keep in mind that like you have to

00:11:13   make sure that is undertaking this

00:11:15   project and pushing making putting the

00:11:16   app into this weird sort of hiatus state

00:11:19   like worth it and a good thing to do I'm

00:11:23   just otherwise you can just sort of you

00:11:25   could actually end up shooting yourself

00:11:26   in the foot by making the app get where

00:11:28   feel sort of feel worse and worse to

00:11:29   your customers and by the time you

00:11:31   finish you arrive it's like you arrive

00:11:32   you arrive back and be like hey here's

00:11:34   this great new thing and they've all

00:11:35   left and that could be rather

00:11:37   problematic this episode is brought to

00:11:40   you by euro never think about Wi-Fi

00:11:43   again euro has created the dream Wi-Fi

00:11:46   set up a fast reliable connection

00:11:48   throughout your entire house even out

00:11:50   into your backyard if you want to and

00:11:52   now is the best time to get on board

00:11:53   with Euro is they've just released their

00:11:55   super slick second generation devices

00:11:56   era has have introduced their tribe and

00:11:59   second generation model along with the

00:12:01   EO beacon which allows you to build a

00:12:03   Wi-Fi system perfectly tailored to your

00:12:05   home the second generation arrow

00:12:06   includes a third five gigahertz radio

00:12:08   making it twice as fast as before this

00:12:11   lets you do more than ever whatever your

00:12:12   Wi-Fi needs zero has the power to

00:12:14   blanket your entire home in fast

00:12:16   reliable Wi-Fi it sits flat on any

00:12:19   surface just plug into the wall with the

00:12:20   included power adapter and you are ready

00:12:22   to connect your euro either with

00:12:23   Ethernet or wirelessly and the new arrow

00:12:26   also includes a new thread radio which

00:12:28   lets you connect a low-power devices

00:12:29   such as locked doorbells and more and

00:12:31   the new euro beacon is pretty cool the

00:12:34   Aero beacons you plug it into a wall and

00:12:35   it expands coverage into any room you

00:12:38   can add as many ear beacons as you want

00:12:40   as long as you have a base ear device

00:12:41   the for them to connect to and it even

00:12:43   includes a built-in LED night light with

00:12:45   an ambient night sensors the beacon is

00:12:47   super cool super slick plugs right in

00:12:49   sits flush against the wall you barely

00:12:50   even noticed there it's really great the

00:12:53   ero app also to manage your network from

00:12:54   the palm of your hand and you can also

00:12:56   easily create and share a guest Network

00:12:58   too they make it so easy to do all this

00:13:00   stuff and the ear accustomed ursa port

00:13:02   is great if you need any help the new

00:13:04   era system starts it's just 399 for one

00:13:06   second generation arrow and two beacons

00:13:08   and that is everything you need for I

00:13:10   would say almost any place if you need

00:13:12   more you can add more later but you

00:13:14   probably don't need more than that

00:13:15   listeners of this show can get free

00:13:17   overnight shipping to the US or Canada

00:13:18   when you head over to eurocom it's EER

00:13:21   Oh calm and use promo code radar that's

00:13:24   yo comm promo code radar for free

00:13:26   overnight shipping thank you to ero for

00:13:28   supporting this show so once you've

00:13:31   gotten through all that and you're

00:13:32   actually in the middle of building an

00:13:34   update the hardest things I find in a

00:13:37   lot of ways is keeping motivated keeping

00:13:40   keeping progress moving forward every

00:13:43   day because you know in a large port

00:13:46   like you an independent development

00:13:48   often feels you know fairly isolated or

00:13:51   lonely but I definitely feel is the most

00:13:53   isolated for me when I'm working on

00:13:56   features that take weeks and weeks or

00:13:57   months and months to work on because

00:13:59   it's just kind of like me often though

00:14:01   my own little world working on stuff one

00:14:04   thing I wanted to mention in the show is

00:14:07   over the years of doing this I've

00:14:09   developed a little like I don't know

00:14:11   like it's a little mental crutch that

00:14:13   for me helps me to stay motivated and to

00:14:16   feel like I'm continuing to move forward

00:14:18   because often what will happen you know

00:14:22   you is you can spend all day like a

00:14:25   definitely a focused hard-working day of

00:14:27   effort and you get to the end and you

00:14:30   don't feel like you accomplished

00:14:31   anything and that is just so motivate

00:14:34   demotivating so crushing like those days

00:14:37   are that like then make me start

00:14:39   questioning all kinds of things about

00:14:40   whether I should be working on this is

00:14:42   this good should I just completely drop

00:14:44   this app and like go do something else I

00:14:46   find a new career I'm terrible at this

00:14:47   like lots of lots of knock not

00:14:51   productive good things but you're lucky

00:14:52   if those are just days to I've had

00:14:53   months like that yeah but one thing that

00:14:57   I have found to be helpful for me

00:14:59   personally is to try and every day have

00:15:05   something one thing that I did that day

00:15:08   that I can point to which is can be as

00:15:13   small as Paul can be big whatever it is

00:15:16   but I try and structure my work such

00:15:20   that at the end of the day I have

00:15:22   something that one thing that I can

00:15:24   point to and say like that's what I did

00:15:26   that little feature that thing and it's

00:15:29   a concrete tangible example and

00:15:31   sometimes you can't do this you know

00:15:32   some some projects will just

00:15:34   you're do you're doing some deep model

00:15:36   layer work that takes a few days and

00:15:38   like okay but once you've done it like

00:15:40   then that becomes your thing for the

00:15:42   land those three days but I found that

00:15:45   to be a really and then at the end of

00:15:47   every day I consciously make the that I

00:15:51   consciously make the decision to think

00:15:52   about what I did and to like remind

00:15:54   myself of what I of that thing that I

00:15:56   accomplished even if it is just one

00:15:58   thing and typically it is just one thing

00:15:59   and that I found doing that over and

00:16:04   over again kind of that this that keeps

00:16:07   me honest in terms of keeps me from

00:16:10   getting sucked down rabbit holes that

00:16:12   are sort of unproductive and I'm not

00:16:14   actually getting anywhere in you know

00:16:16   it's like if I have nothing to show for

00:16:17   the end of the day and that happens like

00:16:20   two or three days in a row like maybe

00:16:22   something's wrong maybe I'm doing

00:16:23   something that I really shouldn't be

00:16:25   doing and it gives me that that that

00:16:29   awareness and on the flip side it helps

00:16:32   me to just be aware of that and say like

00:16:35   yes like I did that I did this and if

00:16:37   you and I what I found is like it's

00:16:39   somewhat obvious but like if you string

00:16:40   together enough days where you

00:16:42   accomplish something tangible every day

00:16:43   you make genuine progress and so I don't

00:16:46   that's just like it looks like silly

00:16:47   trick that I've found for tricking

00:16:49   myself and to feel into making progress

00:16:50   especially in the midst of things that

00:16:53   can take a long time yeah it also you

00:16:56   know for me like you know as I mentioned

00:16:57   them a few minutes ago do my little

00:16:59   swipe actions thing in half a day at the

00:17:01   end it made me feel a lot better about

00:17:03   the release like it made me you know I

00:17:06   was having so much doubt during the

00:17:08   development cycle of my for of like am i

00:17:11   doing enough here that customers will

00:17:13   actually care about like if this is

00:17:14   taking you know I'm spending as we

00:17:16   talked before - I'm spending months on

00:17:19   this update and is this actually

00:17:22   including anything that my customers

00:17:23   will get excited about or is it just

00:17:25   changing things or just keeping up with

00:17:28   iOS and new phones like that's just a

00:17:30   bare minimum of what I should be doing

00:17:32   is just keeping up you know ideally I'm

00:17:34   also making things better and so I

00:17:36   started to look for features that were

00:17:38   fairly low complexity to implement that

00:17:42   people have been asking for and just try

00:17:44   to knock some of those out in in like

00:17:46   the last few days that I had

00:17:47   and that really helped a lot not only

00:17:50   for making the update better but for

00:17:52   making me feel like I had spent all this

00:17:55   time - for a for like a sum total

00:17:58   product here of something that was

00:18:00   actually worth that time even though the

00:18:03   distribution within that of how I spent

00:18:05   that time versus those meaningful

00:18:06   features might not have been ideal yeah

00:18:10   and I think the important thing there is

00:18:11   even it almost makes me wonder if you

00:18:12   would have been well served to do those

00:18:15   small little features in the middle of

00:18:17   your development cycle as best as you

00:18:18   could to try and like have these little

00:18:22   rewards or these little like

00:18:25   psychological perks clean Oh for myself

00:18:29   like I love having every now and then

00:18:30   I'll often ends up happening like this

00:18:32   on a Friday but I'll just kind of like

00:18:34   have a day where I just allow myself

00:18:35   like the thing I'm going to do is try

00:18:39   something kind of crazy and I enjoy that

00:18:43   and it's like it's a motivating thing

00:18:44   and an encouraging thing and it allowing

00:18:48   myself kind of a conscious decision to

00:18:50   do that it allows me to make progress in

00:18:53   the like that the kind of the meat and

00:18:55   potatoes part of the app where it's

00:18:57   maybe not quite as fun or not quite as

00:18:59   interesting it's like well once I've

00:19:00   done this then I can work on that cool

00:19:02   thing that I know I'm gonna feel good

00:19:03   about even though even if it mazey might

00:19:06   may be just a teeny little detail or

00:19:07   something that most users will never

00:19:09   notice like I remember when I was

00:19:12   working on the achievement system in

00:19:14   pedometer plus plus where you can earn

00:19:16   badges if you work on them like I

00:19:19   allowed myself a day where I was just

00:19:21   gonna work on making the badges sparkle

00:19:24   when you earn them that's so cool which

00:19:27   was just like a totally silly idea like

00:19:29   it's it's I love that this I love it in

00:19:31   the app I think it works really well and

00:19:32   like it's you know the the menu bar

00:19:35   button at the top that opens the badge

00:19:37   page sparkles too with the same effect

00:19:39   when you have you know have you when you

00:19:42   earn a new badge and things and like

00:19:43   it's great but it was like it was a

00:19:45   reward for a lot of the other hard work

00:19:47   of doing like some ridiculously or so

00:19:51   maybe surprisingly hard and logic

00:19:53   computation to work out you know how you

00:19:56   how you calculate how long your streak

00:19:58   is and what the longest streak you have

00:19:59   is and like there's a really

00:20:01   nasty work you have to do to make that

00:20:03   make that happen but it's like having

00:20:06   these little these little checkpoints

00:20:07   along the way and I thought it was so

00:20:08   fun on that day too the thickness for my

00:20:10   one thing to be like cool sparkly pixie

00:20:13   dust like that was great and it's just

00:20:16   being okay with the fact that like it's

00:20:17   if it sounds a little silly that like

00:20:19   you know I'm a grown professional but

00:20:21   like these are the things I have to do

00:20:23   to make to keep myself motivated be

00:20:25   understanding that if I if I'm

00:20:26   unmotivated if I'm not working

00:20:28   effectively like I'm not making progress

00:20:32   like it's not like oh yeah it's like I

00:20:35   should just intrinsically be motivated

00:20:37   to always work at maximal efficiency

00:20:39   it's like no I have to trick myself and

00:20:41   I have to do things that get you allow

00:20:44   me to get around the fact that I'll get

00:20:46   stuck and I'll get demotivated and then

00:20:48   my productivity overall will drop

00:20:50   precipitously as a result well that you

00:20:53   know you're human like you know you

00:20:54   can't you can't blame yourself or feel

00:20:56   bad for being human and like nobody

00:20:58   likes working tirelessly day after day

00:21:01   on on a project that feel like it's

00:21:03   going nowhere and a lot of people don't

00:21:05   have the choice in the matter you know

00:21:06   they they just have to do that because

00:21:08   their job is you know not very

00:21:10   fulfilling or not being managed well we

00:21:12   as Indies have the freedom we're lucky

00:21:14   that we have the freedom that we can

00:21:17   actually take a day in the middle of a

00:21:19   giant slog of trying to figure out UI

00:21:21   tableview x' new crazy behavior or

00:21:22   something like that or some weird bug or

00:21:24   trying to implement some really tedious

00:21:26   new thing we can take a break in the

00:21:28   middle of that and do something for an

00:21:31   afternoon or a day that that is

00:21:33   fulfilling that we can complete in that

00:21:36   time and that can work that can you know

00:21:38   the whole reason that we that many of us

00:21:41   that I should say but certainly for me

00:21:43   the you know one of the reasons why I

00:21:45   love programming so much and one of the

00:21:46   reasons why I became first a self-taught

00:21:49   and then eventually a more formally

00:21:51   taught programmer is that you know when

00:21:54   when normal people I you know I say I

00:21:56   say loosely attempt to program or do

00:22:00   something else that they don't really

00:22:01   enjoy doing like it may be a certain

00:22:03   subject in school growing up when they

00:22:06   succeed they might not get any kind of

00:22:09   satisfaction out of that

00:22:10   the people who stick with programming

00:22:12   are the ones who can make it through all

00:22:14   the incredibly

00:22:15   tedious and frustrating parts of it

00:22:17   which there are many because they are

00:22:20   motivated so much by the satisfaction

00:22:23   when you make something when something

00:22:26   works when you build something you know

00:22:29   programmers who really get into it are

00:22:32   the ones who like that little hit of

00:22:33   satisfaction or adrenaline or whatever

00:22:36   it is it motivates us through the rest

00:22:38   so you have to find ways if if you're if

00:22:42   you are that kind of person like I am

00:22:43   you have to find ways to keep that

00:22:46   motivation going even when you have to

00:22:49   go through a very very long slog and I

00:22:52   was very bad at that this summer found

00:22:55   it very very hard to to keep myself

00:22:58   motivated and to work hard and to make

00:23:00   forward progress that have just banging

00:23:02   my head against the wall and I think one

00:23:04   thing to this I have found to be very

00:23:06   helpful is trying to involve other

00:23:10   people in the process as best as you can

00:23:12   is another thing that I find really

00:23:14   helps for these kind of these long slogs

00:23:15   and so you know often it's having a very

00:23:18   small there's not even really a beta

00:23:21   group but just other people who are

00:23:23   using the app who can then be giving you

00:23:27   feedback giving you suggestions giving

00:23:29   you reactions and even just giving you

00:23:31   that sense of like you know you ship

00:23:33   something that they enjoy or they like

00:23:34   and they can tell you they like it like

00:23:36   that's encouraging and motivating and

00:23:39   this is well before you'd get into the

00:23:40   you know kind of a broader beta test or

00:23:43   something but just to try and make it so

00:23:44   that it's not just you you know even if

00:23:47   it's just you and a couple of friends or

00:23:48   you and your spouse or whoever it is but

00:23:52   just making it so that it's not just

00:23:53   like if you can make that a little bit

00:23:55   bigger I find this really helpful and

00:23:57   it's also probably helpful in making

00:23:58   sure that you're actually making

00:23:59   progress that you know you can get some

00:24:02   prick you can have some perspective

00:24:03   shared perspective on like is the app

00:24:05   better now with this update than it was

00:24:07   before or not because you can easily

00:24:10   sort of find yourself sucked down into

00:24:11   the rabbit hole where you are doing

00:24:14   something because it's what you've been

00:24:16   working on for a long time but you may

00:24:18   be kind of losing the forest for the

00:24:19   trees at a certain point so it's

00:24:22   definitely helpful to kind of spread

00:24:24   that out a little bit if you have the

00:24:26   ability to do that

00:24:27   yes one of the reasons why I took the

00:24:30   somewhat I think unusual step of

00:24:32   developing the 4.0 UI kind of in the

00:24:35   open I did a lot of like Twitter

00:24:37   development he's clear I'd like post

00:24:39   screenshots on Twitter and say hey what

00:24:41   do you think of this or it's kind of

00:24:42   weird or which of these four options you

00:24:44   think would be best or work well or

00:24:45   whatever else taking kind of a lot of

00:24:46   like informal Twitter polls basically

00:24:48   and normally I would do all this

00:24:51   development in secret and then just

00:24:52   really you know really support the final

00:24:54   product and you know try to make a big

00:24:55   splash or whatever else then and try to

00:24:57   keep everything secret the whole time

00:24:58   which is very stressful and difficult

00:24:59   especially if you want to do a large

00:25:01   beta and this time I just I decided to

00:25:04   just do it in the open in part because I

00:25:07   was tired of keeping things secret but

00:25:09   also in part because I wanted a little

00:25:11   bit more of that validation of that

00:25:13   testing and it actually made a better

00:25:15   product in the end

00:25:16   like having public feedback on it and

00:25:19   you know I know that it's a luxury not

00:25:20   everyone has you know the audience size

00:25:22   to do but you know everyone has

00:25:24   something like that like you know

00:25:26   whatever your you know abilities or

00:25:29   resources are use them you know even if

00:25:32   it isn't you know a bunch of people on

00:25:34   Twitter like it can be friends in real

00:25:36   life it can be you know other testers it

00:25:37   could be people whose opinion you trust

00:25:39   who can take a look at something and can

00:25:41   give you feedback on it like that's

00:25:43   incredibly valuable for not only the

00:25:45   quality of the product which of course

00:25:47   is the ultimate goal at the end but also

00:25:49   you know this mode this motivation

00:25:50   factor in the middle when you're just

00:25:52   slogging through it's nice to know that

00:25:53   you're working on something that people

00:25:55   actually are going to like and probably

00:25:59   the last thing that seems like worth

00:26:01   talking about through is it's like how

00:26:02   to wrap up kind of a big project like

00:26:04   this in terms of some of the little like

00:26:07   I don't know mistakes I've made in the

00:26:09   past that I try and avoid now as I was

00:26:11   thinking about that like one thing that

00:26:13   I do I've never found that like having

00:26:17   an external to-do list management for

00:26:19   code level issues or questions like

00:26:22   never really it just doesn't work with

00:26:24   it great for me but one thing I have

00:26:25   found to be really helpful is to leave

00:26:28   little like bread crumbs in my code that

00:26:31   help me keep track of things that I need

00:26:33   to take care of before I wrap up and

00:26:36   before I ship and so an objective-c I do

00:26:38   these with the pound the warning

00:26:42   I don't know what you call it like

00:26:44   direct declaration where you can

00:26:47   anywhere in Objective C if you just say

00:26:49   pound warning and then you write some

00:26:50   straight write some text that'll show up

00:26:52   when in 8 anytime you build you'll get a

00:26:55   list of those sort of and they're almost

00:26:56   like to do Zoar things that I need to

00:26:58   make sure I check in Swift you don't

00:27:01   have quite the same ability but I would

00:27:02   have taken 2 there which is kind of a

00:27:04   horrible hack but it works is I just say

00:27:07   let warning equal and then a string that

00:27:10   is what needs to be fixed or taken care

00:27:13   of

00:27:13   so then Swift complains that that that

00:27:15   variable is unused and should instead be

00:27:17   assigned to underscore which works just

00:27:20   as well

00:27:21   but for easyacc it works though like

00:27:25   it's it's Swift does not like variables

00:27:27   that are unused so that it that's how I

00:27:29   do it now these are great because these

00:27:32   are usually these are little details

00:27:34   they're like things I need to check or

00:27:37   because you know but I don't want to do

00:27:39   well in developing is like half that

00:27:41   feel like I need to take care of every

00:27:42   little detail as I'm going along because

00:27:45   I made it but wasting a lot of energy on

00:27:46   stuff that ends up not getting into the

00:27:48   final version so these tend to be little

00:27:50   things that like you know it's like make

00:27:51   sure this works in like sometimes it's

00:27:54   localization stuff or you know different

00:27:56   units or it could just be you know trim

00:27:59   it's like make sure this actually works

00:28:00   on the you know the iPhone 5s whatever

00:28:02   the slowest devices or like lieu of

00:28:04   reminders and hints it's like a great

00:28:06   way to kind of do it and then has like

00:28:07   you know as I once I do my final build

00:28:10   for the App Store hey you know if

00:28:11   there's no warnings then I've taken care

00:28:13   of all of those so that's a useful

00:28:15   little trick one thing I always do is I

00:28:18   do a get diff from the last ship version

00:28:21   to the current version that I'm about to

00:28:22   ship and just look through it like it

00:28:24   sometimes it'll be a little tedious and

00:28:26   it'll take a little while but I've got

00:28:29   weird bugs or issues that way and it

00:28:31   also is just really helpful as I'm

00:28:33   preparing my marketing material to

00:28:35   actually like remember all of the things

00:28:37   that have changed and so I don't forget

00:28:39   like cool little you know nuggets or

00:28:41   features and things that I added because

00:28:43   just you know in the scope of the size

00:28:46   of the update I may have missed it so

00:28:47   it's usually a worthwhile like you know

00:28:49   just spend an hour going through that

00:28:50   diff and just kind of getting a sense of

00:28:52   all those changes that you made

00:28:55   and then lastly it's probably a assume

00:28:57   that I have been bitten behind many

00:28:59   times by not doing and so now I'm very I

00:29:01   try to be very regimented about is

00:29:03   making sure that you do it clean or App

00:29:05   Store install of the app onto a via onto

00:29:08   a fresh device use it for a little while

00:29:09   get it set up and then test the update

00:29:12   process to Europe you know to this big

00:29:14   update because the number of times you

00:29:16   kind of forget about things that way you

00:29:19   know even back to bite you it can be

00:29:21   awful so always make sure that you do

00:29:23   that to just catch any weird migration

00:29:25   issues or just things that become really

00:29:27   confusing because if I've you know I

00:29:30   have not been haven't been using the App

00:29:32   Store version of my app for months at

00:29:34   this point so it's important for me to

00:29:36   be reminded of where my customers are

00:29:37   coming from and it should feel really

00:29:39   old when you see it ideally all right

00:29:43   thanks listening everybody I'm going to

00:29:45   talk to you next week bye