Become an iOS Developer in 18 Steps
Apple’s mobile operating system is more than 10 years old. If five years ago it was enough to study Objective C and several auxiliary frameworks, now one can easily be stunned by a huge variety of options. This is the main reason why I’ve decided to create a visual manual that would:
- step by step show the way in which it is worth learning the subject
- give a coherent picture by which you can track your progress
I’ve had no goal to create the only true way to study iOS development, just as I’ve had no intention to choose approaches and techniques for you. I want to provide you with the broadest possible vision, so that you could judge which of the proposed options is better for solving a specific task, rather than pursuing a universal solution, or the hippest one.
Without further ado, let’s get right down to business. Below you can find comments on each item with links to the solutions and resources mentioned. Good luck!
1. Pick a language
There are 2 options: Objective C or Swift. I would recommend Swift as more modern and easy to grasp. If you already have experience in another C-like language, Swift will seem familiar to you. Swift allows to be more concise and expressive, to write more secure code. But don’t throw Objective C under the bus. In any project that is older than several years, there will always be a share of Objective C code. All large companies have huge amounts of code, its infrastructure and expertise. When you get comfortable with the basics of Swift-based iOS development, it worth going back and learn Objective C.
2. Install Xcode
To start writing and running the code you need an environment. Apple took care of this and created Xcode, which includes everything for you feeling comfortable. Xcode is distributed free of charge in the AppStore, and to download it, you need to sign up on developer.apple.com. It is free. You only need to pay if you want to place your app in the AppStore. There is also a paid alternative by JetBrains — AppCode.
3. Learn by playing
Another important point why you should choose Swift is its easy-to-learn feature using the Playgrounds tool built into Xcode. Playgrounds allows you to monitor the result of the code execution on a real-time basis. Apple also provides all the information required to deal with Swift. Learn how the memory works in Swift, how to prevent memory leaks and cyclic dependencies. Having mastered the language write as many applets as possible:
- remember the typical data structures: linked list, stack, binary tree
- write classic algorithms: binary search, heapsort or dynamic programming
4. Build your first app
To start developing for iOS, you need to study UIKit. This is a basis for all iOS applications. Create an empty iOS application in Xcode and start with learning the main components of the application: UIApplication, AppDelegate, UIViewController, Storyboards, etc. Read the built-in Xcode documentation for each of these components until you get used to them. When you figure out to what is what in an iOS application, start writing basic examples. Here are a few ideas:
- Show a list of friends and detailed information about them. Create 2 screens: the first one will have a list of names, by clicking on each of them another screen with more detailed information appears.
- Show several pictures downloaded from the web. Make the screen look like a standard Photos app. Learn how to download pictures from the web. By clicking on the picture, show it in full size with Zoom option.
5. Save data between sessions
So far, your apps have lived like the main character in “Groundhog Day” movie. Each launch is new to them. Learn how to save data: start with UserDefaults, then get acquainted with the Coding protocol, then go to CoreData. It will also be useful to get settled in Realm and Firebase. These are very popular alternatives to CoreData. Try to find some pros and cons of each solution.
6. Go online
Start working with async code. Study out Grand Central Dispatch (GCD) and NSOperation. Then, learn how URLSession works, how to parse JSON and XML. For practical reasons, redo the exercise from paragraph 4 with new knowledge in use. You can also create an app that will display a list of the most popular repos on Github using Swift or Objective C.
7. Explore dependency managers
A huge amount of code has already been written by other developers, tested and used in popular apps in the AppStore. No need to reinvent a wheel. Deal with CocoaPodsand Carthage. Swift has its own dependency library: Swift Package Manager. Install several popular libraries: Alamofire, Snapkit.
8. Standards and best practices
You can find lots of open source projects. Learn by their examples. This code is used by dozens and hundreds of thousands of apps in the AppStore, which means this code works stably. Check out Apple’s recommendations. You can also start to use ready coding style, for example, by LinkedIn. If you feel confident, try to engage in some open source project.
9. Test your code
You may have noticed the test files in the projects that you downloaded. Well, now it’s your turn to write tests. Tests help you better understand the code, make it more stable and eliminate the problems of changing the code in the future. Start with Unit tests, then move on to the integration ones. You can also write UI tests. Xcode kindly provides you everything you need.
10. Learn different architectures
So far you’ve used the standard architecture that Apple offers — MVC (Model-View-Controller). If you’ve already written a couple of tests, you may have noticed that it is quite difficult to select components for testing. Start applying the most common approaches: MVVM (Model-View-ViewModel), MVP (Model-View-Presenter) and VIPER (View-Interactor-Presenter-Entity-Router). See also Redux.
11. Use everything you got
Now you’re experienced enough to write a major project. Think out an app that will work online, cache the data, save information between sessions. Plan your navigation and let users create content. Apply dependencies. You can use Realm or Firebase as a server. Cover the code with tests, write comments and create documentation from them. Post this app on Github.
12. Learn how AppStore works
An important step in the iOS development process is publishing an app in the AppStore. If you are confident and can afford it, then pay $99 and get access to itunesconnect.apple.com. Even if you are not ready to pay, learn how the app publishing works, what are certificates and profiles, and how to let other people install your app.
13. Use analytics tools
After launching your app in the AppStore, the fun is just getting started. Different devices, operating systems, unpredictable user behavior and crashes: you will need to deal with all this. Figure out how to analyze the app stack after a crash. Use Crashlytics to collect information about crashes. Use logs to get important information that led to an error. To analyze user actions, use such analytics platforms as Firebase, Amplitude and many others.
14. Automate everything
A lot of time is spent on routine work. It is necessary to transit a new version of the application to test users, register a new device, check whether your changes in the code have broken something that was written before. There are ready-made solutions for that kind of job. Learn fastlane and use a Continuous Integration (CI) system such as Travis. Automate a bunch of tasks when developing your app.
15. Learn the ecosystem
iOS development is not limited to iPhones only. There is also a huge market for iPad, Apple Watch, as well as Apple TV. Learn how to reuse the code (a well-chosen architecture should help you). Pay attention to Today & Action extensions.
16. Optimize your code
Your app should work equally well both on new powerful devices and on old slow ones. Use Xcode’s built-in tools to optimize app launch time or to address freezes in demanding operations.
17. Keep studying
You already know a lot, but there is even more. Working with purchases and subscriptions, user data protection, localization (not all languages are written from right to left, and they also differ in word size), adaptation of the app for enlarged fonts, design and resources. All this is your job. Try using RxSwift or ReactiveCocoa. See how your code changes. Try different approaches for UI, for example Texture (aka AsyncDisplayKit)
18. Find a job
Code writing is not your only responsibility. Learn how to work in a team, plan the time you will spend on development, know how to deliver your point of view. All these are essential aspects of your work. The best is to learn this in practice. Create a CV, attach links to your apps on Github and go for it.