A beginners guide to learning Swift and iOS development: Edition 2.2

Swift_logo.svg

Some of the first posts I did on this site were on what I thought were, at the time, the best online resources for learning Swift. Since then I have come across new material, and talked to other people who are just starting to learn Swift and iOS development. It has given me a lot more insight to what makes some resources better then others, beyond some of the obvious qualities. Because of these insights and with new material being released all the time I wanted to revisit this beginners guide to Swift and iOS development resources, and do a complete update to it.

This guide will not be broken down into several different posts. Instead, everything will be in one mega-post which will make it much easier to use as a reference. Part 1 will briefly talk about the different approaches you can take in order to learn Swift, from highly structured, to completely free form.. Part 2 will be broken down into multiple sections that will list the various books, courses, tutorials, and other reference materials, that are available, along with a brief summary of each and in some cases a link to a much more detailed review I have done. Part 3 will offer suggestions on which resources might be the best choices for you, and why, for those that are looking for some advice on where to start. So let’s jump in!

Part 1: From online classrooms to rolling your own.

Everyone has different learning styles. Some people need a lot of structure and to have their learning path laid out for them, while others are quite happy to mix and match the resources they need as they go, while others will fall in between this spectrum. Now that Swift has had a few years of existence in the wild there is a wide variety of really high quality resources to pick from, so chances are there is something out there for you. I will take a look at 4 possible learning paths and what sort of resources someone taking each one might be looking for.

The digital classroom

If what you want is the equivalent of an in class, and structured, experience then there are several options for you, depending on how much you may or may not want to spend. There are a number of sites that offer Nanodegrees in iOS programming, such as Udacity. These Nanodegrees really target people who are looking to learn Swift and iOS to get a job in development, but someone with indie aspirations could very well go this route too. The prices vary but expect to pay a couple hundred US dollars per month for up to a year. iTunes U is another option with Stanford and Plymouth University in the UK offering iOS development courses. They are both free, which is great, but they are just a single course and not going to take you very far in your learning journey on their own.

If the online courses aren’t quite what you are looking for you can always check if a local college or university offers anything online, or in person, but results and prices can vary wildly with this option. Boot camps are also another option with availability and cost again varying by city.

The tutorial approach

Tutorials are a really powerful way of learning when it comes to programming. Pretty much all learning paths are going to involve some degree of doing tutorials. But because iOS development is very much about creating an end product, versus learning pure computer science, many people find that learning through hands on app building, or exercises, is the best way for them. For this approach there are a number of options. Hackingwithswift.com, and the book and videos based on the website, is a collection of what is now 40 tutorials that covers a diverse amount of iOS development topics. Udemy is a site that offers user created video courses to be purchased with many of the iOS development courses there heavily focused on teaching through tutorials. You also have Ray Wenderlich who’s site was built on tutorials and which now offers books and videos as well.

Yes, books are still a thing

While video is understandably becoming a huge platform for learning online, books are still very much relevant and can offer a more classic way of learning. Perhaps the most important aspect of learning by books is to make sure that if you purchase a print edition of a book (which I and many others still do when possible), get a digital copy as well. Not only is it handy to have a digital copy to reference as you work or if you travelling, but with Swift still changing and evolving many publishers and authors will offer updates for a period of time so that you are learning the most recent version of Swift and seeing the most up to date syntax. For some books that are much theoretical this is somewhat less important but for anything that is highly practical and DIY this is a must. In the section below, where I cover Swift books, I have also included links to any of the ones I have done an in depth review for which should allow you to really determine if that book is for you or not.

Mix and match to create your own learning adventure

I would imagine that most people will end up learning by combining a number of different resources over the course of a year or two to create a collection of learning resources that is just right for them. And why wouldn’t you. Learning from a mix of theoretical and practical resources is going to give you a really balanced understanding of Swift and iOS development.

