How I learn to become an iOS developer

Muhammad Ridho K. Pratama
Ridho's Personal Note
4 min readJan 21, 2019
Photo by eleven x on Unsplash

Back to Q3/Q4 2016, when I was a third year student, I have an opportunity to begin to shape my career as software developer, especially for iOS development. At that time, before I referred by my good friend and also Android engineer, I never doing programming in Apple environment, I never coding an iOS app before, just begin to learning the surface of iOS development, and stopped due to some activities in college.

And, I was appointed to handle their ojek online application development for iOS devices (but as of now, the app was defunct), and it was overwhelming for me, for the first time working on a big project with no experience before in iOS development. Dillema, I can accomplish that project or never, due my limited abilities back then.

The first thing that makes me overwhelmed in iOS development world back then is Auto Layout. FYI, auto layout is a layouting system based on constraint that applied in UI components on your view, that makes us to make the layout stay consistent & responsive on various device screen size, for the example, the Login button must be placed at the bottom of password text field with offset 20 points, with height 45 points, and left right inset set to 45 points to superview. It was like a, wtf, why making the layout is not that concise and easy, compared to Android’s XML based layouting. After I struggle to learn the Auto layout, accompanied with various reading materials on Apple docs, raywenderlich.com, and a bunch of Stack overflow solutions, then I have a better understanding about it. Oh that’s not so hard as imagined before, and now I enjoyed it.

Auto Layout is learned along with learning how to make a UI layout for the iOS apps, using Storyboard, XIB, or code. Back then, I use the storyboard to accomplish the project. So interesting and fun, making UI in storyboard, define the navigation, but I didn’t like anymore now. As of now, I’d rather to make UI layout either in XIB or full code. Beside learning how to make a UI layout, then I learn about View Controller that manage the view, handling user interaction, presenting the view, and also undserstand about their life cycle.

After I learn some UI layouting stuff, I begin to learn, how to make a network call. Apple has provided URLSession to make a network call, but for me, it was too cumbersome and hard to understand, and my choice is go to, Alamofire. It was a nice library to make a network call, easy to use, and concise. Back then in 2016, I often to use SwiftyJSON to map the response data to dictionary (at that time, I didn’t know how to map the response to struct, lol). Time flies, then Codable arises, with Swift 4.

Don’t forget to learn Grand Central Dispatch to handle the concurrency, dispatch queues, and also for multithreading purpose.

At that time, back to when I first kicking off to iOS development, I never consider about code quality, testability, and also separation of concern. Everything put in View Controller, lol.

After that, I begin to learn a new thing. MVVM and RxSwift. I used that architecture and those reactive library on my second project & learning purpose. First impression? Whoa, great.

For an instance, when I making a UITableView , to feed the table view with our data, we’re usually to making a separate object (or VC itself) to be a table view delegate and data source, thus the table view can ask the delegate and data source to manage the action of the table view or feeding the data. With RxSwift, I just to use the following code to feed the data, and return the cells, respectively

But, RxSwift usage is not just to feed the table view reactively, it’s more than that, for instance is used for data flow between one layer into another layer, or driving UI.

Okay, MVVM and RxSwift was done, so what I learn next?

Learning the concept of clean architecture, unit testing, implementing SOLID principles, and also intrigued to experiment with VIPER architecture, seems interesting, right?

Summary

So, I begin to learn iOS development with this things:

  • buy a mac
  • learn making UI layout
  • auto layout
  • binding UI layout in XIB/Storyboard to code
  • more UIKit components
  • grand central dispatch
  • network calls
  • persistance storage (UserDefaults, CoreData)
  • architecture other than MVC
  • RxSwift
  • unit testing
  • and a lot things… :D

So, if you want to learn iOS development, make sure you have a Mac first, then read Apple’s official documentations, read other tutorials and concepts, and start to code. Ciao.

--

--