Recorded – watch the full episode on YouTube.
What tips do you have for indie developers on how to manage their projects?
James Thomson: So I have basically a text document of notes for each app. If I think of something, I write it down. If somebody emails me with something and says, "Here's a problem," I'll write it down in there. The document's got various sections. So there's a learn bugs to-do, long term to-do, ideas and things like that.
When I'm working on a new version, what I'll do is I'll look at the things, the ideas that I've had and I've written down, I'll look at the things people have said or bugs and I'll try and come up with, here's a rough list of the things I would like to do for this release. That obviously changes over time and as things come in and if it's going to be just a bug fix release, then it's more of a case of scan the stuff that's come up and the stuff that's come up a lot and prioritize those fixes, things like that but I don't have these extensive bug databases and tracking everything to a vast degree. This is a step up from when I did all this on paper, which was up until three or four years ago!
"When I'm working on a new version, what I'll do is I'll look at the things, the ideas that I've had and I've written down, I'll look at the things people have said or bugs and I'll try and come up with, here's a rough list of the things I would like to do for this release."
Paul Hudson: Okay. So it sounds like you basically got one very large backlog and just going through that, effectively?
James Thomson: Yeah. For every app I've done, people email in and they have like, “here are 13 ideas for your product." And I'll read through them and I'll go, “oh, that's actually a pretty good idea, that's a terrible idea," but I'll note them all day and then try and rank them and come up with, there's never a shortage of things to do. Even the Dice app, which you think, “oh, Dice app is really a simple thing." It's like that document is huge at this point because as soon as people start using it, they're like, “you know, it's really great for D&D, but it doesn't work very well with..." I don't know, Shadowrun, or some other game system.
It's like, "Could you do this thing, or could you do custom dice?" That was one of the things that came up. It was like, could I do custom dice where you can put any image or any text on the side of any dice? And it's like, well that sounds fairly simple, you just draw it on the side and it's done. It took me multiple steps of learning how to do something, to even approach it. Last step was actually calculating stuff on the GPU to do the carving into the side of the dice. So to basically give it an image and then from that produce what's called a normal map, which shows where the dents are.
To do that required learning about Core Image and chaining together a bunch of Core Image filters in a row to approximate what I'd been doing previously in Photoshop. Then all that runs on the GPU and finding out whether the performance is okay and it was and finding out how to optimize stuff and so there was all these stages and then it's like, "Well, now you need to write a UI for putting custom text in or custom images in," and stuff. Also, none of this code is shipped because I wrote it over the last two or three months and currently the App Store app review queues are, who knows how long.
So it was sitting in a queue for about five days and then all the cursor stuff came out and I was like, “okay, I'm going to have to need to do some stuff.” And because they haven't released the GM Xcode yet and none of the APIs, so you can't really do much, but you can do some stuff with the hover things, which I was doing in the Catalyst app, but I'd switched them off deliberately in the iOS app and it's like, “well, now I need to switch them back on again."
"So I have all these ideas of things to do and then: what is a feasible amount of stuff to do in a release? You could sit there for a year working away on stuff and that doesn't really help. You might as well break it up into a series of smaller releases..."
Paul Hudson: It's a very long list of backlogs is what you're saying, it's lots and lots of things.
James Thomson: Yeah it's a long list of backlog. So I have all these ideas of things to do and then: what is a feasible amount of stuff to do in a release? You could sit there for a year working away on stuff and that doesn't really help. You might as well break it up into a series of smaller releases and it's like, “well, I'd like to do this in this release," or you start something and then you think, “actually, this is way easier than I thought it would be." Or, “this is way harder than I thought it would be." So, either move this up in my schedule in my head, or move it down again. I have a big text document of stuff that I want to do in PCalc, which has been around for ages.
So with that stuff, there's things in there which are a simple one-liner like, replace the entire maths library and there's a lot to that. It's like, well to get there, I know I need to do the following sub-steps and it's like so let's start working on those subsets and then to work on those only to do other things. Hopefully at some point, the big feature falls out.
This transcript was recorded as part of Swiftly Speaking. You can watch the full original episode on YouTube, or subscribe to the audio version on Apple Podcasts.
SPONSORED Learn the most up-to-date techniques and strategies for testing new and legacy Swift code in this free practical course for iOS devs who want to become complete Senior iOS Developers.
Link copied to your pasteboard.