There are endless combinations that could lead you to success. If you want to know what I personally think is a great strategy and collection of resources then you can head to Part 3 of this guide to find out. For the moment all I will say is that as you are trying out different resources don’t be afraid to move onto something different if it doesn’t seem to be working out. When a resource is really working for you it will probably click right away, and with so many options out there now there is no reason to stick with something that is giving you mediocre results.

Part 2: A guide to Swift and iOS development resources

This is by no means a comprehensive list of all the Swift and Apple development resources. These are however the ones that I have used extensively, are popular enough to have taken a look at myself, or have been used by other people and recommended by them. In the case of the latter I still dive into the resources as much as I can to see what they are about.

I have broken the resources down into 7 categories: Programs, courses, videos, tutorials, books, advanced books, and reference sites. In these categories I focus on giving a summary of each resource and as much as possible let each person decide if it is right for them. In some cases I will explicitly recommend something for beginners or suggest someone wait until they have more of a background knowledge in Swift before tackling it. And in other cases I will not give a strong recommendation to anyone if I think the resource, popular as it might be, isn’t a good option.

Programs: Fully comprehensive collection of courses on Swift and iOS development

Udacity – This is the only site I have in the programs category. The reason is important but first let me cover what Udacity offers. The primary offering, or the one they want you to sign up for are their Nanodegree programs. There are several offerings, but the one most people reading this will be interested in is the iOS development program. The course length is 270 hours and they say that if you spend about 10 hours a week on it you will complete it in a year (the math is a little funny but perhaps the course length is just the time for reading and lectures?) The cost is USD199/month, which also includes code review, one on one help and other benefits. If you complete the course in 12 months then you get 50% of your tuition back. There is a USD 299 option that includes a job guarantee, or full tuition refund if you do not find a job in the end (I am sure many, many strings apply to that offer though).

There are also free courses available. Many of these cover the same material as the Nanodegree, without the potential to get a certification at the end though. So depending on whether that certification is important to you or not you can still get a lot from this site without paying. The content here is high quality and production values for the videos are quite good. The reason that this is the only program I have mentioned (at the moment at least) is because it is really hard to verify how good they are. In the case of Udacity it has a lot of positive feedback online, I have been able to see a lot of the content myself, and they also partner with major tech companies to help build the courses and make them relevant. Udacity has built a good reputation for itself over the past few years and when you are going to consider spending what could be several thousand dollars, it is really important that the value you get is in line with the cost.

Courses: Individual courses on various aspects of Swift and iOS development

iOS Development in Swift – Plymouth University on iTunes

For someone brand new to Swift, or programming in general, this is a great place to start. The course is long, comprehensive and moves at a pace that is suited towards someone just learning programming principles. The production value is good, and the narration is fairly polished and easy to follow along with. As with all iTunes U material (at least so far as I have seen) it is free to watch all the videos in the course.

The course should be fully updated to Swift 2.0 at this point. However, we are already at Swift 2.2. The differences are small enough between 2.0 and 2.2 that this is not a big deal. But with Swift 3.0 coming out in a few months, and the course being very practical, it is a bit questionable how long it will be useful for. If you are starting to learn Swift today (as in early June, 2016) then I would still recommend it as a good place to start. But once Swift 3.0 is released then I would probably hold off until this is updated to that version.

Developing iOS Apps with Swift – Stanford University on iTunes U

This course has essentially been around since the App Store was created and has been update every year to reflect the changes in iOS, including being updated to teach programming in Swift. It is developed by Stanford University and if such a thing as a “gold standard” of iOS courses exists, this would likely be it. The most recent session, which cover iOS 9 and Swift 2.0 is slowly being released as we speak so it is fairly up to date.

And being on iTunes U it is free. And that is pretty amazing given the quality of the course and how much you will learn. However, the one caveat for this course is that it does assume prior knowledge of some object oriented programming principles. If you have work with other object oriented languages you should be okay to start here. But if you are brand new to programming altogether I would recommend getting a good handle on the basics of Swift so that you are much more comfortable and prepared going into this course.

