Getting started with iOS development

I have been asked frequently how to get started making iPhone apps. Having taught at an iOS development bootcamp for the past few years, I have seen many people approach iOS development and succeed well. Those that excel typically have the right attitude as well as the aptitude.

Part of the challenge is figuring out whether you have those two qualities, and to do so in the most cost- and time-efficient way possible. I almost always suggest the same three steps to people considering this, and thought it would be nice to write them down.

Jump to tl;dr

1. Exploring the basics

The first step depends on your familiarity with programming in general. Many people have heard of this “coding” thing, and want to get in on it, but all they know is that apps are cool. That is a great place to start, but it is very different from a developer who is looking to learn iOS development in addition to their other skills.

Learning programming concepts

For those with no programming experience, I suggest some free exercises to learn some of the fundamentals. One of the best sources for those is an iPad app created by Apple: Swift Playgrounds app. This will walk you through a number of puzzles and challenges to teach you the basics. This has the added bonus of teaching them using the Swift programming language, which is what you will be using to actually code apps.

This is a great chance to evaluate whether your attitude is the right fit. With the basic concepts, you are not going to know for a little while whether you have the best aptitude, but you can get a feel for whether you enjoy programming in general. As you learn, you will find that programming is often frustrating for long periods of time, followed by a rush as you solve the problem. You need to discover as quickly as possible whether that is a process that you enjoy.

Understanding the Swift language

For developers looking to pick up iOS development, the Swift playgrounds app could still be helpful, but may feel overly basic and simplistic. Instead, Apple has created the Swift language tour that will help bring you up to speed on how to use Swift. The tour has additional links to more details about Swift to help those who prefer to go deep in learning the language.

2. Building a sample project

Once you have a solid handle on the basics of programming and Swift, the next step is to build something. Again, Apple has created a great sample project to walk you through all of the details required. This is a great resource because you can start with the end in mind, and have help all along the way to make that vision a reality.

By the time you have actually created an app, even though it is a simple guided project, you will have a much better idea of your attitude and aptitude fit. If the experience is starting to feel addictive, and you are anxious to create something that you want to have, that is a good sign. If you have been forcing yourself to push on just to finish what you started, you need to evaluate whether you want to continue to invest hundreds of hours in learning and continuing with iOS development. If you are learning programming for the first time, it is natural to need to reference documentation and other resources as you build your first project. Just because the solution does not come immediately to you does not mean that you lack the necessary aptitude. But if you finish the project, and still struggle understanding some of the basic principles, you need to do some honest introspection and decide if this is right for you.

3. Creating your first app

The most important step is to try to create something that solves a problem that matters to you. This will stretch your ability to apply what you have learned. Up to this point, you have been focused on the “what” and “how” of iOS development. You need to advance to understanding the “when” and “why” of the different principles you have learned. When you tackle your own project, you have to determine at each step what you are trying to do, and evaluate the many options you have to solve the issue and choose the best fit and then implement it.

As you start to branch out beyond guided practice, you are going to need to rely on many resources. Obviously, searching the internet for what you are trying to do is going to be the first choice for many people. The risk in doing that is getting incomplete or incorrect information. When searching for resources, I suggest prioritizing the following resources above all others.

Apple Developer marketing-y pages

Apple has done a lot of work in creating a starting point to help developers approach different topics. Whenever possible, you want to start with a marketing-type page from the Apple developer site. A great example is the Apple iOS Developer page for getting started in general. Most of these pages are included in the Resources list of the main Develop page of the Apple Developer site. These pages are extremely helpful because they include an overview of the topic, along with curated lists of resources to dive deeper.

Programming Guides

If there is not a developer landing page, or if you are ready to go deeper on a topic, you should look for a programming guide. These include detailed explanations along with sample code to help you understand a topic thoroughly. They can range from broad topics such as App Programming Guide for iOS to more specifics such as the View Controller Programming Guide.

Source code documentation

Finally, you should look to the actual documentation Apple creates for the APIs you want to use. These can be found either online, or through Xcode. An example is the UIViewController documentation. As you become more advanced, you will find yourself referencing this kind of documentation more and more without needing the additional explanations that come in the developer pages or programming guides. The existence of these pages is one of the main reasons that I prefer iOS development to web development. If you ever have a question about how something works, or what is possible, you can go look at the source documentation. This becomes your “Bible” and is always available for reference.

Where to go from here

When you have made it this far, you have a decision to make. If you want iOS development to be a hobby or something you do on the side because it is fun, you can just keep trying to build more projects. If you become more serious about improving your skills and abilities, you will want to look for more advanced resources.

Apple has produced a series of books designed for education that can also be used for those looking to teaching themselves. Start with Intro to App Development with Swift is that is what you want.

Another resource to consider is getting further education, such as a coding bootcamp or a college degree. Obtaining a degree in higher education is a great way to master the theory behind programming and can be a great stepping stone to future opportunities. A coding bootcamp is a much faster path to determine your attitude and aptitude fit, and to be able to start shipping apps. Often, this level of education is sufficient to start contributing as a junior developer, and you will learn even more of what is needed to succeed on the job. However, many people that finish a coding bootcamp still need to continue to invest serious time in creating apps and gaining experience before they are ready to be employed.

Hopefully this has been useful if you are considering getting started with iOS development. It is a magical opportunity of pure creation. I hope you will join me on this exciting journey.

tl;dr

  1. Learn the basics
  2. Sample project
  3. Build an app

Related Posts

Updating layouts for iPhone X

An ongoing summary of lessons learned from updating designs for the iPhone X

Public drafts with a GitHub Pages blog

Improve the process of publishing from anywhere by previewing drafts on your actual site

Using Workflow to publish to GitHub Pages

Leverage the power of automation to reduce friction in publishing from anywhere

Adding automation to open-source projects

Improving projects and increasing self-guilt with Travis, Slather and Codecov

Handling live text reload elegantly

Easy steps to support concurrent editing without losing cursor position or text selection in UITextView