Let me first state that Treehouse’s Build a Simple iPhone App course in Swift was a breeze to go through. But breeze doesn’t necessary mean it was really quick to get through. It was very well put together in terms of the approach and how everything fit together. While it can get a bit tedious at times, it’s necessary as they’re targeting the complete beginner who has had no background in coding and assumes no knowledge going into the course. You can check out my first impressions over the course in my learning to code update.
A large chunk of the first half course is devoted to Swift Basics going over the language and concepts like flow control, variables and onto their more “advanced basic” subjects like structs and enums. Their analogies are easy to grasp and use animations to make their content more engaging. Of all the courses out there, besides maybe Code School, you won’t find high quality video production value anywhere else.
If you’ve already shipped a few apps in other languages, you can breeze through this course and peruse the documentation instead to get an overview of the Swift language.
How the course is organized
The first half of course is mainly done with Xcode’s playground feature, where you can safely play around with the syntax and concepts you’ll be learning without any repercussions of affecting anything else, which is the reason why the Apple folks called this part of Xcode’s Playground.
The course builds upon the basics by diving into the language basics of the language, its syntax and how to perform certain functions. While I’m still very much a beginner, I’ve fiddled around with Ruby before and to me Swift feels very familiar. While there are obvious differences in the syntax, it doesn’t feel overly verbose as some would call Objective-C.
Outside of foundational Swift language subject matter they then dive into the other building blocks of the app you’ll eventually be building, Functions and Optionals and Enums and Structs before going into actually building the Simple iPhone app as promised in their course.
The app that you’ll be building
The meat of the course is when you actually fire up Xcode and start playing with the features outside of Playgrounds. I’d say that you’ll be spending a fair bit of the second half of the course interacting with all the other features of Xcode and Interface builder. It was a bit buggy (as of writing this, I’m using Xcode 6.2 Beta).
The main parts you’ll be interacting with and drilling into my memory through repetition is Interface builder, Autolayouts (which is still pretty weird and a bit haphazard to learn in my opinion), and the View-Controller, and building a Struct where the facts in the FunFact app will be stored (or in my case.. poo facts lol ).
Glosses over MVC
While I assume this was quite intentional, and I haven’t gone far enough into their iOS courses to determine this quite yet, they breeze over the MVC software pattern, which is the backbone for all modern software development frameworks. I’m guessing they wanted to keep the course as lightweight as simple an introduce this concept as they get into more advanced concepts, which in my opinion is a good idea as this can be a stumbling block for many students.
One of the awesome things I’ve noticed since I’ve finished this course, and a reason why I had to retract a part of this blog post, is that they’re continually updating the course and adding modules. As of writing this post, they added Object Oriented Swift to the beginner’s Swift iOS track (which I now need to go over finish up =/ ).
You won’t have to worry about falling behind in terms of material being out of date as it looks like they’re really on top of the speed at which the language is evolving and will undoubtedly improve and change well into the future.
Learning on the go
While they have an iPad app and even an Android app that’s compatible with tablets and phones, they funnily enough do not have one specifically for iPhone. It’s too bad that they didn’t have a Universal iOS app to cover all versions of Apple devices (folks from Treehouse, can you please release it on iPhone?) To get around this, you can download the videos and sync to your Dropbox and bring it with you on the go. While I can’t speak for their iPad app, their Android app is very polished and gives the same access to all the content that they have available for their web desktop experience. The only setback is that it doesn’t allow you to view videos if you’re not connected to the internet, which is a shame for subway commuters.
Pasan and Amit (the instructors of the course) seem well spoken, professional and have a bit of cheeky humour that I seem to enjoy, which keeps a dry subject like programming a little bit engaging.
The methodology they teach in terms of learning and problem solving seems pretty bang on of figuring out what to do while building an app, which entails constantly referring to Apple documentation, trouble shooting your errors in Xcode to figure out where you might have went wrong if Xcode throws an error to figure out where exactly you went wrong. If you’re not able to glean any insight in terms of overcoming obstacles, you’ll refer to Google, Stack Overflow and finally the Treehouse forums which have been super helpful and responsive to questions.
After finishing the Swift iOS track up to this point, I can confidently say I know the basics of navigating Xcode and have the foundational concepts building simple iPhone apps.