Teamtreehouse.com

This site is along the same lines as a Lynda.com, except that it also includes various little exercises as you work through each video in the various courses. It has created a number of courses related to Swift and iOS development. Calling them courses is a stretch though as many of them you can get through in 3 or 4 hours. The videos themselves are not too bad with good production value. But I do find their use of “badges” and “points” for completing courses to be a bit gimmicky and pointless. And some of the courses didn’t really go into the depth that a beginner would need.

This is a paid site that costs $25/month. There is also a 14 day free trial offered. Given that there is a free trial it is worth checking out to see if it is the right fit for you. Even if it is I would imagine a month to work through the Swift and iOS courses would be more than enough time. But use the free trial to see if it is really going to be right for you as I don’t see this being one of the better resources out there now that many others have come to market in the past year.

Videos: Collections of various Swift and iOS development related videos

Swift and iOS development courses – Pluralsight.com

This site is very much like Lynda.com but with a more tech oriented focus. One of my favorite instructors, Simon Allardice, now does videos for this site (his videos over at Lynda were probably my favorite Swift language videos to watch) so that is a big plus for it. But, like Teamtreehouse, this is becoming a less useful resource for learning Swift now that there are many more options available.

There is a cost for the site, USD$29.00/month (less if you pay for it annually), and I am not sure if they do promo codes, but I suspect if you searched you could find some and get for a bit cheaper. The courses it does offer give a nice overview of Swift, but really don’t take you to far in your learning journey (which is a shame because a truly comprehensive course that was done by Simon Allardice would be an incredibly value resource for many people). If you are planning on learning Sketch or other some other application for doing the graphic design aspect of iOS development they have courses for that too. That would be an instance where someone might find this site to be worth the cost.

WWDC Videos

Every year Apple hosts the Worldwide Developer Conference in San Francisco. The most notable part of this event is a keynote where the newest operating systems are introduced, along with other hardware or services announcements, depending on the year. But what brings people there are all the technical sessions introducing new features and APIs that will be part of their next software release. All of these videos are posted online and have become a wealth of valuable information for developers. Some of the videos become irrelevant within a few years as APIs and the transition to Swift make many processes obsolete. With that in mind it will be the 2015 and 2014 sessions that are going to be the ones too look at (and soon to be the 2016 sessions).

These videos come with a strong caveat for beginners. They often assume a lot of prior knowledge so what they say can often fly right over your head. From a technical standpoint they really become valuable once you develop some intermediate or advanced programming skills. For a beginner they can offer a great insight into just what you can do with iOS and OSX, but they are not going to be good at actually teaching you how to do it. And some of the most fascinating videos are the ones where they skip the code and talk about design philosophies, what makes a great app, and how to prototype (if you watch only one video then watch “Fake it Till you Make It” from WWDC 2014 which discusses the prototype process behind “Toast Modern”)! Just as when you first start reading about Swift a lot of this wont initially make sense when you first watch it but will still provide some great context and set off more than a few light-bulbs when you go back to them later down the road.

Tutorials: Websites, books, and video collections that focus on teaching through building

Hacking with Swift

Though most of this list is not in any particular order this site really should be at the top. There are currently 40 individual tutorials online! And there is a full range of topics covered so you can pick and choose the ones that are most interesting and most relevant to you, or start from number one and work your through them all to get a pretty in-depth introduction to Swift. They are structured in a logical, easy to follow way with good explanations on what is being done and why. The tutorials are free but if you find that you’ve really gained a lot from them you can donate as a way of saying thank you (and I would encourage it to help make sure this resource keeps going and continues to be updated with each update to Swift as well).

Ray Wenderlich

This is not one of the prettiest websites you will find out there. In fact you could even call it ugly and have a valid point. But don’t let that cloud your judgement because behind that wall of green and white is a huge collection of really good tutorials and resources. You could break Ray Wenderlich down into three different areas, the free tutorials, the paid tutorials, and the books.

