A designer’s take on learning the basics of iOS development with Swift

By basics, I mean only scratching the surface of iOS development. Any apps I attempt to build today will be met with lots of head scratching, searching for tutorials and a hefty dose of Stackoverflow. But, I’ve learned the basics. And now I feel ready to build my first app.

Why mobile development?

Who wouldn’t? — Photo credits

Expertise in both design and development open up new possibilities in terms of personal freedom, career opportunities and what I’ll be able to give back to the world. Most of all, I love making products that benefit your average person on the street. Making things even my mum or dad can use. For most products today, if you’re not in the AppStore then you don’t exist.

Which path do I take?

Many roads lead to becoming a mobile developer. I ended up going with iOS / Swift, and I’m not regretting the decision! But I first had to make some important decisions before learning a single line of code.

Native vs Hybrid app
At first I thought about learning React Native and Node JS. The idea of a single codebase for mobile and native is enticing! Plus, I know a bit of JavaScript. But, React Native still has limited learning material on offer and the apps don’t stack up to truly native apps in terms of UX.

Android vs iOS
Controversial! I seriously considered not only learning Android development, but also swapping my iPhone for an Android phone. In the end the fragmentation of Android, and higher revenue of the App Store made me opt for iOS, but this was a close call.

To be honest, I think Apple’s “you too can do it” marketing campaign was what really got me in the end!

Swift vs Objective C
Swift is all the rage, but most companies in 2016 hiring iOS devs built their apps in the good ‘ol days of Objective C. Picking Swift here was an investment in the future, and the designer in me craving the simple.

Objective C code vs Swift code. I had no idea what this code meant but I was sold on Swift immediately!

Learning iOS and Swift development

A friend of mine recommended I take the Developing iOS 9 Apps with Swift course on iTunes U. It’s a top notch Stanford course that they release for free. Lecturer Paul Hegarty is an absolute legend! Highly recommended.

Learning theory in split screen. Lecture video on the left, my notes on the right.
Practical learning in picture-in-picture. This macOS Sierra feature was a real godsend.

Software development is hard

Damn hard! I love that Apple’s vision is the next generation learning to code along with Maths and English. But make no mistake, this isn’t child’s play.

To make things harder, midway through the course I updated to macOS Sierra. This rendered all my learning material obsolete since the new version of Xcode only works with Swift 3. The learning material was written in Swift 2. Facepalm! In the end everything was fine. I managed to update the code to Swift 3 manually, but I wouldn’t recommend it.

I’ve spent the last 7 years as a designer but I also code in HTML, CSS, JavaScript, SASS, jQuery, and did tutorials on object-oriented development. But this only helped me ~20% along the way to learning object-oriented development with Swift. And, I’ve only scratched the surface.

Having said that it’s totally possible to learn iOS development on your own. No need to pay over $10,000 for a bootcamp.

Geek speak

I can now have a semi-intelligible conversation with a real iOS developer about closures, optionals, delegates, protocols, Xcode, structs, enums, CocoaTouch, UIKit, storyboards, autolayout, the model-view-controller, segues, table view controllers, Core Data, Cloud Kit, application lifecycle.

How I’d sound to a normal person.
How I’d sounds to an iOS developer.

Tips for learning iOS development with Swift

What’s next?

I’m building my first iOS app. Minihero, is an app designed to help people help one another.