You have learned a lot over the past weeks, grasshopper, and you might even feel a bit overwhelmed at this point. I'd like to leave you with some advice and a bunch of resources to keep you on track to become a proficient iOS developer.
Things to Consider
Even though 2007 seems like yesterday, the mobile space, and iOS in particular, has grown at an incredible pace. It is hard to imagine the mobile landscape without the iPhone, iPad, and iPod Touch. As a result of the remarkable growth and popularity of the iOS platform, there's no shortage of books, videos, courses, and blogs to guide you on your quest to become a skilled iOS developer.
Practice, Practice, Practice
The material we covered in this series should have given you a good understanding of the iOS platform from a developer's perspective. The first piece of advice I'd like to give you is to continue building iOS applications. Don't wait until you think you know enough to start creating that first iOS application. You'll learn the most by creating small applications and by finding solutions to the problems that you encounter as you go. In the end, programming is all about solving problems.
I find myself creating several applications each and every week. This doesn't mean that each application is worthy of publication in the App Store, quite the opposite. I start by isolating a specific, well defined problem that is part of a larger project. I then create a new iOS project that is focused on solving that one problem. The moment I've found and implemented a solution to the problem, I refine the solution by several steps of refactoring to prepare it for integration into the larger project. At the same time, I've created a reusable component for later use. By focusing on reusability, you are less likely to write spaghetti code and more likely to save yourself time on future projects.
This approach is also great for exploring new frameworks or for trying out a new open source library you want to play with. During this series, we've created a number of iOS projects. With every new project, we learned something new and, along the way, we've become more and more familiar with Xcode. Becoming familiar with your development environment is another key element of iOS development.
Don't Copy and Paste
My second piece of advice is to avoid copying and pasting code snippets that you find on the web. Unless you understand the snippets you're copying, you won't benefit from them in the long run. Sure, it may temporarily solve a problem you're struggling with, but by using random snippets of code that you don't understand, you'll build up technical debt. This doesn't mean that you shouldn't include well maintained libraries in your projects, such as AFNetworking or Magical Record. It also doesn't mean that you should know every implementation detail of the libraries you use in your projects. If you face a problem that you can solve yourself by spending one or two hours coding up a solution, then that is time well spent.
Software development isn't about speed and delivering results. On a personal level, software development is about becoming better at what you do, programming, and you don't become a better programmer by copying and pasting pieces of code that you don't fully understand. There are no shortcuts to becoming a great programmer.
Before I dive into the list of useful resources, I want to mention that Envato Tuts+ has been around for many years and has built up an impressive collection of high quality tutorials on iOS development. Close to 400 tutorials on Envato Tuts+ are specifically targeted at iOS development, from beginner to advanced topics. We also have several courses on iOS development that you may want to take a look at.
Where to Find Help?
Apple Developer Forums
If you are a registered iOS developer, then you have access to the Apple Developer Forums. Not only are the Apple Developer Forums active and filled with developers who know their stuff, framework and DTS (Developer Technical Support) engineers maintain and monitor the forums, which can sometimes save your day—or save you a day.
Google to the Rescue ... or Is It Stack Overflow?
Whenever you find yourself using Google to find an answer to a programming question or a solution to a problem you're having, chances are that Google will point you to Stack Overflow.
It's fair to say that Stack Overflow has revolutionized software development and the developer community. Stack Overflow is a great place to ask questions, but also to give back to he community by helping others. No matter what language you work with or what platform you develop software for, chances are that Stack Overflow has a vibrant community centered around your interests.
Over the past few years, social coding has become very popular and GitHub is certainly one of the driving forces of this trend. Since you're new to iOS development, you probably won't be able to contribute to (iOS) open source projects just yet.
However, that shouldn't stop you from exploring some open source projects. Browsing open source libraries to see how certain things could be done can be eye-opening. If you want to speed up your learning by exploring code written by other developers, then it is key to choose a project that is well maintained and under active development.
Books and Videos
Apple recently open sourced the Swift programming language. At the same time, the company made The Swift Programming Language available under a Creative Commons Attribution 4.0 International License. The Swift team has done a fantastic job with this reference for Swift and I encourage you to read the book from cover to cover if you're serious about Swift and iOS development.
Another great book about Swift development is Functional Programming in Swift by Chris Eidhof, Florian Kugler, and Wouter Swierstra. Even though it's a bit more advanced, functional programming is an important aspect of Swift development. Functional Programming in Swift is a great starting point.
Apress and O'Reilly Media are two publishers that are known for publishing high quality books on iOS development and development in general. One of the first books ever written about Cocoa development is Cocoa Programming for Mac OS X. This book is written—and updated—by Aaron Hillegass, the founder of Big Nerd Ranch. Aaron is very well known in the Cocoa community and many developers have learned Cocoa development through his books, myself included.
Apple's World Wide Developer's Conference (WWDC) is the highlight of the year for many Cocoa developers. Every presentation given at WWDC is recorded and can be streamed or downloaded. The collection of videos goes back to WWDC 2010 so you have plenty of material to go through.
It shouldn't surprise you when I tell you that there are hundreds, if not thousands, of blogs dedicated to iOS development. I have listed a few of my favorite blogs below, but there are plenty more for you to discover.
- A few weeks ago, the official blog of the Swift programming language got a new home. If you want to stay up to date about what's happening with Swift, then make sure to bookmark this blog.
Cocoa Is My Girlfriend publishes more advanced, in-depth articles. The writers of Cocoa Is My Girlfriend are Marcus Zarra, Matt Long, Fraser Hess, and Saul Mora (creator of Magical Record).
- Even though Mike Ash's blog isn't the prettiest on the web, it is packed with great content. His Friday Q&A articles in particular are a joy to read.
- The blog of Ole Begemann provides fresh and well written articles about iOS development and related topics.
- NSHipster is another great blog and is maintained by Nate Cook. The tagline of NSHipster reads "... a journal of the overlooked bits in Objective-C, Swift, and Cocoa.", which summarizes the content on NSHipster pretty well.
- Anything Brent Simmons writes about development is worth reading. Brent has a lot of experience developing software and what he writes is always worth your time.
A few years ago, Dave Verwer started iOS Dev Weekly, a weekly newsletter about iOS and Swift development. If you want to receive a carefully curated list of links related to iOS and Swift development, then I can highly recommend Dave's newsletter. Did I mention it's free?
Who to Follow?
Twitter is an excellent medium to stay up to date about iOS and OS X development. I have compiled a short list of people in the twittersphere that you may want to follow.
- Chris Lattner
- Aaron Hillegass
- Matt Gallagher
- Michael Jurewitz
- Marco Arment
- Wil Shipley
- Brent Simmons
- Daniel Jalkut
- Manton Reece
- Mattt Thompson
- Mike Lee
- Ole Begemann
- Eloy Durán
- Peter Steinberger
- Craig Hockenberry
Finally, you can follow me on Twitter as well. Don't hesitate to ping me if you have a question or if you just want to say hi.
I hope you've enjoyed this series on iOS development as much as I have enjoyed putting it together. If you have any questions, don't hesitate to leave a comment or ping me on Twitter. Suggestions for future topics can also be left in the comments.