The free tutorials are what you come across when you search through the site, or when this site appears as a Google search result. They a fully independent (except when they are explicitly broken down into multiple parts) and cover a very wide range of Swift and iOS development topics (along with tvOS, watchOS, and macOS). The paid content includes videos for many of the tutorials they offer. I have not had a chance to look at the paid content yet, but judging by what others have said about it this is also a good resource. The problem with these two beginners is that there is no real flow between the tutorials that will allow you to work through in  a bunch of them in a logical, progressive way. But, the site does also offer a number of books which feel very much in the same teaching style as the site, but with much more structure. If you like the site, but find it lacking in structure, then the books might be a great option for you.

Udemy.com

This site offers a number of Swift and iOS development courses. One of the advantages of this site is that they seem to be very fast at putting up new courses to reflect the latest updates to Swift and iOS. The courses themselves are not bad and the usual structure is 5- 10 hours of concepts, theories and general practices. Then the remaining time, 10 – 25 hours, is spent doing demo apps. Seeing coding in action can be very helpful as you start to get the itch to put your knowledge to practical use!

There are a few caveats to this site though. The first is that many of the courses seem similar. So it probably isn’t necessary to get any more then one of them. Second, the production value is not very high compared to other resources and is variable depending on exactly which course you are getting. A lot of the are just straight screencasts and this can okay when done well, but really hard to watch when not, so definitely keep that in mind if that style isn’t going to work for you. And the final caveat is pricing. The pricing is highly variable and not always easy to find. If you can find a deal and pick up one of these courses for $50 or less then its not too bad of a value. But anymore then that price and I would give it some real thought. Deals can be found if you are willing to look and wait it out.

 

AppCoda

This site has a lot of tutorials with most of the ones in the past year written in Swift. It covers a lot of topics, many of them somewhat advanced, such as integrating LinkedIn logins (why you would want to do this I don’t know, but it can teach you how), using Core Spotlight, and using Alamofire in your project, to name a few. So this might not be the first stop for someone just learning Swift and iOS development. But as you start developing more complex apps and getting more ambitious this could be a good resource for that next level of programming.

We Heart Swift

There are a lot of really in-depth tutorials on this site so if there is a subject you are interested in learning and you see a matching tutorial for it on We Heart Swift then trying one from this site is likely going to be a good choice. There are usually a lot of screenshots with each tutorial and good write ups on what is being done and why so they are easy to follow along with and learn from. There is not a specific tutorial section (that I can see) so you have to do a bit of searching, but it is no worse navigation wise then most of the sites out there (though it would greatly benefit from a bit more organization). **This has not been updated very much since I last took a look at it. Though some of the tutorials are interesting they may not be up to date, so be aware of that.

Getting started with TDD in Swift

This is a tutorial for one single app, a fizz buzz app, which is one of those apps that is very much a staple of early programming courses. What is really great about this tutorial is that it is very detailed, has wonderful explanations, and many gifs to make it a delightful read. If you are just looking for a tutorial that will give you some extra practice, and be fun to boot, then you can’t go wrong with this one. And send Yvette some kind words and encourage her to do more tutorials in the future!

iOS-blog.co.uk

A good collection of tutorials in Swift. What is nice about this site is that there are tutorials for Apple Watch, which are not exactly common at the moment, as well as tutorials for lesser covered subjects, like the Contacts framework. It is a bit code heavy at times with not as much discussion and description of what is being done and why compared to some other sites, so its probably not the best for a total beginner, but someone with a basic understanding of Swift could find the tutorials useful and just comprehensive enough (with a bit of patience).

envatoTuts+

A collection of articles/lessons/tutorials from a number of different contributors. They are generally well written and don’t go into extreme detail, but don’t just gloss over important points either. Navigation is not the best, and if your looking for tutorials that result in a full app being built there is not a big selection of that. But they do cover topics, such as UI design, in a more depth then other sites and which often gets ignored, so from that perspective it might well offer something new for you.

