You’ve been learning iOS development for months now. You been taking courses, like the Stanford iOS development course, or Angela Yu’s courses on Udemy. You’ve watched YouTube channels like Let’s Build That App. You’ve checked out random tutorials on the web from Medium, or you’ve bought some books from Ray Wenderlich (or even sprung for the full video subscription).
And still you’re frustrated… It doesn’t feel like I’m progressing anymore.
At some point, you realize that all of these resources only take you so far, and that you need something more.
What is the next step between learning, and getting hired?
There are several paths from there, but one easy way you can make yourself stand out is to make a “clone app:” an app that replicates the functionality of an existing, well-known app. Let’s talk about the many benefits of doing that.
You don’t need your own inspiration
Some people at this stage of their development have an idea for an app they want to build. But what if you’re part of the other group that doesn’t? Building a clone app doesn’t require any bursts of inspiration. Just take your favorite app, and start.
Something to show to potential employers
The more you can show off your abilities to a potential employer, the better you will look. You can talk about your experience and training at an interview, but if you have an app ready to show off, either at your interview or just a Testflight email away, you’re a step ahead of the rest of the pack.
You can take it a piece at a time
Many of the most popular apps are written by teams of people working full-time. You don’t need to rewrite the entire app! It’s easy for you to break off a piece at a time: a piece of the app structure, a screen, a particular interaction, an animation, etc., and do just that for the moment. Pick the things you want to build, want to learn.
The opposite applies as well. If you want to work on a screen that is several levels deep in the app, but aren’t ready to work on the screens to get there, skip them for the moment. If you absolutely can’t skip them, fake them just as much as you need to to get to the part you want to work on. Consider using an Xcode playground: you can focus on just what you’re building, and move it into your app codebase when the structure around it is built. Don’t let the work you don’t want to do (right now) stop you from doing the work you want to do.
You can build it up piece by piece. Employers are not going to be expecting you to rewrite the entire Instagram app, but they will be impressed by the parts you have rebuilt.
Ability to work with a large codebase
When you’ve worked on your courses, exercises, and videos, you have been working on skills and concepts in isolation. Even if you’ve been developing an entire app, they have usually been to illustrate a small number of concepts together, not the complexity of an entire app.
When you work on a clone app, you begin to see how hard it is to work on a full app codebase:
- Working with a large of number of UI storyboards, classes, etc.
- Knowing where to find things in that codebase
- Understanding how things in one, seemingly disconnecting part of the codebase, can radically change something in another part
- Using features that may have not been important for your class apps, but are very important for polished released apps (like publishing your apps…)
Many app companies are working on large codebases like this; having experience working this way gives you a head start.
Learning more than just iOS development
Existing apps almost always have some sort of cloud data storage. Cloning an app is a way to get experience with how to build the backend itself, and integrate it with iOS. If you’re an iOS developer that also has a basic understanding of at least one way of building a backend for an app (Firebase, Realm, REST APIs) and integrating that into an iOS app, you will look much more attractive as a developer than one who has dealt with frontend only.
Working through your own problems
The tutorials and courses you’ve been working on have been a more guided experience: taking you through sets of exercises that slowly build on a particular concept. At most, you may have had assignments where you had to build something, but it was still probably centered on a particular concept, and because it was a course, the answers you needed were still close at hand.
When you build your clone app, you will encounter the same problems the original developers had writing the original app, and often the answer will not be as easy as something from your courses and tutorials. This is what makes building a clone app a way to level up your skills:
- You learn how to take apart an existing app, breaking it into small pieces you can implement.
- You experience a wide variety of problems, and you learn the skills of researching, finding, and building solutions on your own.
- It’s much more like the “real world” experience of building an app to publish to the App Store.
The beauty of this method is that it works no matter how far along you are in your career. Need some experience in new iOS APIs and see an app using them well? See a new trick you want to keep? Clone that app! Learn by seeing, then by doing.