Adam Rush

@Adam9Rush

24 May, 2022

Introduction

How to become an iOS Developer? It’s probably the most asked question right now in the community, especially by those who are interested in iOS or Swift but don’t know how or where to start.

I have been thinking about this topic for quite some time, not just because I was writing a book on this exact topic but because I am getting older, and I spend more time nowadays helping fellow engineers and mentoring new ones than I do writing commercial code.

I hope you can find this knowledge helpful because I wish I had known some of this information 13 years ago when I started learning.

About Me

My name is Adam Rush; I am currently the Technical Director of iOS at Stream; we build Chat SDK for your iOS applications. I manage the entire iOS department, including 10 iOS engineers from across the globe. Before this job, I worked for Sky as a Principal iOS Engineer, and the list continues. I have been writing Objective-C, Swift and SwiftUI for over a decade.

I have led major technical projects, managed engineering teams and led companies on significant technical challenges. I have also interviewed and hired many engineers and everything in between.

I have written about iOS for many years and continue to do so today.

What is iOS?

iOS, also known as iPhone Operating System, is the software that runs on an iPhone device, and the same goes for macOS, watchOS and iPadOS. It’s the code run on the device, and Apple opened up so that _we_ the developers, can use APIs to build applications deployed on these devices.

The App Store was released in 2008, and Apple provided us with Xcode and Interface Builder, whereby we could build these small applications and deploy them on the store. We were using Objective-C in those days; a language still used today. Applications on the App Store are still widely using Objective-C.

However, Apple realised that the learning curve for Objective-C was huge, and it was a language that required a refresh. So in 2014, Apple announced Swift, the brand new language for building iOS applications.

Swift applications now dominate the App Store, and many people will only know about Swift, which is the right way to go. I wouldn’t recommend learning Objective-C unless required.

The Things to Learn

When I speak to many people about learning to build iOS applications, I see the same answers coming up time and time again, and I believe I can simplify the whole process into a two-step process;

  • Learn Swift (the language)
  • Learn Apple Cocoa Frameworks

You might be wondering why this sounds so simple, and I am not suggesting this journey is going to be easy, but I think having a detailed plan will help, so let’s step through this in more detail.

Learn Swift (the language)

We often forget that Swift is an independent language, requiring no knowledge of how the Apple system works. You can write Swift without even downloading any of the Apple tools. Of course, you won’t get the benefits of autocomplete ;] but it’s certainly doable.

So, I recommend learning Swift and not even considering any of the Apple frameworks.

You can find a detailed list on the official Swift website.

I would highly recommend learning all of these fundamentals, understanding the meaning of each one and preparing to start using those concepts daily. Don’t worry, though. If some of these don’t stick, you can always reference them at any point.

Learn Apple Cocoa Frameworks

You have started learning the Swift programming language, and in my opinion, this is the best way to master building iOS applications.

The next phase is to learn about the Apple Cocoa Frameworks. You might be first wondering why they’re called the Cocoa Frameworks. You might not see this word all that often now (it’s likely me showing my age), but Cocoa was the interface between C libraries and Objective-C, so we could use those APIs for building iOS applications in the early days; you can read about the history here.

Apple have many frameworks for helping you to build your iOS application; the main ones are;

So that you have an understanding, UIKit and SwiftUI are _similar_ in the fact you’re building UI components for your iOS application; however, they’re very different in that SwiftUI is the newer way of making iOS UI with more reactive programming and UIKit is a more traditional way. You can read more about SwiftUI in my latest articles here. It’s your choice on which one you go down, many companies are still using UIKit, so an understanding would be beneficial, but I must say SwiftUI looks like the future of iOS.

Let’s jump into some practical coding examples so you can see what each of the libraries looks like.

import SwiftUI

struct HomeView: View {
    var body: some View {
        TabView {
            HomeContentView()
                .tabItem {
                    Label("Home", systemImage: "person")
                }
            TransactionsView()
                .tabItem {
                    Label("Transactions", systemImage: "list.dash")
                }
        }
    }
}

As you can see, we are importing the SwiftUI library to hit the SwiftUI APIs provided by Apple.

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

You can see the difference, right? You might be thinking that UIKit is easier and smaller in code size but this couldn’t be far from the truth, the UIKit example is a basic UIViewController and nothing else, not even any UI to render, the SwiftUI example is a whole UIView with a TabView as mentioned previously.

Getting Started

The first step is to download Xcode because all of the iOS frameworks known as the iOS SDK are integrated within the Apple toolset.

Be prepared for a long download process; Xcode is usually around 10GB in size because it contains everything required to get going.

Once you have downloaded Xcode, it’s time to start building small iOS applications that touch various Apple frameworks. In my opinion, this is the best way to learn iOS.

Now that you have built your very first application using an Apple framework, you could also create a Swift Playground to refresh your Swift memory from earlier, Swift Playgrounds is the best way to write Swift without worrying too much about the Apple frameworks.

You could also consider building an application using a SwiftUI TabView.

There are some excellent resources on the internet for building small iOS applications. Once you utilise some of the frameworks, you’ll begin to understand the core concepts of each one, and you’ll be writing more and more Swift each time ;]!

Keep on Learning

I know it’s easier to say this, and often it’s tough to be motivated these days, but stick with it and keep on learning. I am still learning now, ten years on.

You’re never _too_ experienced to learn something new, and the most significant piece of advice I can give is to listen to your fellow engineers and colleagues and be open to new ideas. I have had the privilege of working with some bright minds and have always been open to learning from those during my years and continue to do so today.

I consistently read new articles from other people and never stop learning, and I always ask questions; if something doesn’t make sense, then ask the question.

What Next?

I hope you found this article useful, and I am always happy to chat with you about your journey to becoming an iOS developer. We need more people, more diverse people to join the industry, and you’re the next generation of Swift developers 🚀.

Look out for more articles coming soon as I continue the journey to becoming an iOS developer. The next article in this series will include applying for jobs and writing your resume.

Sponsor

Subscribe for curated Swift content for free

- weekly delivered.