Awesome Swift Education

This is a huge collection of resources over on GitHub all in one convenient place. Everything is structured into key topics on the main page and contains links to tutorials, articles, and source code as well. Searching for a specific topic is pretty straightforward and most of the resources look to be very detailed and in-depth. This one was new to me, submitted by hsavit1 over on /r/Swift. Thanks for the heads up on this one!

YouTube Swift tutorial playlist

I can’t really comment on which of these videos is good or not. But there is a lot of videos, 330 at the moment to be exact. So I am sure there is bound to be something good within that list. Once I have a chance to take a look in more detail I might be able to highlight some of the better ones but until then you can take a look around yourself.

Books: A retro way of learning 

Swift Programming: The Big Nerd Ranch Guide by Matthew Mathias and John Gallagher

Big Nerd Ranch is a bit of a juggernaut when it comes to books on helping you learn iOS, Swift, Cocoa for OSX and probably much more that I haven’t even seen yet. While I did not read this book, it consistently gets great reviews and feedback from those who have, and is a constant top recommendation by people of all experience levels. So if you liked any other Big Nerd Ranch books, or just want to pick something that is a safe bet and a good price then you probably won’t go wrong with this book.

The Swift Programming Language by Apple

Unsurprisingly Apple has published its own official guide to Swift. There are a couple things to note with it. One, when Swift is updated so too is this book, so you can be sure you are getting the most recent information. Two, while it is not the easiest read for a beginner (especially if you do not have programming experience), it is a must read nonetheless. Everything they cover is important and even if you don’t understand everything the first time you read it you will at least get introduced to the multitude of concepts you will need to know down the line.

You can download this as either a PDF, or there is an html version you can access online from any device. It is free and this is one of those resources everyone should read at least once when they are starting out.

Beginning iOS 9 Programming with Swift

This is one of the books that I have used and it did a nice job going through iOS development in Swift in an easy to follow, and logical, direction. The fundamentals of the book are strong and for someone looking for structure to take them on their learning journey this will do the trick nicely. This book also adopts the extended content model. If you want just the beginner book, you can get that, but if you also want it bundled with the intermediate level book, you can get that too, or further add on design templates and online support. For someone just starting out I don’t know if getting one of the full packages makes a lot of sense, but it is an option for those that think it would be helpful.

Your First Swift App by Ash Furrow

What makes this book really interesting is that its track is based on the idea of creating, building, and submitting, as the title says, your first Swift/iOS app. There might be lots of other books out there that take the same approach with Objective-C,  but this is the first one I have seen that does so with Swift. In that sense it is very practical and hands on and will give readers a real sense of what the whole app building process is like. I have not yet read this book, but Ash has a longstanding reputation as being a great programmer and developer, and has published other books in the past, so it is written with experience and authority behind it. The book is e-book only, but it is on LeanPub so the price is very affordable and it sends a large majority of the money spent on the book directly back to the author.

Advanced books: For when you start to move to the next level

Pro Swift by Paul Hudson (detailed review here)

This is the follow up to the Hacking with Swift series and once you have grasped everything you need to know at the beginner level this should be your next stop. The focus is on taking a deeper dive into more advance topics in Swift in a very practical, accessible way. It also includes, standard, 70 screencast videos covering a good amount of the content of the book. To get the full depth of what the book covers and what you can except from it you can read my detailed review here. This is a fantastic resource, especially for people that are not coming from a programming background.

The Swift Developers Cookbook by Erica Sadun (detailed review here)

This is not what you get when you are first starting to learn the basics. It is what you get when you have some basic knowledge and want to get introduced to some of the more fundamental and advanced concepts of programming in Swift. This book really focuses on the programming aspect so that you can create great code under the hood of your program. It is well righten so the subject matter is approachable, but it will still challenge you at times. This is one of those books where if you can really master much of what is discussed in it then you are giving yourself a great platform to build from!

