Learning iOS with Swift

In 2014 mobile app usage overtook desktop web usage in the US for the first time in history. Businesses can no longer afford to ignore or underinvest in mobile, so it only makes sense to ride the upcoming wave and learn app development.

Coming from OOP in php myself, I was also getting tired of fighting with responsive design and browser compatibility, and wished to spend more time actually coding. iOS and android apps both offers visual auto-layout, helping to design apps quite quickly, leaving more time to get to the real fun, coding.

As I progressed in my iOS learning journey I realized there were so many resources that it could be useful if I documented my learning process, saving others some time and some of the pitfalls I encountered.


Which resources should you use to learn iOS and swift?

To get started, I would recommend getting the basics through the following:

  • reading at least partly the official apple swift language manual (which can be downloaded on iBooks to be read on your iPhone whenever you have time, ie during commuting): this is a very good resource to have an overview of the possibilities of swift, the way the language is structured, a comparison with objective-c etc.
  • doing the excellent The Complete iOS8 and Swift Course: learn by making 15 apps, which allows you to learn xcode (the IDE used to make iOS apps) and the basics of iOs development in a fun way by making clones of famous apps like Snapchat, Tinder or Instagram.

Once you get there I would recommend choosing a project you really like, and start coding it. For me it was making an app connecting to a social network website build with Oxwall. Only a project you care about will give you the necessary motivation to keep going, despite going through the unavoidable desert of despair. A real project will also give you lots of opportunities to learn about topics not covered above, expending your range of knowledge. Luckily you will find billions of youtube tutorials to guide you through the more common app building problems, like:


How long does it take to be able to develop (basic) iOS apps?

Beginners in app development are often wondering how long it will take them to learn how to code for iOS. In my case, I would say the above took me 8 weeks (quite) full time. By the end of it I had my first #entirelycodedbyme little app, which looks like this:

Not so bad after 2 months of learning iOS, starting from scratch, eh?

But the problem was, my app was still full of bugs, bugs I couldn’t fix on my own with resources like google and stackoverflow, despite my best efforts. I could feel that I needed a mentor, someone with iOS experience who would be able to review my code, give my tips that only experience can bring, and help me fix the bugs by seeing what I have done wrong while coding my first app.


How to find an iOS coach?

There are a few coding schools providing mentoring and coaching online, and you can also find local groups on meetup providing weekly co-learning opportunities. Personally I heard through a Facebook friend about Hackership (a success story about having done batch 1 to learn iOS and getting a job as a junior dev right after), applied immediately, and got into their next batch!

What is Hackership?

Hackership is a non-profit organization affiliated to Open Tech School, a Berlin association which provides hands-on, empowering, peer-driven tech learning. They believe that:

“Education should be affordable and accessible, not about profits. We are about learning and empowering everyone to become a learner. Individual. Life-long. Self-directed.

They run 9 weeks hands on, self-directed learning retreat for developers, several times a year in different locations.

This year the batch is in their hometown of Berlin, and starting 6th of July I will be there and will write at least a post a week about it. So if you’re interested either in the concept, or in useful tips about learning iOS and swift, stay tuned to follow how it goes, and if you like it, don’t hesitate to apply for one of the next batches!