Interview with Aleksandar Vacić from Radiant Tap & Run 5K
You download the MP3 audio directly here.
In the summer of 2017 started running. That’s how I met the Serbian app developer Aleksandar Vacić.
Aleksandar built the popular running app Run 5K. The app helps you get from zero to a 5 kilometer run in just a few weeks. Run 5K is awesome and it kept me motivated to continue running, long after I first achieved that “5K” milestone.
I discovered that Run 5K uses an elaborate In-App Purchase to turn a profit and I wanted to know more. When I called Aleksandar to interview him, I found he’d just finished teaching iOS development to a class of students…
Reinder: You just finished teaching. What did you teach?
Aleksandar: Today we went through some homework that I gave them two weeks ago. They had to create some very simple classes and structs. The students are building a checklist application and they’re also implementing model classes for a school application, with grades and everything. I looked forward to finding out how they think as programmers and how they’re using the advantages of the programming language.
Did you also teach them the difference between a class and a struct?
Yes, of course. One of the assignments was to create a model with a class, and then with a struct. And to figure out what the difference is, and which one is better.
What did you find? How do your students tackle such a problem?
I see a lot of typical beginner mistakes, where they make the same mistakes over and over. Then, I point out the mistakes, and they stop making them, and create better code.
I see some of them create code I wouldn’t create, but that’s fine. For a group of students who aren’t programmers, but do have a technical inclination, they’re doing pretty well.
The Swift programming language is easy to pick up and teaching it has given me the opportunity to dive deep into the language.
You’ve been coding for a long time. Did you have any trouble switching from Objective-C to Swift?
Not really. I was quite surprised to find out how versatile Swift really is.
Compared to Objective-C, Swift has more syntactic tools. I’m writing so much less code because of that. I’m coding a project in Swift now and there’s no chance I’m ever going back to Objective-C!
One of the things that stood out were protocol extensions. I could extract so many repeated features of my apps, and put them in one place. That improved my code reusability so much.
Less code is better code!
Let’s chat about the app landscape for a bit. In recent years, we’ve seen the rise of many cool tools, like Fastlane and PaintCode. What’s a recently discovered tool that makes your life as a developer easier?
I write lots of Core Data code, so I use Mogenator a lot. It’s a command-line tool, it takes the Core Data models you create in Xcode, and then generates Objective-C classes for them.
You have one public interface, for the developer, and one private interface, for Core Data. So you can add your custom stuff in the developer-facing file, and the generated file is always synced with the Core Data model.
This allows me to be in complete control of how the model is generated. It’s really useful if you want to create custom behaviour on top of Core Data.
Have you tried any other database frameworks like Core Data?
Yes, I’m looking into Realm. I don’t have a lot of time to try it out, unfortunately. Before I’d use it in a client project, I first need to try it in one of my own projects. In doing that, I can discover any pitfalls that I need to account for.
I’m also using Sketch a lot. I used to be a designer, so I know how to work with graphic tools. Sketch is very nice to use. For instance, you can easily export assets in all three pixel sizes1.
You also mentioned Fastlane, right? I recently bought a Mac Mini and I’m setting it up to generate builds for my client projects. I won’t have to do it manually and Fastlane seems perfect for that.
1: 1x, 2x and 3x for iPhone models 4 to 8 Plus, read more here.
Have you ever considered doing all your development on a Mac Mini with Remote Desktop, and then just work with Linux or Windows for everything else?
That’s exactly what I’m trying to figure out, and set up. I need Continuous Integration (CI), so when I tag a build in source control, that’s the signal for the system to download the source code for that tag and build the app for all the project targets.
I have one project that has 9 different targets and builds, and it’ll soon have 17! Imagine how much time a CI system would save you from doing that manually. The app is then delivered via TestFlight or HockeyApp and then sends a notification to the client that a new build is ready.
You’re an indie app developer, so you publish your own apps independently in the App Store. Do you think that market is on the rise, or declining?
That’s difficult to say, it really depends. I think it’s declining for indie app development, because it’s getting really hard to become successful in the App Store.
I think that IAP and subscriptions are the only feasible business models going forward, if you want to find any monetary success.
I don’t think that a paid app can have any success without a huge marketing push. You need to have money to do that, which makes it unsuitable for indies.
What you’re saying is, if you’re building an app, it’s best to choose a subscription model to monetize it?
Yes, that’s what I would do. It might not be the only way, but this model is the first I’d consider. To make it work, you might need multiple products users can purchase in the app, so not just one subscription.
My biggest indie app is Run 5K, in which I’m basically selling running plans. That’s going very well. In Run 5K, you get the first two week of running sessions for free and then you can choose to upgrade to get more plans. This is good enough, because people have a chance to try the app.
The biggest drop-off of customers is after the first run, which comes from people giving up on running! Once they “survive” these first two weeks, the drop-off in upgrades is almost zero. The people who continue, think: “Maybe I can actually do this!”
I’m actually brainstorming lots of ideas on to how to push these people who give up, to try again.
That’s awesome! It’s perfect proof of the idea that, if you make a good app, that solves a problem for people, you have no problem monetizing it. Would you agree?
Yes, absolutely. Before I made Run 5K free, it was a paid app: $5, paid up front. It was one of the most expensive apps in its category.
The people that purchased really liked the app, but the problem was that the app drowned in 50 other running apps that were free or cheaper. When you have a lot of competition, it’s very hard to convince someone to try your app.
My move to In-App Purchases gave lots of people the chance to try out the app. Many of them liked it. It was one of my best career moves, so far.
In the Run 5K app, you get motivating notes (via Siri) during your run. I found out how by actually trying it myself. I noticed that I always give up 20 or 30 seconds before the end of a stint, which is really demotivating. Had I only continued a little longer, I would have finished the run and would have felt better.
Yes, I’ve tried it, and I can tell you: it really helps! I love the app, it works very well.
Thank you! I added those boosts at the right time to push you, so you don’t have to get your phone from your pocket to see how much time there’s left in this stint.
Something else. Do you think there’s a future for Apple Watch or smartwatch apps?
I don’t believe that watch is the right platform for every app. I think that it’s clear how Apple is pushing the platform to medical, health, fitness, notifications, those apps.
I gave a talk talk at Voxxed Days Conference in Belgrade in 2015 about watchOS. At that time, I was going through the development side of watchOS. That talk is still relevant today.
Essentially, if your app doesn’t have notifications it’s not suitable for watchOS. It’s not worth it for the app users to hunt down your app among that little grid of icons.
If your app doesn’t fit those medical, health, fitness and notifications categories, it’s not worth it to publish on watchOS. But if you do fit those categories, it’s very very worth it.
I’m using 6 or 7 apps on my watch. They’re all in the watchface and I can switch between them when I need them. I use timers, a time tracking app, a workout app, weather – the usual stuff. Most of those apps are useful because they have notifications.
You recently tweeted: “The real hardest problem in computer science, is knowing when to stop adding features.” Considering that the App Store effectively incentivizes building more apps with more features, do you think that an indie app developer can sustainably build one great app? Or do you think that a two-week app update cycle is required to survive in the App Store?
I don’t think so. It depends on the app. If you have nothing significant to add, it doesn’t make sense to add something for the sake of the release cycle. I’d much rather spend my time figuring out if there’s a useful feature to add to the app. You would probably have to update your app once a year though, for new iOS versions.
With the Run 5K app one of my biggest pain points is audio handling. Apple changes this all the time. One time, I had this really weird bug. When you set your iPhone language to English and the app’s user-facing language to Serbian, you would hear two different voices in the app at the same time.
Oh, wow! Experiences like yours keep me from creating apps on Android. When I build apps for a platform I immerse myself in it, because you need to know all those little details. It’s impossible to do that for two platforms.
Yeah. A client once asked: “Do you do Android apps as well?” I said no, because I want to be able to build quality apps on each platform. You need to specialize in both: a different programming language, different SDK, different developer tools. That’s a two person job.
I’m lucky to know a few Android developers. They work for other companies. When I’m asked for Android development, I refer the client to them.
Aleksandar recently wrote “Much ado about iOS app architecture”, an excellent write-up that shows you why the default iOS app architecture – MVC – isn’t so bad after all.
How active is the developer scene in Serbia? Is it different from what happens in Europe or in the United States?
There’s multiple sides to it. First, there is no App Store in Serbia. We’re one of the few countries that do not have an App Store. iPhone users are forced to use an account from a different country, like Slovenia. I use an account for the US store.
This is a big problem when you need to create an app for a local client targeting a local audience. All sorts of licensing issues come up when you publish an app intended for a Serbian audience on, say, the German App Store.
You can’t localize your apps for the Serbian language either. So what we end up doing is setting the app’s language to English and writing everything in Serbian.
You asked about the developer scene here. It’s very active. There are surprisingly large companies here focused purely on app development. Some of them work mostly for customers outside of Serbia.
Top Eleven, a football game manager app, is built by Nordeus, a Serbian company. It’s the highest grossing and best football game manager in the world.
I’m a co-organizer of the iOS Developer Meetup here. We have a meeting every few months and someone presents what they’ve worked on. It’s an active group and people are helping each other. I’m proud that this small and not-so-rich country has good developers and a good scene.
I’m actually pushing the developers here to publish more, to talk and blog about their work.
I see. I can speak from experience here, as a developer that didn’t come naturally to me. That doesn’t mean that I shouldn’t publish!
I believe that if you write a blog post about what you do, you become a much better developer. It forces you to go deep into a topic. Because of that you write better code later on.
Speaking about the “gig economy”, like building your own indie apps, or working on platforms like Upwork, is that popular in Serbia?
Yes. Developers here make a decent amount of money on websites like Upwork, and for companies like Toptal. Once you have people who find work for you, it becomes much easier. Eastern Europe is not expensive and the developers create good apps.
Because I’m so active in the community here, companies seek me out to work with me, so I have enough work. I think Upwork is a good platform if you, as a developer, want to gain experience with different APIs and SDKs. You would build things you probably wouldn’t create while working on your own.
One of the disadvantages of using Upwork is that you have to write proposals all the time, especially in the beginning. I see people using it as a stepping stone, to build a reputation, because then more work comes your way and you spend less time on getting those projects.
People like us are single developers. We work alone. How do you structure your day? What keeps you motivated? Why do you get out of bed in the morning?
I’m really open to try new things and I follow people who are much better than me. I find inspiration in what they do.
It inspires me to learn more, to try new things, and use those techniques in my own work and client work. It keeps my work fresh, because it means that I don’t have to do the same things all the time. It’s one of the benefits of working on your own, because you don’t have to take into account the wishes of a larger team.
For instance, in one of my own apps I changed how I handled data about five times. You have this freedom as a single developer. If a choice doesn’t work out, you can change it quickly.
I try to avoid fixed project fees when working for clients, to keep the freedom to change things as I see fit. Some clients appreciate this, when you keep them posted about changes in the app project and why its done like that.
Let’s talk about your app, Run 5K. How did you come up with the idea?
Actually, my first app ever was called Run Mate. It had an interface where you could create your own running plans, alter the sequences, export your plans – all kinds of management. It was overly ambitious and not successful in the App Store.
Then I created one app with one running plan. You start your music and go running. I used the “Couch to 5K” plan from Josh Clarke. With the app you run three times a week for nine weeks. I initially created it because I wanted to get into shape myself.
I tried different ways to represent the user interface and found the right one just when Apple switched designs from iOS 6 to iOS 7. Do you remember that? It was very painful. I spent six months designing my app using the iOS 6 style. As soon as I was ready to publish it, they changed the design and then not a single website was interested to feature my app.
I changed the app, lost some time, but after that the app really took off. It got featured in a few App Stores.
The biggest challenge was incorporating the voice cues. iOS had no text-to-speech, so I used MP3s and stitched them together to make a sentence. Now I use Siri, which is much easier to use, although it sounds more robotic.
Do you ever plan on going back to creating Run Mate?
Yes, but in a different way. Run 5K has had over half a million downloads, but maybe a few percent are paying customers. People generally like the app but they want more features, like running for a 10K or a half marathon.
What I want to do is build Run Mate with different training plans. Like 3K, 5K, 10K, with faster and slower speeds. You’d have more encouragements, like “You ran yesterday, do you want to try again tomorrow?” Something to bridge that gap after the first run.
An app that works is really all you need to support yourself as a developer.
Many indie app developers are interested in making money in the App Store. What do you think is reasonable to expect? Can someone with an app idea expect to make a full-time income?
It’s hard to say, it depends on what a full-time income is. It’s probably entirely different for someone from Serbia compared to the US or compared to something like Sweden.
You have to ask yourself how much money you want to make. How much money you can charge for your app? How much time will it take you to gain traction?
I had high hopes for apps I created in 2010 and 2011. Some succeeded, some failed. The fitness category is very crowded, so it’s hard to stand out. When you create a good app, and offer In-App Purchases, those crowded categories still offer enough opportunity to create something new.
I’ve seen some developers create an app that combines running with cooking. You get a meal plan and a run plan. Then they try to get a celebrity to endorse the app. I don’t know much about the productivity app category. You can check out the people that made Workflow. They appeared out of nowhere and then they were acquired by Apple.
You have to set your own expectations. It depends on where you live, how much money you need, and if there’s something else you can do to make that same amount of money. For me personally the freedom to work from anywhere anytime is more valuable than having more money. So that’s also a factor.
Yes, that’s what I do too. Maybe the biggest reason for all of that is freedom. That’s definitely more valuable than money.
For me, yes. When my kids get out of school and they want to play football, sure, let’s play football! When they’re done I go back to work. You can’t do that when you work from an office. I think it’s the biggest benefit of being an indie developer or freelancer.
If you were to summarize the success of any app in your opinion, what’s that single point of focus that indie app developers should have?
That’s a really hard question. What I aim for, and spend time on for every new app, is – if I do this right, will the person using it feel good about himself? Will it create not some obvious benefit, but an emotional benefit? Will they feel good about themselves while using this app?
If it’s a to do list app, did the user achieve something today and are they happy with their progress? If it’s a running app, did they run more than they could yesterday?
The next step is usually to get enough people to try the app. That means when you’ve spent 80% of your time on development, you then spend another 80% on refining the app, and then another 80% on marketing. Talking to people, getting them to try the app, write about the app, talk to developers, creating a website, doing things like building a YouTube channel series.
If the app is good, and it makes you feel good while you’re using it, then you only need to figure out how to give people a chance to try it.
Then the app itself will take over. That’s why I think creating free apps with In-App Purchases or a subscription is the way to go. The competition is fierce and it’s crowded in any field. If you can, create a free app because it has no obstacles that lead to a trial. Even if it’s a dollar, it’s still an obstacle.
Do you think that Apple, with the App Store, should so a better job of creating a viable app market for indie app developers?
I believe there is so much they can change, if they decide to pursue that. The changes they made for the subscription mechanism show that (i.e. a 85/15 revenue split after a year, more subscription categories), just like the recent changes in iTunes Connect and Analytics. I’ve discovered that many people try my app, but very few of them actually buy the In-App Purchase.
And we all know App Store Search is terrible. I wrote a blog post back in 2014 about how they could improve search. Helping people discover apps with App Store Search would benefit the app economy, app users, and app developers. It would solve a lot of problems.
The crazy thing with search is that if you search for my app, using the exact same words I use on my app page and in its title, you will still not get it as a first result. That’s very annoying.
I don’t think Apple made a conscious decision when they decided to mainly pursue paid apps. The problem is that they based the App Store on the iTunes Store. You buy the album and it’s yours. It doesn’t work like that for apps.
But, the App Store is built on old code, on old infrastructure, on the older iTunes Store. Imagine you’re the team of developers who decides to change the foundation of the App Store. How would they try out new things on the scale that they’re working with?
I’m not sure if they can change it. Right now, people are so used to free apps. And it’s really hard to sell something if everything else is free.
Can they change search? Of course they can. How many apps are there now? Two million? That’s a technological problem that can be solved. I hope they fix this in the next year or so. Until then, we can use what we have: subscriptions, In-App Purchases, things like that. Or maybe get Michael Jordan or Lebron James as a spokesperson?
Reinder: Arnold Schwarzenegger!
Oh yeah. A friend of mine worked until recently for the company that makes Mobile Strike. They make a ton of money…
Before we stop I have a bunch of rapid-fire questions for you. What is advice that you regularly see given out that you think is untrue or bad advice?
That you can learn to code iPhone apps in two months. I see schools making that kind of promise.
If you think programming is easy, think again.
It’s not like you just sit there at a computer creating miracles and everything is fine. It takes a lot of time and effort to learn iOS development.
Especially here in Serbia, where developers earn 3 times the average monthly income of 300 or 400 euros. You then hear things like: “Developer earning enormous amount of money! Learn development! Everything will be easy for you!”
No, it doesn’t work like that. This isn’t different from any other field, where you spend years of time and effort to get good. I’ve been in software engineering for 20 years or so and there’s still so much I don’t know.
Sure, I’m working from coffeeshops, make a decent income, but that’s the easy part. While I sit here I try to figure out protocol extensions in some new fancy way.
A friend asked me what it takes to get into iOS development. I told him it could take his entire life. There’s always something more to learn. Don’t expect miracles.
When you think of the word “success”, is there a first person that comes to mind?
Do you know David Frampton? He made a game called Chopper. This game was hugely successful. Before that, he made screensavers for the Mac. Then he applied that knowledge to make a game, where you’re flying a helicopter and shooting stuff.
Then he created another game, and another game, and after six years he said: “I have enough money, and enough repeatable income from selling this game, that I don’t have to work anymore.” Now he builds what he likes, he codes when he likes to, he goes surfing, he had his second kid.
Basically, he’s the ideal developer – an indie developer I want to be like. You invest time into building something. You earn enough and then you can actually enjoy life. That’s something I would define as a success.
What is advice you would give to someone who’s listening right now, who wants to become an app developer and build their own apps?
I’d say find a developer who can mentor you occasionally. Find someone you respect in your developer community, who is accessible to you, and figure out how you can visit them, for instance in a coffee shop, and let them look over your code and give feedback. It’s not that they are teaching you, but they mentor you and give advice when you get stuck.
Also, for new developers just starting out there’s a ton of information to choose from. Especially for Swift – so many blogs, examples, projects. If you can find someone who can show you the way, so you won’t get lost, that’s one of the best things you can do for yourself.
What I’m trying to do in my course here is, instead of just simply telling people how to write entire application in Swift, I tell them about things like the Single Responsibility Principle and Dependency Injection. When and how they should use it and the benefits it has. You won’t waste time trying to create larger apps using a bad approach.
When you do that, it’s easier to find a job, easier to interact with other developers, and you earn respect. People tend to value you more. If you have someone who can show you how to do that, you achieve more. Even if it’s just half an hour every three weeks, that’s enough to show you what you’re doing wrong.
Anything else you want to add before we quit? What’s the best way to get in touch with you?
If you are a person who is interested in learning iOS development, you’re already halfway there. If you have the passion to try it, you’re halfway there. In this course we have people who come in, try it for two weeks, decide it’s too difficult for them, and quit. Everyone learned something there.
Hi, I'm Reinder.
I help developers play with code.
- How To Learn iOS App Development
- Learn Swift Programming The Simple Way
- How To Make An App (In 9 Steps)
- Working With Codable and JSON in Swift
- For Loops in Swift (How To)
- Displaying Alerts with UIAlertController in Swift
Code Swift right in your browser!
Go to the Swift Sandbox