How to become an iOS developer, Bob

iOS Development is hard. Embrace it and deal with it.

Bob Lee
Bob the Developer
4 min readFeb 11, 2017

--

Not my desk

Personal Motivation

I often receive emails and messages,

“Bob, how do I become a badass developer?”

“Bob, I want to change my career. I like your articles and videos. How do I become an iOS developer?”

“Bob, I don’t know how to get started. I’ve never programmed before. Can u help me plz?”

I get it. But, I won’t lie. I despise answering generic questions. I call this, a How’s weather question. It has no meaning. It shows a lack of preparation. I find myself repeating.

If they were my close friends, I probably would have retorted,

“Have you googled, bro? If yes, google more.” — Me

Nonetheless, I’m aware I might be able to share limited insights through this article. Second, when someone asks me those how’s weather questions, I can say, “Please read this article first and then get back to me if you have any :)”.

Disclaimer: This is coming from my own head. I’m biased. I can only share my experience as Swift is my first programming language. Feel free to agree

1. Chill and get the fundamentals

I understand. When I first started learning iOS, all I could think was building the next big thing. I bought online courses and books — “The only course you need to become a paid iOS developer and make 18 apps!” — I got hooked. Bullshit.

I never understood what these super, !, ? , as, if let, keywords represent. I became a code monkey. I copied off from the screen like a zombie. If you are currently there, learn Swift first. It’s not about iOS. It’s getting the fundamentals. It’s like you are learning how to write books before you learn grammar and alphabets. Yes, you still can publish that book.

If you don’t understand any of these concepts in Swift below, you resort to those red marks on the left side of Xcode. Make sure you understand,

delegate extension Protocol optionals super generics type casting error handling enum closures completion handlers property observer override class vs struct

Don’t worry. You are not doomed — I’ve covered all of them. You can find out here.

Resources

Learn Swift with Bob (Udemy)

Don’t even try learning functional programming, protocol-oriented programming, if you haven’t mastered Object Oriented Programming.

2. Don’t get caught up with trying to understand all. Instead, find the patterns.

This is contingent upon the fact you are familiar with those core concepts above in Swift, and you are currently learning the iOS ecosystem.

You don’t need to know everything in iOS. In fact, it’s too big. There are too many classes and frameworks we have to deal with, and we iOS developers can’t know much since they are not open sourced.

As a result, I’d like to describe iOS development is like operating a microwave. All you need to do is read the manuals, but in order to read the manuals, you must know how to read words and find some unique patterns.

For example, to heat up, you press a couple buttons and the plate rotates along with a yellowish light comes from the wall. It’s the same thing. It just works because Apple engineers have designed that way. But as an iOS developer, your job is to understand why they have implemented such way. For example, I’d ask, “how does the rotation of the plate help heating up the food?”. That’s it. You don’t need to know how electromagnetism works in-detail although it certainly helps.

For example, I’d ask, why did Apple engineers implement delegate patterns and MVC? Always find their motives, and if you understand through googling, that’s it. It just works.

3. Dealing with APIs and document

Once you understand concepts such delegate, protocol, it becomes much easier for you to read the API documentation. However, most guides such as Bundle Programming Guide are still written in Objective-C.

Don’t worry. You can easily convert Objective-C to Swift. You can find it right here.

I often describe learning APIs is analogous to learning how to drive various vehicles. For example, UITableView and UICollectionView are like riding a bicycle vs motorcycle. UsingNSURLSession to download and upload data feels like riding a BMW. Creating an open source project is like controlling an airplane.

Regardless of vehicle types, they all share fundamental features/patterns. There are handle(s) and breaks, engines and oil to operate.

Finding those patterns are hard. But, it’s okay to struggle. The harder the task, the more accomplishment you feel when you eventually get it. For instance, people climb the Mt.Everest despite death threat. People leave the stadium when the football/soccer score is 5–0. There are too many patterns and you already know the answer — google, learn, apply, repeat.

The content has been migrated to the personal blog. If you wish to read the rest of content and become an iOS developer, please visit here.

--

--