If you are completely new to coding, don’t know how to write basic algorithms on one programming language or what you just read sounds like mandarim, you have to spend some time learning basic programming skills before diving into this guide. Udacity, Codecademy and Coursera are all good places to start.
This article is indented as a very general guide, not a tutorial. There are multiple ways to learn something, and your thirst for knowledge might take you in a shorter, longer or entirely different path. Nonetheless if you follow most of the steps indicated bellow you should get to a point where you can ship an app, learn independently and have a constructive discussion with other developers.
Before we jump into it there’s a couple of things you’ll absolutely need:
– Basic Programming Knowledge (free);
– Time. A LOT of time (€€€);
– A Mac* (€€);
– The latest version of Xcode (free);
Let me be clear here: you do not NEED a physical iOS device in order to develop, test or run iOS apps.
With that said I would strongly recommend you get one. Here’s why:
As a user you can learn a lot about a platform by actually using it, getting familiar with its visual patterns, capabilities, common features and understand what apps stand out as pleasing and practical.
It’s understandable if you’re skeptic about investing that kind of money on a new phone, but perhaps you can get one used? For development you don’t need a top of the line iPhone, any model that can run iOS 11 will do fine. iPads are more affordable but the older models can be annoyingly slow.
If you do get a device, familiarize yourself with as many apps as you can. Try to identify common visual components or patterns. Replicating the result others achieved is an excellent (and humbling) way to progress. Also, don’t forget to pay attention to the little details that make each app unique and pleasant.
There are two main programming languages for iOS development: Objective-C and Swift.
For now, I recommend you forget Objective-C and just start with Swift. It’s newer, prettier and the Internet is already full of examples on how to do anything with it.
Apple’s “The Swift Programming Language” is one of the best resources to learn Swift. Its first chapter will walk you through the must needs of the language while the rest will dive deeper into some advanced topics.
It’s recommended you read the entire book at some point, but if you’re confortable after the first chapter you’re probably ready to play around with Xcode.
iOS apps are developed on top of multiple frameworks built by Apple. Some are newer like ARKit (think of a set of blocks that can build Pokemon Go) while some are older than iOS (Foundation is decades old). This collection of frameworks is called Cocoa Touch.
Perhaps one of the first frameworks you’ll interact with (pun intended) is UIKit. It contains most of the visual components you see in iOS.
Start by learning about views and view controllers and in no time you’ll bump into MVC. Don’t feel discouraged if you aren’t sure what a controller should do versus a view, most of us make a mess of that too, just understand the difference between one an the other. Try to identify separate views and view controllers in other apps.
Familiarize yourself with UIKit before moving forward, build a few apps with its components and see if you can copy any app UI (Mail is easier than Apple Music).
At this point you can find a lot of help online but be wary of just copying random code. Try to understand what you’re including.
Now that you “mastered” UIKit it’s time to have a look at other Cocoa Touch frameworks. There’s a lot of functionality in AVFoundation if you want to play with the camera; MapKit deals with maps; Core Location with locating the device on said map.
By this point you’re ready to become an app store entrepreneur by launching your first product. Let me tell you something, it will suck… In comparison with the second you launch!
There are certain things you should consider before you launch but at this point the experience should be your main goal. Don’t feel discouraged because your app isn’t as perfect as you would like or because the internet says you need a marketing strategy, just ship something!
As for what you should consider:
Bear in mind that Apple might reject your app if it doesn’t follow the App Store Review Guidelines. For obvious reasons you should read those before you start working on your amazing idea.
Apple will require icons, texts, banking information, etc… You can find lots of online articles on it since other developers have to go through the same.
There are amazing open source projects out there that will help make your app even better without you reinventing the wheel. And for managing those third-party libraries there are third-party package managers**.
Before you add a third-party component to your app you should investigate if it is well updated:
Woes it have a community around it?
Was the last update more than a few months ago?
Be mindful of those limitations when using anything. It is your app, you are responsible for that code. If your users find a bug they will go to you, not the original author. Some libraries might offer support or have channels in place for you to report bugs. Cocoapods, for example, has defined a Quality Index for ranking search results on their website.
The iOS community is very welcoming. You can learn a lot by reading or subscribing to some popular publications but also by going to conferences. Swift itself is open source and there’s an active community around it.
The developer community ends up playing a big role in our day-to-day, even if we don’t see it, and participating in it can be extremely rewarding.
Every year Apple hosts a developer conference in California, WWDC. Attendees have the opportunity to socialize with others from all over the world and corner Apple employees with questions about the frameworks they use. Attending can be expensive but if you’re awesome app takes off I highly recommend you try your luck in the lottery.
You can access the sessions online for free and I would argue those are the best resources to learn how stuff works under the hood. Even if you just want to know how to use a certain API, checking out the relevant sessions before diving into the documentation is a great tactic to learn quickly.
Learning something new might look like an impossible task but remember that speed isn’t important, what’s important is that you feel like every new day you are getting better at it.
*There are ways to develop without a Mac but those pose their own trade offs. That won’t be discussed on this article. Knowing if your Mac is good enough for iOS development can be difficult. Feel free to contact me if you’re in doubt.
**Apple actually ships a package manager as part of Swift, the Swift Package Manager, but its support is limited at this point.