Hi, I’m Garric, the founder and host of Learn Swift LA. In this guide, I share my experience of transitioning from a lawyer to an iOS Developer. I hope tha it will help you along your journey. This is my perspective. Take from it whatever value you can, if at all. So far, it has worked for me.
When I first started exploring iOS Development back in January 2014, I had no prior programming experience. I started by working through Apple’s Start Developing iOS Apps Today programming guide which, back then, was in Objective-C. Long story short, I found it a bit difficult so I stopped.
Fast forward to January 2015. Swift was out for about 6 months at that point, so I decided to give myself 6 months to explore my undying interest in iOS Development. One year later, I was working full-time for a start up as an iOS Developer building a native Swift app. This is how I made it happen, and what I might have done differently.
Before you jump right in and start learning, there are a few important things to do and understand to get yourself into the right mindset and get off on the right foot.
You have to decide for yourself that you want, at the very least, to explore your possible interest in iOS Development. When I first started, I never put pressure on myself by thinking, “This is what I am going to do for the rest of my life.” I gave myself 6 months to really give it a try. I was uncomfortable at that time to say I was going to be an iOS Developer, but I allowed myself to think that it was a possibility, and I was interested in it enough to think that it could be my passion. So, you need to decide that you will allow yourself the time that you need for a fair shot at exploring your interest. You can do this, but you first need to give yourself the time and space to try.
There are 5 main things you should understand before you start:
- Being a capable iOS Developer is mostly about knowing how to use 5 tools. In a sea of information, technologies, and third party toolkits. Take comfort in the fact that all you need to focus on learning, at least for now, is the following:
- Swift – the programming language
- Xcode – the Integrated Development Environment (IDE)
- iOS Frameworks – pre-written code created by Apple that you will use to build your apps.
- iOS Developer Library – the library where you go to learn how to use the iOS Frameworks
- iOS Design Patterns – tried, true, and sometimes required patterns for building iOS Apps and using the Frameworks
- Being a capable iOS Developer is more about your ability to research, learn, and apply what you’ve learn rather than your ability to memorize. It’s more about your ability to dig into the iOS Developer Library or the Swift Language Reference and figure out how to use a particular framework or apply a specific language feature. Research skills help in this area. Over time, you will get better and faster at learning, and that will make things more fun and interesting and it will be a signal that you are progressing. Its going to take some time to get to a place where you’re comfortable researching the developer library and become quicker at finding answers or learn how to use a new API. But if you stick with it, you will get there. Trust me.
- You don’t need to learn everything all at once. You can accomplish a lot while knowing only very little. You will either be learning or applying what you learn. The learning will never stop, and thats the fun part! Even the most advanced developer is still learning. One time at a party, I was speaking to an iOS Developer that was way more advanced than me. We were talking about a specific iOS Framework and because I had more experience with it than he did, I was schooling him about it. But its no negative critique on him because his job never required him to learn that framework, whereas mine did. But one of the main things that differentiates a beginner from a more advanced programmer is their individual ability to learn a new framework.
- Understand your learning style. There are so many resources out there, so you need to understand what type of learning style you have and then find those reousrces that complement that. I’m a practical learner. I learn by doing, so I love tutorials and examples where I can see exactly how a particular app is built or framework is used. Some people like theory, or they like to reserve engineer stuff. Find your style.
- Understand your strengths, and weaknesses. I’m really good at researching so I take a lot of comfort in the fact that if the answer is out there, I can find it and use it to learn how to solve a new problem. So I get confidence from that. However, I lack patience. I want to jump right in and start building, so I have to remember to slow down and take time read and learn. Otherwise, I might get frustrated and discouraged.
- What are your goals? Your goals should dictate what you learn, how you learn, and what you produce during your first year. Think about your goals, then think about what you need to learn to achieve them. If you want to work as an iOS Developer for a company or as an indie, then you should focus on learning the five tools mentioned above aim to put an app in the app store.
II. The Tools
One of the things I struggle with at first was navigating all of the information, tools, and technologies I was being exposed to. I wasn’t sure what was immediately important, and what was secondary. I was confused as to what my focus should be, what I should learn, where I should find the information to learn it. Whenever we are starting something new or we’re in a new place, it takes a while to orient ourselves. When you first start learning iOS Development you will be exposed to lots of new things. Take comfort in the fact that all you need to really focus on are the 5 Tools, and that you can ignore the rest till you’re ready to make room for more.
I discussed the 5 Tools briefly in Part I. Mindset, but now I’d like to expand on those thoughts to further orient you to the world of iOS Development.
This is the programming language you will use to speak to the iOS device you’re programming. Technically, you will be speaking to Xcode and then Xcode, inter alia, will compile your Swift code into machine language, and that code will tell the iOS device what to do, but the cool thing is: we don’t have to worry about that! We don’t have to worry about writing low level code. We get to focus on writing beautiful high level Swift code!
There are many different programming languages out there, but you don’t need to worry about any of them. Swift was released in June of 2014 and quickly became one of the most popular languages. You can read more about the language at Swift.org, but the main tentpole features are that its modern, safe, fast, expressive, interactive, and Open Source. The fact that its Open Source is really cool because it means that we’ll be able to build software in Swift for computers besides Apple devices. There’s a whole Open Source community revolving around Swift and they’re all really nice and excited. Find out more on the Swift.org site. You can contribute too!
This is the IDE that you will type your Swift code into. Have you heard of Photoshop or Garageband? Xcode is like those programs in the sense that you use them to make cool stuff, but instead of focusing on creating graphics or music, you use Xcode to make apps!
Other – frameworks, libraries, Playgrounds
iOS Developer Library
App Architecture & Design Patterns
There are so many great resources out there for learning Swift and Xcode for iOS Development, free and paid. Don’t get overwhelmed. Find one out of the bunch that matches your learning style, try it out, and try to stick with it. Last year, when I was just starting out, I had zero computer programming experience. The following are the resources I used, in the order I went through them, and I can sincerely recommend them.
Whether or not you pick one, all, or none of these, I still encourage you to start with one resource and try to work through it before you overwhelm yourself with too many options. Once you work through enough material, one at a time, then you’ll be better prepared – mentally – to jump in and out of various resources to extract just the bits and pieces you need. Of course, if you need further explanation on a particular topic as you go through any single resource, feel free to google it.
These suggestions assume that you want to learn Swift and Xcode for the purpose of building applications for iOS and its derivative platforms (tvOS, and watchOS). If you just want to learn Swift as a general purpose programming language, I’m sure these couldn’t hurt. Without further ado, here are my recommendations:
- Apple: The Swift Programming Language (Swift 2.1) iBook – At this point you should be aware, at the very least, of this resource. This is the Swift language reference. You can download it for free as an iBook, view it on the web, and there’s even an interactive portion you can download as a .Playground file that you can open in Xcode. Use this as your reference for the language as you go along. If you have a question about the language, try to find the answer using this reference before you Google an answer on Stack Overflow. You do not need to read the whole thing from front to back. I haven’t yet. I might one day.
- Apple: Start Developing iOS Apps (Swift) – After the Lynda.com course you should have enough basic understanding of how programming works to jump straight into a tutorial like this one where you’ll build a real app. If you want to build apps for iOS and Apple’s other platforms, you’ll need a Mac and then you’ll need to download Xcode onto it. Once you have access to a Mac with Xcode, then you can start this tutorial. Don’t rush through it. Take your time and enjoy it. If you don’t understand a concept, give yourself time to go over it again. Do some research on it. Think about it. Let it digest. Or, just move right along. Either way, if you stick with it, it will eventually it will make sense; trust me.
- Apple: iOS Developer Library – At this point you should be aware, at the very least, of this resource. You may want to start familiarizing yourself with this Library. Think of it as a real brick and mortar library where you go to read and check out books. These books contain instructions on how to use all of the code that Apple has already written, and of which we get to use for free! Think of this code like the frame of a house. Apple gives us the frame for free, and we just add walls and paint and furniture. This code is aptly named “Frameworks”. Navigating the library, finding the right book, understanding how to read it, and learning how to understand what you read, this will all be a little awkward at first, if not difficult. But eventually you will get better at it, trust me; and its your job to do so. Again, don’t worry about trying read every book in this library. You will only need to go to this book-house when you need to check something specific out. Feel free to poke around though. Its organized by Resource Types, Topics, and Frameworks. Under Resource Types, notice Getting Started, Guides, and Reference. I use those the most. I use Video a good amount too (more on that later) and I sometimes use Sample Code, especially now that Sample Code is in Swift! I haven’t played around much with the other stuff, but I might someday soon 🙂
- Apple: App Programming Guide for iOS – You should also know about this programming guide, as well. You don’t have to read this guide cover to cover – although Apple recommends it, but if you are looking for a general overview of the way Apps work on iOS, then this is a great place to learn that information. I’ve never read this guide from front to back. I use it as more of a reference to understand fundamental iOS programming topics as I need to know them. However, I over the course of my first year, I probably read most of the content in this guide. Read the introduction, browse through the table of contents, make note of whats in there, and ready any topic that sounds interesting. More importantly, bookmark this guide and remember that it is an important resource.
- Apple: View Programming Guide for iOS – This is another fundamental guide that you should, at the very least, be aware of. iOS apps are all about Views, so use this guide as a reference. Again, you don’t have to read the whole thing cover to cover, but if you’re the type of person that likes to have an overview, then this is a good place for that. There are so many other Apple guides that you may have reason to read, but App Programming Guide and this View Programming Guide are essential.
- iTunes U: Developing iOS 8 Apps with Swift by Stanford – This is the gold standard in terms of courses for learning iOS Development. Best of all its free! This is the actual course that Stanford students can take at the University, but we can take it for free though iTunes U! I love you internet. You can view videos of each lecture, download the homework assignments, and follow along like you are a student in the class, or you can do it at your own pace. I don’t know for sure, but I think this course was designed in concert with Apple and the professor, Paul Hegarty actually worked for Apple before teaching at Stanford. This current version of the course is for iOS 8 and uses Swift 1.2 and Xcode 6, so if you can wait till the next class starts on 03/28/16, I’d say it would be worth it as it will likely use the latest Swift and Xcode.
- Apple: WWDC Videos – In a way, these videos are what got me into all this in the first place. If you really want to be an awesome iOS Developer, you should make it a point to watch, at the very least, the WWDC Keynote every year. It provides a great overview of the big new technologies and advancements to the platforms. Its also your chance to be inspired and come up with your next big idea based on the announcements as they enable new and exciting possibilities. In addition to the Keynote, there is usually a few headlining talks that are more specific than the keynote but not as specific as most of the other talks. I’m sure there will be talks this year called: What’s New in Swift, What’s New in Cocoa Touch, and What’s New in Xcode. Watching these videos will be more important as you become more experienced, and eventually you will want to watch the very specific ones when you find yourself working with a framework and needing some answers. For now, its enough to just be aware of WWDC, its importance, and the Video resource. Again, don’t worry about watching all of these videos. Most of them are for reference.
V. In the Loop