The Essential Junior iOS Developer Skills 2021
There are plenty of reasons to get into App development. You might start off making some Apps for yourself, or your friends. You might even make a few of these Apps for the store, and Monazite them to gain income.
But what if you want to go professional? That is, get a job.
If you ask some businesses what experience and skills they would like their junior developers to have, you might see some (perhaps all) of the following:
- Development experience on the iOS platform using Xcode, using Swift
- Creative, hardworking and an eye for detail
- Excellent communication skills
They may well ask for at least one published App on the App Store. Alternatively, you might see an intern position like the one below:
I am not sure if the request for C++ is a mistake or a typo (can you find them, including grammatical mistakes in this advert? Let me know).
You might well get a job, but in terms of a job description unfortunately this is not really helpful to candidates or even an interviewer.
What should we learn in order to become an iOS developer?
What is actually being looked for?
The required skills to grab that Junior iOS developer job:
Here are the headline technical minimum requirements, as I see them:
- Basics of the Swift programming language (https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html)
- Understanding of the IDE (Usually Xcode) (https://developer.apple.com/library/archive/referencelibrary/GettingStarted/DevelopiOSAppsSwift/BuildABasicUI.html)
- Have some understanding of GIT, in Xcode and the command line
- Understand mobile design, show some understanding of Apple’s Human Interface Guidelines
- Be able to develop, parse data and populate a
UITableViewfrom an API endpoint.
- Be able to answer questions about the general iOS SDK
Don’t read this article
Now don’t panic about the big list below. Don’t read it. Although people have asked me to produce it, I don’t think that is the way to go.
Do not even look at the list below, before going through the best guide
Use this Stanford University Course: https://cs193p.sites.stanford.edu. If you want to learn SwiftUI use the latest version, if you want to study UIKit with Swift use the slightly older versions. If you want to study iOS Apps using Objective-C use the versions that are older still. All of the information is there, for free.
If you want further information, Apple have you covered with the following guides:
What is more, the following list is entirely subjective. That is it is not complete, and is also not perfect in any particular way. It is intended to be a rule to thumb for those interested in such lists.
Still here? Let us continue
Are you ready?
Breaking the knowledge down
1. The language
- Understand the basics of the Swift Language (at this level it is not usually expected to add Objective-C to your knowledge)
2. The IDE
- Go beyond basic building an iOS application but also something about deployment
3. Source Control
- Know enough about GIT in order to work with others at the scale of company that you are targeting
4. Apple’s HIG
- Understand several UI components as defined in the HIG (Human Interface Guidelines) in iOS
- Understand and reason about basic Auto Layout in iOS
- Be able to reason about both programmatic and storyboard-driven interfaces
- Produce basic designs to a specification using a storyboard or through a programmatic interface
5. Development needs:
There can be no complete list of technical skills for a Junior developer, so consider this to be a guide, and a subjective one at that.
- Don’t force-unwrap optionals in Swift
- Use the Delegate Protocol pattern while creating iOS applications
- Understand Capture Lists in Swift
- UITableView with default and perhaps a custom cell
UICollectionViewwith default and perhaps a custom cell
UIViewfor a purpose
- Some understanding of the reusability of components
- Have some understanding of the MVC architecture, and perhaps the advantages of MVVM
- How the structure of an App might help with Unit testing
Threading and concurrency
- Understand the difference between parallel and concurrent execution
- Have some knowledge of threads and reference counting (ARC)
6. The iOS SDK
- Some knowledge of UIKit (this could be replaced with SwiftUI)
- Some understanding of OOP in software design and programming
- The Delegate protocol pattern
- Some understanding of SwiftUI (although for jobs this may still be relatively early)
- Be able to use StackView
- Protocol orientated programming
- Some knowledge of CI/CD and the implications for an iOS developer
- Some understanding of Code Principles (i.e. SOLID), as applied to iOS applications
- Storyboard constraints
- Modularisation of iOS applications
- Perhaps some knowledge of Combine
- Perhaps some understanding of offline support (possibly Core Data)
- Possibly some understanding of reactive programming, perhaps RxSwift
- Possibly Core Graphics, and animation
- Perhaps gain some understanding of the difference between developing for iPhone and iPad (you might extend this to TvOS and WatchOS, depending on the target company)
So what you can do about it?
There is much too much to learn. In order to get your career going, what are you going to do?
We are back to the course: https://cs193p.sites.stanford.edu. Study that before doing anything.
You are then best off trying to create a new project from scratch, parse and process JSON from an API endpoint. Many technical projects will ask you to do this, and getting prepared for them will be a great use of your time (rather than endlessly following tutorials.
You can of course follow tutorials, but you need to be able to think about what you are doing and reason through your project. In order to do so you would be well advised to make your own project, and then find tutorials that help you to build the feature you are looking for.
You can do this. You can study and get yourself a great job in an area where there is a skills shortage.
Creating a list of things you need to know has really brought it home to me how much we expect developers to know, even junior developers.
However, when we look at employers they actually want people who can communicate and learn fast. To get the actual required technical knowledge, take a look at https://cs193p.sites.stanford.edu, and then think about what you’re doing while you are doing it as justification is important.
But that advert at the top, asking for C++ knowledge for an intern? I’d recommend you ignore that.
If you’ve any questions, comments or suggestions please hit me up on Twitter