Developing apps for iOS has been a growing sector for some time. The versatility and ubiquity of the iPhone and iPad gave scores of developers a chance to bring their wild ideas to life and parade them in front of an enormous – and relatively wealthy – captive audience. In the initial gold rush and for some time after, there was real money to be made making technically simple apps which might appeal to niche audiences or just be good for a laugh. Indie developers were trying their hands at all sort of apps and entrepreneurs of all stripes needed coders to bring their next big thing to life. Ah, the salad days.
As the competition on the App Store grew fiercer and the initial infatuation with the devices began to fade, more and more of the lucrative iOS development work came from big businesses requiring a mobile presence. The upshot of this for an aspiring iOS developer is that now, your first substantial iOS job will most likely come through a more traditional channel – a recruiter, direct hire at a large firm, digital agency and the like. This no doubt comes with its benefits – a steady paycheck, for starters – though the interview and vetting process may be far more rigorous than just a few years ago.
This presents a somewhat unique problem for iOS developers as there is so much breadth to the subject. Since an iPhone can be used for so many different types of things, it’s often hard to know which skills to hone first. Should I learn Core Audio before Core Data? If I want to learn about animation, which of the many options should I choose? No mere mortal can tackle it all, so where to spend one’s limited time?
In this article, I hope to outline the menu of priorities a Jr. iOS Developer should focus on, so you can walk confidently into a junior-level job interview.
NOTE: Before anyone gets up in arms about the placement or omission of items on this list, bear in mind this is for a theoretical job, working on a theoretical project. The actual skills needed could vary wildly. We are knowingly painting with a wide brush, but hopefully will cover all the important areas, not simply the bare minimum. Also, in an effort to be even-handed, I’ve primarily provided links to Apple documentation – you may however find it much easier to learn this material with the guidance of a code school or via countless online tutorials. Treehouse of course does offer robust iOS tracks in both Objective-C and Swift.
The Must Haves
These are topics you should have hands-on experience with and be comfortable talking about and implementing. That hands-on work needn’t be paid work and you won’t be expected to recite documentation from memory, but you should have at least moderate fluency in the following topics.
- Xcode & Interface Builder
- Building to Devices
- Distributing an App (preferably for an app on the App Store)
- Fluency with Swift OR Objective-C
- Cocoa Touch
- UIKit
- Auto Layout
- Understanding of MVC
- Debugging in Xcode
- Instruments
- Xib’s, Storyboards, Segues and related presentation/transition
- Core Data
- TableViews
- CollectionViews
- Parsing JSON
- Notifications, Delegation, Key Value Observation
- REST and/or SOAP
- Git, Subversion or other version control
- Understanding of Clean Coding Principles
- Understanding of SOLID
- Threading and Concurrency
- Unit Testing, XCTest (not an expert, but some experience)
- Have built for both iPhone and iPad, ideally in a universal app
The Nice-to-Haves
All of these topics and frameworks won’t be expected for every project, but in all likelihood, a few will. Understanding what they are used for, where they live in the iOS landscape and, where possible, having hands-on experience, will show hiring managers that you have gone beyond the bare minimum.
- If Swift is your primary language, at least some knowledge of Objective-C
- If Obj-C is your primary language, at least some knowledge of Swift
- arc, Familiarity of the non-arc practices
- In-App Purchase
At Least A Few Of
- Core Motion
- Core Audio
- Core Animation
- Quartz Core
- Game Center
- CloudKit & iCloud
- StackViews
- Push Notifications
- Local Notifications
- Core Location
- MapKit
- MessageUI
Above and Beyond
These items are definitely not iOS 101, though can help separate you from other junior candidates and do come up in interviews and job postings. If they are skills you already have it’s worth mentioning them or if they are of interest to you, it might be worth taken a little time getting your hands dirty.
- Developing for MAC
- WatchKit
- SpriteKit
- GameKit
- Developing for Android
- Xamarin
- PhoneGap
- CorePlot
- HTML
- SQL
Now remember, hiring managers know that you won’t be able to solve all of their problems and fix all of their bugs on day one. No developer can; especially not a relative rookie. They care much more that you have the critical thinking skills to work through problems and are cognisant of your limits, yet eager to expand them. You will potentially be a custodian of a very expensive codebase or brand and they need to be able to trust that you will treat it with care and caution.
Lastly, I find devs by-and-large to be protective of their workspace and environment – and less in terms of territoriality than climate. Team dynamics are felt in a very real way, especially on highly collaborative teams. Your future teammates care about your skills, but they also care a great deal that you will be pleasant to work with and a good teammate. Don’t forget to showcase that side of your personality in a rush to demonstrate what you know.
Now go get em.
Very nice article!
Here are a few more things to add to your list:
1) Crashlytics and Analytics
2) Firebase
3) Third Party Library integration
4) Third Party Payment Integration
5) Storing info in the Keychain
6) Cocoa Pods
7) Social Media Library integration
Also, I think one should also have basic knowledge of Java Script while working with Cordova (formerly known as PhoneGap) or sometimes in the Native iOS web app as well.
Separate these based on the techie level like fresher, middle and lead. These are too much for a fresher or beginner.
The business I work for really wants to have a mobile app created so that our customers will be able to look at our products more easily and we’re looking for the best developers to help us. So I appreciate your tip to find a company that listens to our needs and offers professional services to us.
Great job. I had been struggling to find this info for a while. It’s a blueprint for learning iOS development. Thanks.
Hi Gabe,
It is definitely a one spot for junior developers like myself who find it really tough to manage all the resources as iOS development topics are widely spread and its almost impossible to find them in one place. Thanks for writing this blog.. I finally have a checklist that I have meaning to make for months.. 🙂
If this is a must to know list for a beginner, that how would it looks like for a iOS ninja developer?
I came to this page looking looking for info on how to land first ios project. But the article answered even a better question for me ie How to segment my IOS learning(level based). I had been struggling to find this info for a while. Thanks for sharing, much appreciated
For a beginner to iOS development in recent times what is more preferable to learn, is it Objective C or Swift ?
Our iOS teacher, Pasan, just published an article about this on the Blog. Check it out here. 🙂
Good advice. Keep in mind you’ll likely be tested on your skills and knowledge during the interview process. Or maybe even before that. Remote testing platforms such as TestDome allow companies to give you a coding test even before the interview: https://www.testdome.com/
This way it acts as a kind of filter.
Hi,
Nice article, quite helpful for getting a know how for the junior role requirements. But what I have noticed is that they mostly ask for at least 2-3 apps in the apple store and also having about 1-2 years of experience at minimum.
For a guy like me, who is now making a move into ios from a different technology, how do I actually overcome this. I don’t have that many apps in the store under my name neither do I have the experience.
What do you suggest for this.
Well, for starters, I’d say that for any job, programming included, what employers ASK for is often more extensive than they will actually consider. As in, 2-3 projects is ideal, but 1-2 is probably good enough to get you the interview.
I would pick an app you are excited to build and start building, then get it up on the app store. Don’t bite off too big a project to start with as the first one will take longer than you expect and best to have that under your belt before you tackle a more complex second app. Also, you may want to find a partner to build with, as that will help build up your portfolio faster. Lastly, don’t forget that you can base your apps on open source apps or Apple’s sample code, which can give you a real launchpad in terms of complexity and architecture.
Thanks Gabe 🙂
Haha, very funny!
Come on, just land on planet Earth, where actually such kind of requirements are usually for middle-to-senior developers.
Very nice and informative Blog!!! As a junior iOS developer I get to know lot many things from your blog
Simply amazing
for customized and affordable web development services visit
http://bespokedigitalmedia.co.uk/web-development/
UIKit link leads to WatchOS version of the framework
hi im 10 yrs old and live in san francisco ca, call me 4155555555
Hi Billy!
I love your enthusiasm, but don’t think I’ll be able to call you directly.
That said, if you have questions about iOS development, post them in the Treehouse Community and we’ll be sure to help you out!
So. Can you introduce middle/senior skills? Why I ask, because all what you write requirements is only fluency (like heard about and know where to read) for junior.
Hmmm…I think that would be an article all of its own.
It’s probably tougher to crete a list for mid/senior, since developers in iOS can branch into so many specialized frameworks and device functionalities. For starters, I’d suggest getting comfortable (not just familiar) with the items in the bottom three lists and then move onto other more specialized/advanced areas that interest you. That would be a solid foundation for mid-level proficiency.
Too much for junior… What then middle/senior/lead ios developer must to know?
Treehouse iOs track doesn’t cover all topics even for junior.
Certainly not all Junior Devs would have or need all of this and if so, in varying levels from hands-on experience to simple familiarity with what the topics are.
My aim was to have a more comprehensive list so candidates could err on the side of more topics and walk CONFIDENTLY into an interview.
Very neat article!
However, I’d suggest that you avoid linking to apple docs.
Instead, provide some less known resources, which are usually way more useful than official documentation and give a better understanding through examples.
That’s a very good point, though I wanted to go straight “to the horse’s mouth” on this one. For a couple reasons:
1) Developers should get in the habit of looking at official docs. Even though they may ultimately be as helpful and illustrative as some outside blogs/tutorials they are still a great first stop for learning. Very often tutorial show you HOW to get it done, but skip some really useful background information.
2) Finding and vetting high-quality tutorials for so many topics would have been extremely time-consuming and I didn’t want to risk sending folks to places I couldn’t vouch for.
That should have gone without saying. Very nice life changing blog post that all should thank you for and use common sense. I have been trying to learn code on line since 2000. I went to school for it for 2 years to 2 different schools but did not feel I should pay them when I got to the more serious code classes just to tell me “Google it or read the book a 3rd time.” Treehouse is the best, honest, and most detailed yet explanatory online or traditional school I have experienced. I’d rather do this than have a bachelors at my other school. This teaches more effectively and you retain more in a way that makes you more savvy than the average college grad.
Thank you for your openness and honesty.
Very timely article! I just completed a self-paced programming series through a local community college that was focused around Java and SQL. I’m currently taking the iOS + Swift track atTreehouse in hopes of parlaying my training into an iOS dev career, so the information on the article comes at a great time as it gives me some topics to consider as I continue in my pursuit.