Under the Radar

Under the Radar 106: Long Projects

 

  welcome to under the radar a show but

  independent iOS app development I'm mark

  Worman and I'm David Smith under the

  radar is never longer than 30 minutes so

  let's get started so today I wanted to

  talk through an experience I've been

  having recently where I so it's very

  fair to say I typically do lots and lots

  of small little bursts of work on a

  variety of my different apps like I have

  a lot of different apps so I tend to

  just like be like a little bee just

  buzzing from flower to flower like

  taking care of little things as they

  come I never know and then I find myself

  in a situation where instead I need to

  kind of sit down and have a kind of a

  long extended you know development

  project to really push a product forward

  and for me right now that's around

  workouts plus plus which is my workout

  management and configuration app for the

  Apple watch and so usually I would say

  the longest I work on a you know on a

  particular update to an app is maybe a

  week sometimes two at the most and at

  this point I'm coming up on two months

  working on this update for workouts plus

  so it's a pretty substantial amount of

  time and energy and investment that has

  gone into this update and you know while

  I've had to do bits and pieces from side

  to side which I'll actually get into as

  a topic it's a long time thing and I

  think is it looking right now I'm aiming

  to have the update out at the beginning

  of December which would have meant that

  we've been about three months of work

  which is a substantial investment in him

  for me in this case too and I also have

  this vague sort of outside pressure that

  I want the app to be out at the

  beginning of December so that it can be

  you know sort of nice and stable and out

  and available for the new year when is

  typically a good good time and a big

  time for workout and health and fitness

  related things

  so as I've been going through this

  process I've been trying to keep be

  aware of kind of some of the things that

  I've had to keep in mind and some of the

  things that I've done as a result and it

  seems like an interesting topic to talk

  about through the show so like probably

  best place to start it's just to kind of

  unpack some of the things that I've

  tried to make sure that I did before I

  started and so use some of the questions

  that I thought I needed

  like it's like why am I doing this like

  and you know why do I want to do this

  update do I think this is actually a

  good idea is it worth it like is this

  going to be worth it either in terms of

  me you know making the apps dramatically

  better expanding my market making more

  money or honoring the attention of press

  or Apple like whatever it is it's like

  trying to understand why I'm doing it

  and if it's actually going to be worth

  doing trying to understand what I'm

  actually trying to accomplish most least

  so that I can know when I'm done because

  from experience I know that often

  what'll happen is I will go into one of

  these development projects where I'm

  like okay I give myself permission to

  kind of run wild and to not have it be

  just a couple of weeks and then I can

  just sort of end up aimlessly wandering

  in the wilderness for weeks and weeks

  because I don't really know where I'm

  going and I'm just enjoying like the

  development process which can be kind of

  fun sometimes but can be really damaging

  or problematic to getting other things

  done if I just like to have this aimless

  wanderer so trying to think about like

  when will I know I'm done what are the

  the core features what it's like my

  basic it's almost like when you're

  running a term paper or something and

  you so if you try and write the

  introduction and the conclusion and then

  you fill in the middle it's like trying

  to work out well what am I going to put

  in my release notes when I submit this

  to the app store and while that may

  change you know how this development

  goes it's like if I can't concisely

  describe what it is I'm trying to do I'm

  almost certainly going to get into

  trouble then asking questions like is it

  possible and if it's not how do I know

  or if I'm not sure if something's

  possible like in for example in this

  update I've been working on a lot of

  Apple watch audio playback stuff some of

  that is like kind of possible some some

  of it is completely impossible you're

  being very kind we've talked about this

  before I didn't in Kate detail but

  finding that line between possible and

  impossible was very important to find

  out up front and to make sure before I

  committed a lot of energy to the parts

  of audio playback on the watch that are

  the support of supporting stuff you have

  to do you know

  the easy part in some ways is that is

  that core playback experience like the

  hard part is all the other management

  and file management and configuration

  and syncing and stuff you have to do

  it's like making sure I deal with that

  first but it's kind of this process of

  saying like is this possible am I sure I

  can do it what do I want to do and then

  why am i doing it and if I can answer

  those questions that I'm probably in a

  pretty good place to get started yeah I

  this is an area the whole just like long

  term update or new app management that

  I'm just very bad at this I'm very very

  bad like I I gave a talk a while ago to

  NS conference about how I planned

  overcast from a marketing perspective

  like 404 1.08 for the initial app launch

  and I I made this big document you know

  similar to what you were just saying

  about how you know how you you kind of

  imagine the app store release notes as

  like a goal and like what what what

  should those say and how do I get there

  I did I did a similar thing where like I

  basically like laid out the the

  marketing bullet points for overcast why

  choose this over any other podcast app

  and Latos had early on and did a bunch

  of market research you know looking at

  the other apps to see like it that were

  in the that were competitive at the time

  and saying like I well why would

  somebody use overcast over app X and I

  went through all the competitors at the

  time big and small why should somebody

  choose overcast over this app and that

  kind of helped me plan my marketing you

  know focus for the app it kind of helped

  inform the the feature selection what to

  focus on what what to not really focus

  on certain markets that I would chose

  just to not address I'll have my app do

  XY and Z is you know things like smart

  speed and voice boost and the main you

  know the the reorder of a playlist stuff

  and everything all that stuff that was

  like my main marketing bullet point list

  an app is so much more complicated than

  that in practice there's so much more

  you have to do those core features of

  the app were done probably after three

  or four months or at least close enough

  to done and then during the beta I kind

  of finish them but the app took me like

  a year and a half or two years to make I

  think so I forget exactly it's been a

  while and so the entire rest of the time

  was spent

  things that were not on my planning list

  you know just doing all the different

  administrative screens and the backend

  on the servers and all the different UI

  details and I find that I'm very very

  bad at time management and and I would

  say completion estimation deadlines

  estimation once I get into all that

  nitty-gritty stuff of you know like the

  main feature might be complete or close

  to complete because the main feature

  might be some cool technical thing that

  I'm doing that you know that took maybe

  a day or two or a month and in the worst

  cases you know but then the entire rest

  of the app around it that's so much more

  complicated you know I had a major

  problem with this this past summer when

  the iOS 11 changes came in and and even

  before I knew about the I out the the

  iPhone 10 you know even when I when it

  was just I was 11 and drag and drop and

  all the new tableview mechanics and and

  everything else I thought I would have

  time for a major feature update this

  fall as well as a UI update to iOS 11

  and not only did I did I totally fail at

  that but then at the very last minute

  the iPhone 10 was announced and you know

  we all knew it was rumored we and we

  kind of knew that something like this

  was coming but I don't think any of us

  really knew how much work it would be

  for apps to adopt it well my original

  plan for my 4.0 update could contain so

  much more than what I actually shipped

  us 4.0 because the basics of it of just

  like keeping up with Apple that took the

  entire amount of time I had and the very

  very small number of bullet point

  features that actually made it out in

  addition to those like though like the

  new like contextual row actions where

  you can pull across the whole road to

  delete like mail I added those on the

  very last day of the beta it took me

  half a day I added them in the very last

  build I think the entire rest of the

  time was spent on yeah every on the

  massive amount of work required to just

  update the UI for these things and to to

  pull out some of my old hacks and put it

  in a couple of new hacks but try to keep

  the new hacks at least fewer a number

  that were severity than the old one

  and I just completely mismanaged and

  more importantly totally miss estimated

  the entire project yes I feel like

  through the thing that I sound similar

  happened to you but I know happens to me

  many times is not necessarily realizing

  to how once you start embarking down the

  road of a big update the awkward

  position it finds you you find yourself

  in is then like the app from a

  user-facing perspective essentially

  appears stalled then your note use all

  of a sudden you stop getting small minor

  like incremental updates that you know

  like the things that just take a half a

  day to work on to build an ad to the app

  like all of a sudden they get sort of

  stuck behind this dam of this big

  feature that it feels really it's either

  technically difficult to ship because

  you end up with weird like version

  control management stuff of like well I

  could add it to the old version but the

  old version is like massively gonna be

  you know ripped apart and we put back

  together or it's doing work that is

  going to be you know replaced or have to

  be repeated and you know in the actual

  like the new for the new feature branch

  or things like that like you end up in

  these really awkward places where

  suddenly the app just kind of gets stuck

  and that's really awkward and I feel

  like in some ways it's a good thing to

  keep in the front of my mind that you

  know right now all of my apps

  except for workouts plus plus have been

  updated for the iPhone 10 and that's

  like that's good like that all those

  update those updates are up but for

  users of workouts plus plus as much as

  it's nice for me be able to say oh

  coming soon like awesome amazing update

  that I think you're really going to love

  it's kind of awkward to that it's you

  know the app that I'm putting the most

  effort into is the one that is falling

  the most behind and so it's probably

  worth making sure that as we're starting

  on these projects it's like a sort of

  timing them right like often I I think

  we've talked about before in the show

  where it's often good to do these types

  of updates maybe in the sort of like

  February to April time group timeframe

  in sort of apples development cycle

  where things tend to be fairly calm

  before wEDC

  which I didn't do this time

  but in general it's just a weird thing

  to keep in mind that like you have to

  make sure that is undertaking this

  project and pushing making putting the

  app into this weird sort of hiatus state

  like worth it and a good thing to do I'm

  just otherwise you can just sort of you

  could actually end up shooting yourself

  in the foot by making the app get where

  feel sort of feel worse and worse to

  your customers and by the time you

  finish you arrive it's like you arrive

  you arrive back and be like hey here's

  this great new thing and they've all

  left and that could be rather

  problematic this episode is brought to

  you by euro never think about Wi-Fi

  again euro has created the dream Wi-Fi

  set up a fast reliable connection

  throughout your entire house even out

  into your backyard if you want to and

  now is the best time to get on board

  with Euro is they've just released their

  super slick second generation devices

  era has have introduced their tribe and

  second generation model along with the

  EO beacon which allows you to build a

  Wi-Fi system perfectly tailored to your

  home the second generation arrow

  includes a third five gigahertz radio

  making it twice as fast as before this

  lets you do more than ever whatever your

  Wi-Fi needs zero has the power to

  blanket your entire home in fast

  reliable Wi-Fi it sits flat on any

  surface just plug into the wall with the

  included power adapter and you are ready

  to connect your euro either with

  Ethernet or wirelessly and the new arrow

  also includes a new thread radio which

  lets you connect a low-power devices

  such as locked doorbells and more and

  the new euro beacon is pretty cool the

  Aero beacons you plug it into a wall and

  it expands coverage into any room you

  can add as many ear beacons as you want

  as long as you have a base ear device

  the for them to connect to and it even

  includes a built-in LED night light with

  an ambient night sensors the beacon is

  super cool super slick plugs right in

  sits flush against the wall you barely

  even noticed there it's really great the

  ero app also to manage your network from

  the palm of your hand and you can also

  easily create and share a guest Network

  too they make it so easy to do all this

  stuff and the ear accustomed ursa port

  is great if you need any help the new

  era system starts it's just 399 for one

  second generation arrow and two beacons

  and that is everything you need for I

  would say almost any place if you need

  more you can add more later but you

  probably don't need more than that

  listeners of this show can get free

  overnight shipping to the US or Canada

  when you head over to eurocom it's EER

  Oh calm and use promo code radar that's

  yo comm promo code radar for free

  overnight shipping thank you to ero for

  supporting this show so once you've

  gotten through all that and you're

  actually in the middle of building an

  update the hardest things I find in a

  lot of ways is keeping motivated keeping

  keeping progress moving forward every

  day because you know in a large port

  like you an independent development

  often feels you know fairly isolated or

  lonely but I definitely feel is the most

  isolated for me when I'm working on

  features that take weeks and weeks or

  months and months to work on because

  it's just kind of like me often though

  my own little world working on stuff one

  thing I wanted to mention in the show is

  over the years of doing this I've

  developed a little like I don't know

  like it's a little mental crutch that

  for me helps me to stay motivated and to

  feel like I'm continuing to move forward

  because often what will happen you know

  you is you can spend all day like a

  definitely a focused hard-working day of

  effort and you get to the end and you

  don't feel like you accomplished

  anything and that is just so motivate

  demotivating so crushing like those days

  are that like then make me start

  questioning all kinds of things about

  whether I should be working on this is

  this good should I just completely drop

  this app and like go do something else I

  find a new career I'm terrible at this

  like lots of lots of knock not

  productive good things but you're lucky

  if those are just days to I've had

  months like that yeah but one thing that

  I have found to be helpful for me

  personally is to try and every day have

  something one thing that I did that day

  that I can point to which is can be as

  small as Paul can be big whatever it is

  but I try and structure my work such

  that at the end of the day I have

  something that one thing that I can

  point to and say like that's what I did

  that little feature that thing and it's

  a concrete tangible example and

  sometimes you can't do this you know

  some some projects will just

  you're do you're doing some deep model

  layer work that takes a few days and

  like okay but once you've done it like

  then that becomes your thing for the

  land those three days but I found that

  to be a really and then at the end of

  every day I consciously make the that I

  consciously make the decision to think

  about what I did and to like remind

  myself of what I of that thing that I

  accomplished even if it is just one

  thing and typically it is just one thing

  and that I found doing that over and

  over again kind of that this that keeps

  me honest in terms of keeps me from

  getting sucked down rabbit holes that

  are sort of unproductive and I'm not

  actually getting anywhere in you know

  it's like if I have nothing to show for

  the end of the day and that happens like

  two or three days in a row like maybe

  something's wrong maybe I'm doing

  something that I really shouldn't be

  doing and it gives me that that that

  awareness and on the flip side it helps

  me to just be aware of that and say like

  yes like I did that I did this and if

  you and I what I found is like it's

  somewhat obvious but like if you string

  together enough days where you

  accomplish something tangible every day

  you make genuine progress and so I don't

  that's just like it looks like silly

  trick that I've found for tricking

  myself and to feel into making progress

  especially in the midst of things that

  can take a long time yeah it also you

  know for me like you know as I mentioned

  them a few minutes ago do my little

  swipe actions thing in half a day at the

  end it made me feel a lot better about

  the release like it made me you know I

  was having so much doubt during the

  development cycle of my for of like am i

  doing enough here that customers will

  actually care about like if this is

  taking you know I'm spending as we

  talked before - I'm spending months on

  this update and is this actually

  including anything that my customers

  will get excited about or is it just

  changing things or just keeping up with

  iOS and new phones like that's just a

  bare minimum of what I should be doing

  is just keeping up you know ideally I'm

  also making things better and so I

  started to look for features that were

  fairly low complexity to implement that

  people have been asking for and just try

  to knock some of those out in in like

  the last few days that I had

  and that really helped a lot not only

  for making the update better but for

  making me feel like I had spent all this

  time - for a for like a sum total

  product here of something that was

  actually worth that time even though the

  distribution within that of how I spent

  that time versus those meaningful

  features might not have been ideal yeah

  and I think the important thing there is

  even it almost makes me wonder if you

  would have been well served to do those

  small little features in the middle of

  your development cycle as best as you

  could to try and like have these little

  rewards or these little like

  psychological perks clean Oh for myself

  like I love having every now and then

  I'll often ends up happening like this

  on a Friday but I'll just kind of like

  have a day where I just allow myself

  like the thing I'm going to do is try

  something kind of crazy and I enjoy that

  and it's like it's a motivating thing

  and an encouraging thing and it allowing

  myself kind of a conscious decision to

  do that it allows me to make progress in

  the like that the kind of the meat and

  potatoes part of the app where it's

  maybe not quite as fun or not quite as

  interesting it's like well once I've

  done this then I can work on that cool

  thing that I know I'm gonna feel good

  about even though even if it mazey might

  may be just a teeny little detail or

  something that most users will never

  notice like I remember when I was

  working on the achievement system in

  pedometer plus plus where you can earn

  badges if you work on them like I

  allowed myself a day where I was just

  gonna work on making the badges sparkle

  when you earn them that's so cool which

  was just like a totally silly idea like

  it's it's I love that this I love it in

  the app I think it works really well and

  like it's you know the the menu bar

  button at the top that opens the badge

  page sparkles too with the same effect

  when you have you know have you when you

  earn a new badge and things and like

  it's great but it was like it was a

  reward for a lot of the other hard work

  of doing like some ridiculously or so

  maybe surprisingly hard and logic

  computation to work out you know how you

  how you calculate how long your streak

  is and what the longest streak you have

  is and like there's a really

  nasty work you have to do to make that

  make that happen but it's like having

  these little these little checkpoints

  along the way and I thought it was so

  fun on that day too the thickness for my

  one thing to be like cool sparkly pixie

  dust like that was great and it's just

  being okay with the fact that like it's

  if it sounds a little silly that like

  you know I'm a grown professional but

  like these are the things I have to do

  to make to keep myself motivated be

  understanding that if I if I'm

  unmotivated if I'm not working

  effectively like I'm not making progress

  like it's not like oh yeah it's like I

  should just intrinsically be motivated

  to always work at maximal efficiency

  it's like no I have to trick myself and

  I have to do things that get you allow

  me to get around the fact that I'll get

  stuck and I'll get demotivated and then

  my productivity overall will drop

  precipitously as a result well that you

  know you're human like you know you

  can't you can't blame yourself or feel

  bad for being human and like nobody

  likes working tirelessly day after day

  on on a project that feel like it's

  going nowhere and a lot of people don't

  have the choice in the matter you know

  they they just have to do that because

  their job is you know not very

  fulfilling or not being managed well we

  as Indies have the freedom we're lucky

  that we have the freedom that we can

  actually take a day in the middle of a

  giant slog of trying to figure out UI

  tableview x' new crazy behavior or

  something like that or some weird bug or

  trying to implement some really tedious

  new thing we can take a break in the

  middle of that and do something for an

  afternoon or a day that that is

  fulfilling that we can complete in that

  time and that can work that can you know

  the whole reason that we that many of us

  that I should say but certainly for me

  the you know one of the reasons why I

  love programming so much and one of the

  reasons why I became first a self-taught

  and then eventually a more formally

  taught programmer is that you know when

  when normal people I you know I say I

  say loosely attempt to program or do

  something else that they don't really

  enjoy doing like it may be a certain

  subject in school growing up when they

  succeed they might not get any kind of

  satisfaction out of that

  the people who stick with programming

  are the ones who can make it through all

  the incredibly

  tedious and frustrating parts of it

  which there are many because they are

  motivated so much by the satisfaction

  when you make something when something

  works when you build something you know

  programmers who really get into it are

  the ones who like that little hit of

  satisfaction or adrenaline or whatever

  it is it motivates us through the rest

  so you have to find ways if if you're if

  you are that kind of person like I am

  you have to find ways to keep that

  motivation going even when you have to

  go through a very very long slog and I

  was very bad at that this summer found

  it very very hard to to keep myself

  motivated and to work hard and to make

  forward progress that have just banging

  my head against the wall and I think one

  thing to this I have found to be very

  helpful is trying to involve other

  people in the process as best as you can

  is another thing that I find really

  helps for these kind of these long slogs

  and so you know often it's having a very

  small there's not even really a beta

  group but just other people who are

  using the app who can then be giving you

  feedback giving you suggestions giving

  you reactions and even just giving you

  that sense of like you know you ship

  something that they enjoy or they like

  and they can tell you they like it like

  that's encouraging and motivating and

  this is well before you'd get into the

  you know kind of a broader beta test or

  something but just to try and make it so

  that it's not just you you know even if

  it's just you and a couple of friends or

  you and your spouse or whoever it is but

  just making it so that it's not just

  like if you can make that a little bit

  bigger I find this really helpful and

  it's also probably helpful in making

  sure that you're actually making

  progress that you know you can get some

  prick you can have some perspective

  shared perspective on like is the app

  better now with this update than it was

  before or not because you can easily

  sort of find yourself sucked down into

  the rabbit hole where you are doing

  something because it's what you've been

  working on for a long time but you may

  be kind of losing the forest for the

  trees at a certain point so it's

  definitely helpful to kind of spread

  that out a little bit if you have the

  ability to do that

  yes one of the reasons why I took the

  somewhat I think unusual step of

  developing the 4.0 UI kind of in the

  open I did a lot of like Twitter

  development he's clear I'd like post

  screenshots on Twitter and say hey what

  do you think of this or it's kind of

  weird or which of these four options you

  think would be best or work well or

  whatever else taking kind of a lot of

  like informal Twitter polls basically

  and normally I would do all this

  development in secret and then just

  really you know really support the final

  product and you know try to make a big

  splash or whatever else then and try to

  keep everything secret the whole time

  which is very stressful and difficult

  especially if you want to do a large

  beta and this time I just I decided to

  just do it in the open in part because I

  was tired of keeping things secret but

  also in part because I wanted a little

  bit more of that validation of that

  testing and it actually made a better

  product in the end

  like having public feedback on it and

  you know I know that it's a luxury not

  everyone has you know the audience size

  to do but you know everyone has

  something like that like you know

  whatever your you know abilities or

  resources are use them you know even if

  it isn't you know a bunch of people on

  Twitter like it can be friends in real

  life it can be you know other testers it

  could be people whose opinion you trust

  who can take a look at something and can

  give you feedback on it like that's

  incredibly valuable for not only the

  quality of the product which of course

  is the ultimate goal at the end but also

  you know this mode this motivation

  factor in the middle when you're just

  slogging through it's nice to know that

  you're working on something that people

  actually are going to like and probably

  the last thing that seems like worth

  talking about through is it's like how

  to wrap up kind of a big project like

  this in terms of some of the little like

  I don't know mistakes I've made in the

  past that I try and avoid now as I was

  thinking about that like one thing that

  I do I've never found that like having

  an external to-do list management for

  code level issues or questions like

  never really it just doesn't work with

  it great for me but one thing I have

  found to be really helpful is to leave

  little like bread crumbs in my code that

  help me keep track of things that I need

  to take care of before I wrap up and

  before I ship and so an objective-c I do

  these with the pound the warning

  I don't know what you call it like

  direct declaration where you can

  anywhere in Objective C if you just say

  pound warning and then you write some

  straight write some text that'll show up

  when in 8 anytime you build you'll get a

  list of those sort of and they're almost

  like to do Zoar things that I need to

  make sure I check in Swift you don't

  have quite the same ability but I would

  have taken 2 there which is kind of a

  horrible hack but it works is I just say

  let warning equal and then a string that

  is what needs to be fixed or taken care

  of

  so then Swift complains that that that

  variable is unused and should instead be

  assigned to underscore which works just

  as well

  but for easyacc it works though like

  it's it's Swift does not like variables

  that are unused so that it that's how I

  do it now these are great because these

  are usually these are little details

  they're like things I need to check or

  because you know but I don't want to do

  well in developing is like half that

  feel like I need to take care of every

  little detail as I'm going along because

  I made it but wasting a lot of energy on

  stuff that ends up not getting into the

  final version so these tend to be little

  things that like you know it's like make

  sure this works in like sometimes it's

  localization stuff or you know different

  units or it could just be you know trim

  it's like make sure this actually works

  on the you know the iPhone 5s whatever

  the slowest devices or like lieu of

  reminders and hints it's like a great

  way to kind of do it and then has like

  you know as I once I do my final build

  for the App Store hey you know if

  there's no warnings then I've taken care

  of all of those so that's a useful

  little trick one thing I always do is I

  do a get diff from the last ship version

  to the current version that I'm about to

  ship and just look through it like it

  sometimes it'll be a little tedious and

  it'll take a little while but I've got

  weird bugs or issues that way and it

  also is just really helpful as I'm

  preparing my marketing material to

  actually like remember all of the things

  that have changed and so I don't forget

  like cool little you know nuggets or

  features and things that I added because

  just you know in the scope of the size

  of the update I may have missed it so

  it's usually a worthwhile like you know

  just spend an hour going through that

  diff and just kind of getting a sense of

  all those changes that you made

  and then lastly it's probably a assume

  that I have been bitten behind many

  times by not doing and so now I'm very I

  try to be very regimented about is

  making sure that you do it clean or App

  Store install of the app onto a via onto

  a fresh device use it for a little while

  get it set up and then test the update

  process to Europe you know to this big

  update because the number of times you

  kind of forget about things that way you

  know even back to bite you it can be

  awful so always make sure that you do

  that to just catch any weird migration

  issues or just things that become really

  confusing because if I've you know I

  have not been haven't been using the App

  Store version of my app for months at

  this point so it's important for me to

  be reminded of where my customers are

  coming from and it should feel really

  old when you see it ideally all right

  thanks listening everybody I'm going to

  talk to you next week bye