iOS Apps with Rest APIs: Building Web-Driven Apps in Swift by Christina Moulton (detailed review here)

As you might have guessed from the title, this book has a very specific focus. But with so many apps needing to integrate some Rest API, authentication (i.e. OAuth2), or parsing JSON, this is something you will have tackle as you progress into more advanced projects. When that time comes this is a great resource for learning all of that. Well written and regularly updated to the latest Swift version (it is currently updated to Swift 2.2). I have done a detailed review of the book which you can take a look at to get more details on what is inside this book.

Algorithms & Data Structures in Swift by Wayne Bishop (detailed review here)

The subject of algorithms and data structures is very complex when you start to do a deep dive into it. And there is a chance that learning how to use algorithms in your programs is something you want to do to set them apart from apps. This book serves as an introduction to the topic. It is not comprehensive but it does offer those that are curious a chance to see what the topic is all about, and for those wanting to learn more, this is a good place to start for an introduction. For more information you can check out my detailed review on Algorithms & Data Structures.

Test-Driven iOS Development in Swift by Dr. Dominik Hauser

Test-driven development is a development paradigm in which you write unit tests first, and then write code that will make them pass. If you don’t understand what all that means, don’t worry, one day you will. This is a book for those that are really serious about levelling up their Swift development skills. Unit tests are not exciting, but they are incredibly important to writing stable, error free code, and is something you will have to learn at one point. When you decide that day has come, this is a book that will throw you into the subject head first. This requires a lot of patience and persistence to get the most out of it and if your not going to fully commit to working through this book, your better off to wait until you can.

Objective-C for Swift Developers by Paul Hudson (detailed review here)

As much as you might like to stay in your Swift bubble, at some point you are going to have to learn how to at least read and interpret Objective-C. There are a lot of reasons for this. Most 3rd party API’s are still written in Objective-C with many not even having basic documentation for using them in Swift. There is a lot of source examples you will come across, including many on Apple’s site, that are still in this legacy code. And if you join a development team you could be working on a code base written in Objective-C. This book is very accessible and teaches you the basics of Objective-C syntax and how code is constructed. It is not meant to teach you how to write a whole app in that language. This is about learning just enough to work older code bases and move on, which is what most people will want to do. There is also a more detailed review of the book available for your reading enjoyment.

Reference sites: Additional resources that will help you out while you are learning and when you start to do your own coding and development

Stackoverflow

When you run into a specific issue, lets say understanding why your implimentation of CNContactPickerViewController is not working, there is a strong chance you can find the answer on Stackoverflow. This is a site where users asks questions which are then answered by the community. The knowledge base that exists in this community is exceptional so most any question that is asked gets answered. And most, if not all, questions that you have when you first start out programming have already been answered so do an exhaustive search before you post. Searching with as much detail and using the correct terminology is the key to finding the best answers without wading through pages of irrelevant questions.

Because of the nature of how the community is setup with up votes, down votes, and often times snarky responses I have never actually asked a question myself. But I have also never had the need because every question I have had has already been asked. It does take a bit of skill to harness the power of Stackoverflow because you need to have a certain level of knowledge of the problem upfront to ask the right question. But this is also why I love using this resource so much because often times when you are doing the work to understand the problem well enough to ask the right question you not only learn more about the processes themselves but sometimes you even solve the problem on your own!

Apple Developer Forums

You will have to do a quick signup to access the Apple Developer forums but it is worth the minute or two it will take. As you might expect there is a wealth of information here that can help you troubleshoot and solve some of your problems. The strength of this particular resource lies in the fact that when there is an error caused by Xcode or Swift itself that requires a fix in the next update you will often find feedback letting you know just that (there are times where you are in fact doing things right and that it doesn’t work is not your fault)!

Using the search on the site is the best way to navigate. Being as specific as you can be will lead to the most relevant results. The Swift questions are increasing very rapidly on the developer forums so it is becoming more and more useful with each passing day.

iOS Developer Library

