By Weston Hanners, translator: ray16897188; Proofreading:; Final draft: small pot
I’ve been helping a few friends of mine get started on iOS development recently and was asked for a list of what they need to get started. Sounds like a good time to write a blog about it. Without further ado, HERE’s a list (in no particular order) of what you need to know to become an entry-level iOS developer.
Basic CS knowledge
I don’t think you have to have a PhD in computer science to get involved in mobile app development. I think that falls under the “plus” category, but a basic understanding of data structures and algorithms will certainly prevent new developers from writing code that leads them into a dead end. So for starters, I recommend that you check out harvard CS50 on Youtube as a way to get started. They’re easy to understand and they’re fun.
Swift or Objective – C
Again, you don’t have to be able to write technical blogs in either language, or to teach a class, but you still need to be able to program in one of them and not have to check the syntax too often. Apis are another matter, especially in iOS, where the framework is updated every year and many methods are often deprecated. It’s no accident that I open a Safari page to look at Apple documents most of the time at work. It’s so boring trying to remember everything. Get yourself to the point where you can write classes, structs, loops, functions (classes and instances), assign variables, and evaluate expressions without help.
We’re in a weird time right now where it’s still acceptable to hire objective-C people. Swift is still pretty new, so unless you’re in a company where there’s a lot of project turnover, you’re basically going to have to use Objective-C. That said, there are plenty of companies that are deciding to switch to Swift (mine is), and if you know Swift, it shouldn’t be too hard to find a job. The important thing is to be proficient in the language you choose, and then familiar enough with at least one other language to read code.
The framework and the API
Again, like I said before, I don’t think you have to know every iOS API backwards, but you do need to know exactly where to look.
- UIKit (UITableView, UIButton, UINavigationController, GestureRecognizers)
- Interface Builder (Storyboards, Segues, and the odd .xib)
- Foundation types (NSArray, NSDictionary, NSString) and their Swift counterparts (Array, Dictionary, and String)HTTP API (NSURLSession, Basic REST API concepts, JSON parsing with NSJSONSerializatio n)
- Grand Central Dispatch (GCD, NSOperationQueue)
- Data persistence (NSCoding, NSUserDefaults, CoreData)
- Memory management (what is a circular reference, and the fundamentals of ARC)
Design patterns in development
Patterns are important because they make your development easy and your code clear. Make sure you understand the basic design patterns, which are widely used in the iOS framework and you won’t be able to do much without knowing them (there are many others, but you can learn as you go).
- Proxy mode (the main mode of most iOS apis, you must understand it)
- The Model-View-Controller pattern (MVC), I don’t think Apple has done a very good job of encouraging the use of best MVC separation, but it is an important design pattern that can help you improve your code if you take the time to implement it properly. Also, you can be pretty sure that MVC questions will come up in any interview for an iOS job.)
- Inheritance (Almost all user interface code is a subclass of some class.)
- Singleton patterns (patterns that can definitely be abused… Use it conservatively.
Familiar with the development environment
This may seem obvious, but if you don’t already have a Mac, get one! If you don’t have any iOS devices, get one! Developing for a device can be difficult if you don’t use it or are unfamiliar with it. Similarly, it’s hard to write code if you don’t have a Mac. I started in 2009 with a MacBook 13 and the first iPod Touch. You can make do with low-profile equipment. It was close to $1500 at the time, but definitely worth it in the long run.
UX/UI
UX and UI are generally the responsibility of designers, but you should also be aware of Apple’s human-computer interaction guidelines. You should understand the difference between product prototypes and wireframes and how to use them during development.
tool
You should be familiar with some common development tools.
- Xcode (duh)
- Git version control (Some companies may use Subversion or Mercurial, but Git should be enough to get you in the door.)
- JIRA or Bugzilla (basically JIRA, you don’t have to be an expert to use it, but you should at least play around with it and don’t be afraid to see the interface for the first time)
- CocoaPods (this is a tool for managing dependencies and third-party code, and I haven’t heard of a company that doesn’t use it)
insights
Having your own knowledge of iOS, Swift, or even an API is especially effective in showing the interviewer how well you know something. It will also show us your enthusiasm. If you go into an interview and are asked, “What do you think of Swift? “, “I think it’s ok” is not the right answer. You can tell them what you think of Optionals and how much you like a feature. There won’t be too many wrong answers, the important thing is that you have something to say.
A collection of
Actions speak louder than words. If you want to do well in an interview, there are some simple apps you can put together (or better yet, put them on the AppStore). Demonstrate your ability to complete a project independently. I can’t recommend that enough. GitHub is also great, but if you go this route and the interviewer wants to test your code, make it as easy to compile as possible.
I wrote an article on how to make an application, which you can click here to see.
conclusion
If you need more Resources to get started, check out my iOS Developer Resources page, which includes blogs and web pages THAT I found useful when I started developing.
I think the last thing I’ll say is JUST DO IT! There’s a lot of demand for iOS developers right now, and if you want to achieve a decent level of skill, putting in the hours is essential. It’s a rewarding job that exercises your engineering skills and creativity.