Good Apps, Well, They Take Time
Cast your mind back to April of 2015. What exactly where you doing? I’m guessing most of you have no idea, but I know exactly what I was doing. I was deep into planning Pocket Casts 6.0 and Pocket Weather 5.0 updates for our iOS apps with my Co-Founder Philip. We spent many long days (and plenty of nights) meticulously planning what would go into each one, and when we could expect them to ship. After the planning was finished we realised one really obvious thing: if we wanted to ship either of these apps before the year was out, we’d have to hire another developer. We heard rumours of some things that were coming to iOS 9 in a few months time and we knew that Swift was maturing. We also knew that both of these iOS apps (one which started in 2008, the other in 2010) were in need of a low level overhaul.
Let me back up a little bit. At the time we were a company of 4 people. A designer, Chris. A support and administration officer, Monica and two developers, myself and Philip. I was responsible for all of our iOS apps, as well as occasionally doing some of the lower components in our Android apps. Philip is our Android developer and he also works on all our server infrastructure.
So back to April of 2015: it was clear that to overhaul both Pocket Weather and Pocket Casts would take at least 2 developers, not only that but we’d need talented ones. Jokes about me aside, we began searching for the right developer to join us. As luck would have it, it turned out that Jeff Tan-Ang was available so we convinced him to come and join us. Our plan was simple, but ambitious. Jeff would work on Pocket Weather, pressing the reset button and building it 100% in Apple’s new programming language Swift, iOS 9 and using all the latest frameworks at our disposal. We’d incorporate a Today Widget, Watch app & complication, iPhone 6 and 6Plus screen size support and biggest of all iPad split-screen multi-tasking. For the non-developers out there, that’s a lot of work, but we felt confident Jeff could finish it in 4 or so months.
Meanwhile, and in parallel, I’d be building out Pocket Casts 6.0. In this case it was a matter of refining the existing code base rather than rebuilding it from scratch. I also decided to build all the new functionality in Swift to give us a bit more future proofing. We wanted both of these products to go for another 3-4 years based on these changes we were making, so getting everything in order was our priority.
When I returned from WWDC in June of 2015, the work began in earnest. Jeff began working full time on Pocket Weather and I had already met with some Apple Core Audio Engineers to refine our Android volume boost and silence removal features and bring them to iOS. The core of our new playback engine was coming together nicely, so I began putting in place the groundwork for all the other Pocket Casts changes I needed to make. It’s an obvious thing in hindsight, but in both cases we under-estimated just how much there would be to do, and also how long it takes to get things working to a level that we’re happy with and proud of. Anyone can ship an app the second a piece of functionality is added, but we have higher standards than that. We want everything to work, and work seamlessly. So during the next few months we’d build prototypes of new things, refine them, then add them to the app. We’d build and rebuild so many different bits of each app as we deployed them to phones and tested them out.
Fast forward to September and things seemed to be tracking well. Both Pocket Weather and Pocket Casts were cruising along, and we felt fairly confident in our estimates. So we did what any tech company does in this case, we published a blog post. In it we (foolishly, in hindsight) said we’d ship both Pocket Casts and Pocket Weather before 2015 was done. There was a real buzz at Shifty Jelly, this was going to be an awesome set of releases!
Then, the inevitable happened. Pocket Weather development was slowing down as we were realising just how many things the old app did that the new one didn’t yet do. There was also the matter of taking an app that really was a completely different iPhone and iPad interface and trying to meld those into something coherent. In hindsight leaving iPad development until this point was a huge mistake. We had to rework so many things to get split screen multi-tasking to work, and it introduced so many new and crazy bugs. We now had a decision to make: we promised both of these apps before the year was out, it was clear that we couldn’t get both of them out the door. It was a hard decision to make, but in the end we decided that Pocket Weather was the app that was most in need of an update, so I joined Jeff and began working full time on that. Obviously at this time Pocket Casts development ground to a halt.
By November of 2015 Pocket Weather was really shaping up. There were still bugs left, and bits of functionality we hadn’t added yet but the huge array of things we had (Today Widget, Watch App, Watch Glance, Watch Complication, iPad Multitasking, Bigger iPhone support, day/night themes) were coming together nicely. We still had a problem though. Even with Jeff and I working full time on the app, we realised that it was still possible that we might miss the mid-December cut off for submitting apps to the Apple App Store. Now we had to make another decision: to remove some things from the app, or to delay it even further. We were feeling the heat from our customer base, who were all extremely eager to get their hands on the app. Rightly so as well, we’d told them it was coming in an official post. So we decided to remove a few features and try to ship the app before our self-imposed deadline. The dedicated iPad interface was dropped (in favour of the iPhone one scaling up and down based on how you used multi-tasking) and other features like the night theme where also removed.
By December of 2015 we had an app that we were really proud of. It looked and worked so much better than the old one, and we’d at least met one deadline. We had a dedicated group of around 50 beta testers that weren’t reporting as many issues with it as they were in previous builds so we had a high degree of confidence that it was stable and ready to go. If we’re being honest we still had some concerns about it not being in beta testing for long enough, but as the end of the year loomed large we submitted the app. We were ecstatic, to work so long and so hard on something, and to finally see it ship is a great feeling. It was approved by Apple days later and it went live in the store.
As the feedback started pouring in though, we realised we’d made a huge mistake. The app had shipped with bugs that neither we nor our beta testers had found. Our customers were furious about the lack of a dedicated iPad interface. To make matters worse, Jeff had been offered a job at Apple. Now Jeff is an amazing guy, he told us he was applying for that job before he came to work for us, and even asked for our permission to do so. We of course told him to follow his dreams and see where they lead. So this is in no way his fault, but we’d now lost him as a future resource for bug fixes. Jeff had, however, graciously agreed to give us more of his time than we’d originally planned, so that we could fix the bugs and get out a more stable build. So 5.0.1 and 5.1 where born. Meanwhile, our Pocket Casts customers were naturally curious about where the update was, so we decided to give them something, a sign up form for the beta which we’d start in the new year. It wasn’t the update we’d promised, but it was something at least.
After the holiday period, we regrouped in January. Jeff would spend as much time as he could give us working on version 5.2, which added a dedicated full screen iPad interface, and I went back to work on Pocket Casts. We started inviting the first few hundred beta testers into the Pocket Casts beta and that app started to tick along once again. In February we waved goodbye to Jeff as he flew to America, and I spent a few weeks finishing and testing Pocket Weather in anticipation of a 5.2 release in March. All the while though, I lost a lot of sleep knowing that Pocket Casts while it was still moving, must look to the outside world as if we’d abandoned it completely. We wrestled with how much or how little to share with our customers, knowing that we’d already made the mistake of telling them a ship date, then missing that date. So we made the difficult decision of taking Pocket Weather 5.2 down to 1 day a week, with Pocket Casts taking up the other 4. Happily it worked, a full day on Pocket Weather saw 5.2 come together and ship in April, to the delight of so many of our customers. Our rating went from an average of 1.5 stars, to a 4.5 average overnight. It was a huge relief to see that turn around. We’re not done with the app yet of course, but most of you are probably here to find out when Pocket Casts is due!
Well, the beta is looking great, I’ve been running it now for at least 3 months, adding features and cleaning things up as they are reported and we find things that need tweaking. We’ve had some amazing feedback from our beta testers (we’re full, please don’t ask to join, sorry) that has helped shape some things that we’d normally ship, then refine, to being able to refine before we ship. I’m working on it full time now, 5 days a week. When will it be out? When it’s ready. That answer may sound arrogant or aloof, but all we’re promising from here on out is that we’ll work on it until we’re happy with it. Then we’ll spend a long time testing it and once it’s damn near perfect, that’s when it will ship. I know some of you want to hear that it’s out today, I’m sorry. It is however being worked on today, and tomorrow, and every day after that until it’s ready. It’s our core focus, our singular mission. So if you’ll excuse me, I need to get back to coding. See you on the other side!