This is Alexandria when it comes to Swift and iOS information. From the HIG to programming guides on MapKit to core data there is unlikely to be anything related to iOS development not included here. When you go to the main page for the developer library you will see a large number of categories and topics on your left hand side that can help assist you in finding information, and give a glimpse into exactly what resources are available. Like most resources on the Internet the search function is how you will most likely navigate through it but keep in mind that displaying results in a relevant manner is not nearly as refined and precise as you might be use to so you may have to scroll down a page or two in order to find exactly what your looking for.

For a new user, trying to find what you are looking for can be challenging at times which is why this is not at the top of this list. But learning how to navigate the library and knowing how to find the information that is relevant to whatever you are trying to learn or solve is incredibly valuable. It is worth becoming more comfortable with this resource as your knowledge grows.

Google

This might seem obvious since Google is so engrained in how we interact with the Internet. I mention it though because it is worth keeping mind two things too really help you utilize its power. The first, as I have said before in other cases, is that knowing how to ask questions correctly greatly increases the chances of getting a result that will lead to a solution. Do not just ask “why doesn’t my button bring up an alert in iOS”. Ask “why doesn’t the button in my UITableview initiate the UIAlert message using swift?”  Adding even just those few extra descriptors is going to create a far better result and let you solve problems much faster.

The second thing to keep in mind is that not all search results have the same value. You may see a site regularly show up in the top of the search results but if after a few visits you haven’t found it useful there is a good chance it will continue that pattern. Your time is valuable so really pay attention to the useful and not so useful sites so that you aren’t wasting a lot of time blindly clicking to see if “maybe” that site will offer an answer.

Reddit

Even though Reddit can be a hateful place, there are a lot of positives about it to. For up and coming developers there are a number of subreddits that can be great places to find out about the latest news, articles, libraries, changes to Swift and iOS, and anything else relevant to developers. /r/Swift is, as you might suspect, all about Swift development. You can generally ask a question here and get friendly helpful responses back. If a question isn’t answered directly usually someone can point you in the right direction. /r/iOSprogramming is a broader based subreddit that covers all aspects of iOS development from the coding, to design, distribution and marketing.

A quick note on conferences

On the day I am posting this WWDC, Apple’s big, extravagant, developer hoopla, is just 3 days away and consuming everyones Twitter feed, news articles, and podcasts discussions. But this is not the only conference for iOS and Apple developers. There are now dozens of them across the world each year, with some dedicated just to Swift, others focusing on the business of being an indie developer, and many of them mixing both those elements.

For someone just starting out it is unlikely your going to be jumping on a plane and heading to one of these straight away. But because most of them now post videos of all their sessions, you can find a wealth of information when you start progressing to the next level as a developer. Whether you want to get a better understanding of the business of being an indie developer, to hear interesting stories of other developers experiences, to learn all kinds of Swift magic, or just to get some inspired, you are likely to find at least a lot of captivating talks from these conferences. You can check out a post I did listing some of the biggest and most popular Apple developer conferences along with the links to the videos they have posted online.

These smaller, independent conferences are a fantastic way not only to learn and level up as a developer, but to meet people, make friends, and have opportunities to discuss and hear about the issues and challenges that other developers are facing, along with what they are most excited about. When you get to the point that you are ready to start attending a conference or two, don’t just assume it is WWDC or bust. These indie conferences are a far better value for up and coming developers, not just because they are usually half the cost, or less, than WWDC, but because they offer far more opportunities to meet the other speakers and guests, and a lot of fun while you are there too!

Part 3: Deciding which path to chart

When you start learning Swift and iOS development one of the first real challenges you will run into before you even start looking at code is figuring out what is the best collection of resources for you to use. If you know you want something highly structured then chances are your choice will be easier as it will come down to whether you use a site like Udacity or maybe even attend a local coding boot camp. But for most other people it can feel daunting.

