Advertisement
iOS SDK

Where To Go Next

by

You have learned a lot over the past five weeks, grasshopper, and you might even feel a bit overwhelmed at this point. I would 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 is no shortage of books, videos, courses, and blogs to guide you on your quest to become a skilled iOS developer.

The material that 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 that I'd like to give you is to continue building iOS applications. Do not wait until you think you know enough to start creating that first real iOS application. You will 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's part of a larger project. I then create a new iOS project that's focused on solving that one problem. When I have found and implemented a solution to the problem, I refine the solution by several steps of refactoring to prepare it for integration in the larger project. At the same time, I have 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 that you stumbled upon. 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.

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 it in the long run. Sure, it may temporarily solve a problem that 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 such libraries. 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 is not only 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.

Tuts+

Before I dive into the list of useful resources, I want to mention that Tuts+ has been around for many years and has built up an impressive collection of high quality tutorials on iOS development. Close to 200 tutorials on Tuts+ are specifically targeted at iOS development, ranging from beginner to advanced topics.

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 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.

GitHub

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, nothing stops you from exploring some open source projects and browsing their source code to see how certain things could be done. 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

C Programming

A good understanding of the C language is important for every Cocoa developer, but you will notice that you can get a long way by only knowing the basics of the C language. As time passes, though, you will encounter pieces of code that you won't fully understand unless you dive deeper into the C language. The definitive guide to learning C is the book written by Brian Kernighan and Dennis Ritchie, The C Programming Language. As you might remember from the article on learning C, Dennis Ritchie was one of the creators of the C language. What better way to learn C from the person who helped creating the language? Another great book for learning C is Learn C on the Mac by Dave Mark.

Objective-C

Although Apple provides a comprehensive guide to the Objective-C programming language (Object-Oriented Programming with Objective-C), I find it not ideal for people who are new to Objective-C and certainly not for people new to C. One of the best books about Objective-C is the book written by Stephen Kochan, Programming in Objective-C. Make sure to pick up the most recent edition, which also discusses Objective-C 2.0.

Also of note, In 2010 Dan Walker wrote a popular series on Tuts+ about learning Objective-C. If you want to expand your knowledge of Objective-C, then I encourage you to take a look at Dan's series.

More Books

Apress and O'Reilly Media are two publishers that are known for publishing high quality books on iOS development—and development in general. Two excellent Apress publications are Beginning iOS 7 Development and More iOS 6 Development. Both publications are updated with every new release of iOS.

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—including myself.

Videos

WWDC

Apple's World Wide Developer's Conference (WWDC) is the highlight of they year for many Cocoa developers. Every presentation given at WWDC is recorded and available the next day to registered iOS and Mac developers. The collection of videos goes back to WWDC 2010 so you have plenty of material to go through.

iTunes U

The past few years, a number of colleges and universities have started teaching iOS development. Some of these courses are available through Apple's iTunes U program—free of charge. The best known and longest running course is CS193p at Standford University. At Madison Area Technical College, Brad Larson teaches Advanced iPhone Development, which also covers some more advanced topics. Another course on iPhone development is given by Jan Borchers at Aachen University.

Blogs

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.

  • Jeff LaMarche's blog is one of the longer running blogs about Cocoa development that I know of. Jeff has written several books on iOS development and really knows his stuff.
  • Over the past few years, Ray Wenderlich has created an amazing team of developers who contribute to his website. As a result, Ray puts out high quality content several times a week. Together with his team of writers, Ray has also written several books on iOS development.
  • Cocoa with Love is a blog maintained by Matt Gallagher. I wouldn't call Matt's posts light reading by any means. Most of the articles that he writes are in-depth, packed with information, and very well written.
  • Cocoa Is My Girlfriend is another source of great, 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 blog 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 a younger blog maintained by Mattt Thompson. Mattt currently works at Panic and is one of the creators of AFNetworking. The tagline of NSHipster reads "... a journal of the overlooked bits in Objective-C and Cocoa ...", which summarizes the content on NSHipster very well.

Newsletters

Not too long ago, Dave Verwer started iOS Dev Weekly, a weekly newsletter about iOS development. If you want to receive a carefully curated list of links related to iOS development, then I can highly recommend Dave's newsletter. Did I mention that 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 might want to follow.

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.

Conclusion

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.

Related Posts
  • Code
    Mobile Development
    iOS: Tools of the Trade741pm preview image@2x
    There are numerous tools and services that have become indispensable in the workflow of many Cocoa developers. In this article, I will highlight some of the tools that I use as well as some alternatives.Read More…
  • Code
    Interviews
    An Interview with Nick LockwoodNick lockwood profile@2x
    In this interview, I talk to leading iOS developer Nick Lockwood about his open source contributions, his development workflow, and the educational resources he's found useful in mastering the SDK.Read More…
  • Code
    iOS SDK
    iOS Succinctly - IntroductionIos succinctly preview1
    Cell phone applications are one of the fastest-growing segments of the technology industry, and the iPhone and iPad have been the leaders of this mobile revolution. Developing applications for these platforms opens the door to millions of mobile users. Unfortunately, the many hidden technologies can be overwhelming for newcomers to iOS, and the 1,500+ official help documents available from the iOS Developer Library don’t really provide an approachable introduction to the platform. The goal of iOS Succinctly is to provide a simple, understandable overview of the iOS landscape.Read More…
  • Code
    iOS SDK
    iOS Quick Tip: From Novice to ExpertPreview@2x
    Even though it's possible to learn the essentials of iOS Development in a weekend, it will take much longer to master the craft. The question then is how do you transition from a novice to an expert? In this quick tip, I will provide you with a breadcrumb trail that may help you on your way to becoming a great iOS developer.Read More…
  • Code
    iOS SDK
    Exploring the iOS SDKPreview image@2x
    A good understanding of the iOS SDK is key when developing native iOS applications. Not only will it help you choose the right tools to tackle a particular problem, it will also make sure that you don't get lost in the dozens of frameworks that are included in the SDK. In this article, we zoom in on the iOS architecture and find out what powers iOS applications under the hood.Read More…
  • Code
    iOS SDK
    Getting Started with Objective-CPreview image@2x
    With the basics of C still fresh in your memory, it is time to become familiar with Objective-C. The key difference with C is that Objective-C is an object oriented programming language, whereas C is a procedural programming language. This means that we first need to understand objects and how they relate to classes. Other key concepts that we will explore in this article are object messaging, encapsulation, and inheritance.Read More…