Based on my own experiences, and from hearing what path others have taken, I have put together one possible route a newcomer to Swift and iOS development could take. Keep in mind that this assumes the person has little to no previous object oriented programming experience and is starting off with a blank slate. If you have past experience then your route will look a bit different I am sure.

To start with I would suggest reading two of Apple’s own books/guides. The first is The Swift Programming Language (Swift 2.2) This book is admiringly tough to read for a newcomer. But it is going to introduce to you all the concepts you will ultimately need to know in order to become a developer. The second is The Human Interface Guidelines. There is no code in this guide. This is solely about Apple’s design paradigm and it’s guidelines for creating functional, friendly, and great looking apps. This will get your mind thinking about how to design an iOS apps UI, which if you are going to the indie developer route, you will need to know. There are also other Human Interface Guidelines for watchOS, tvOS, and macOS if you find yourself starting to, or thinking about, developing for those platforms.

After that it is time to dig deep into the fundamentals of Swift. There are two resources that I recommend starting off with. The first is Hacking with Swift by Paul Hudson, along with the follow up book he did, Pro Swift. Hacking with Swift is a tutorial based way of learning and at 1200 pages it covers a lot of material. The follow up is a book that is still practical but does a deeper dive into topics, and also includes videos that are great to watch along with. The other option ideal for beginners is The Big Nerd Ranch Swift Programming book. The consensus and feedback seems to be that this is the best introduction to Swift book currently available. It takes a more classic approach to teaching programming with a mix of practical and theory, and is very accessible for newcomers to programming.

Once you have gotten through one, or both, of those options then the next step should the iTunes U Stanford University CS193P iOS 9 programming course. This is were you will take a lot of what you have already learned and see it applied in a much more computer science oriented fashion. This really reinforces efficient, flexible coding and will help you bring your skills to the next level. It might take two run throughs of the course for it to really sink in, but it is worth the time investment.

Of course if those are not working for you then there are lots of other options out there. Ray Wenderlich has an array of free and paid tutorials, along with a number of books, that might be the balance between theory and practical you are looking for. There are a number of other intro to Swift books out there as well so perhaps take a look at one of them to see if they are better at communicating the concepts and ideas in a way you can understand.

Once you have completed that first round of learning you are likely going to feel confident where you want to head to next in your learning journey. You can take a look at the section in this guide that includes a number of advanced topic books that will help you take your overall Swift skills to the next level, or help you focus in on something a little more specialized.

A final thought

Ultimately what path you want to take, how much effort you put in, and how motivated you are, is in your own hands. There are a lot of advantages to being self taught. It can be a lot cheaper, you can work at your own pace, and learn exactly what you want to. But it can be hugely challenging when you hit roadblocks or need help. Being able to work those kinds of problems is going to be just as important as solving a complex coding one. Patience and persistence is needed and if you can take this route, and make it work, then you are really setting yourself up for success.

Good luck and godspeed in your learning!

I do hope this guide has been helpful to even a handful of people. If you have any suggestions of great resources that are not on this list, or just general thoughts and comments, you can find me on Twitter @third_beach.

2 comments

  1. Arnold · September 26, 2016

    Thanks for posting these helpful guides. I discovered your blog today, and am really enjoying reading through these articles. As a Swift beginner, with no previous coding experience, I’ve gone through some of the resources you’ve listed, and look forward to trying out some of the others you’ve recommended.

    Like

  2. manitobaninja · September 29, 2016

    Thanks for the feedback Arnold and I am glad this helpful to you Arnold!

    Just a heads up that this blog is no longer maintained here at WordPress. If you go to https://manitoba.ninja/introduction-and-picking-your-resources/ you can check out the learning resources section I have put together at my new site. Just hover over the +Resource Guide menu option to see all the different categories. This is where anything related to learning Swift will be going. I still maintain a blog there but it is a mix of everything with less focus on pure development or tech topics.

    If there is anything you think could be added just let me know…I am always looking for ways to improve the guide.

    Like

Leave a comment