While iOS’s global market share is small compared to its Android counterpart, its apps usually provide a much better Return on Investment. According to Statista, the Apple App Store revenue grew 120% in the last four years, reaching a whopping 85 billion dollars in the last year thanks to in-app purchases, subscriptions, and premium apps.
Consumers perceive iOS devices as high-end gadgets, and therefore, are more willing to pay for premium services to match. In return, they demand nothing short of perfection from their applications. Apple has strict quality control and processes to follow in order to get your app accepted into their store, which makes building a strong iOS development team critical for your success.
In this guide, we will cover what qualities to look for and the technical features an iOS developer should know in order to find the best among them.
Native vs Hybrid for iOS development
There are multiple approaches and programming languages you can use when building an application for iOS devices.
For native development, you can either use the classic Objective-C or the newer Swift.
Swift is based on Objective-C but provides a much faster, easier and safer development cycle. Therefore we would recommend any new application to use Swift, reserving Objective-C for legacy applications only.
Another approach is using hybrid frameworks such as React Native or Flutter. These allow you to develop multi-platform applications, sharing a single codebase for both your iOS and Android apps but can come at the cost of performance and feel. If you want to know more about hybrid development, check our React Native and Flutter guides.
Hiring iOS developers to build a native app can result in better performance and an app that feels better integrated with the operating system and can easily access the device capabilities (GPS, address book, camera, etc)
In this guide, we will focus on native app development using Objective-C and Swift.
Non-Technical Skills to Assess in iOS Developers
Communication and teamwork skills
Your developers don’t work in isolation, so it’s critical that they can communicate effectively with the rest of the team, other teams in your organization and stakeholders. We consider great communication skills one of the traits that separate good iOS developers from great ones, as we have seen time and time again that this can make a huge impact on their success.
Another aspect that makes for great iOS developers is their ability to step up when challenges arise. You can have some insight into their leadership abilities by checking how they grew in responsibility in their previous roles and asking them about how they fixed challenging aspects within the project.
Great leaders also love to share their acquired knowledge with the rest of the team and will always try to push everyone to their best. To get a sense of their mentoring abilities check for their contribution to communities, blogs, and open source projects.
Drive for self-improvement
With new tools and practices arriving on a daily basis, it’s critical that developers stay up-to-date with the trends and know when and how to apply them. A rusty developer can make your app age badly, as every single line they code can soon become technical debt. Someone that blindly follows trends without thinking much about it is equally dangerous, as they can get into a never-ending loop of wanting to refactor huge chunks of the codebase. Balance and insight is the key.
An Eye for Design
While most teams will have at least one designer taking care of the aesthetics, developers are the ones translating the initial sketches into an actual interface. Therefore it’s very important that you hire iOS developers with great attention to detail, to stay true to what the designer intended.
This is important for any branch of front-end software development, but particularly so for iOS development, as highly-polished UIs are one of the defining features of iOS applications.
Any iOS developer you hire must be familiar with the Apple Human Interface Guidelines, and the related user experience, architecture and visual design concepts.
Agile Methodologies, Time Management and Deadlines
Agile methodologies allow your team to be flexible and adapt to changes while providing great engagement with both the users’ and the stakeholders’ demands. There are several different approaches to Agile, each with its own sets of pros and cons, but whatever choice you make, it is critical that any hires know how to work within that methodology.
On a related note, time management skills are paramount to providing a consistent and predictable release cycle. The best code in the world is of no use if it keeps arriving late and holding the project back, so it is extremely important that any candidate knows how to manage their tasks and set realistic time estimations.
Experience Deploying to the App Store
One thing that separates Apple’s App Store from Google’s is the really high standards and strict processes you need to follow in order to get your application accepted into the service.
Having iOS developers with previous experience deploying to the store is a significant advantage that will help streamline the launch cycle and guarantee higher quality.
Technical Skills to Look For in an iOS Developer
Foundation in Objective-C
As the traditional language for native iOS development, a solid foundation in Objective-C can be critical for maintaining legacy apps, but also welcomed for some parts of a modern app, as the Swift environment allows for inter-compatibility.
When working with Objective-C, test your candidates for knowledge of the language fundamentals, such as methods, classes, categories, delegates and error handling. Furthermore, knowledge of performance optimization and memory management patterns is great, as they can be critical to providing a good user experience.
If you’re working on a new application, our recommendation would be to go with Swift instead, and therefore, Objective-C skills become more of a nice to have than a requirement.
Swift is a programming language introduced by Apple in 2014 that simplifies iOS development by allowing for more modular, performant and maintainable applications.
Unlike the Object-Oriented Programming of Objective-C, Swift goes with a newer Protocol-Oriented Programming paradigm. This means that development is based on the use of protocols (aka interfaces) instead of classes, resulting in much more elegant code that’s easier to read and far more reliable.
As the backbone of modern iOS development, any iOS developer you hire to develop a new application must be proficient with Swift, its fundamentals, and the related tools.
Swift UI is a framework for programming your app’s User Interface in a declarative manner. It provides event handlers for all the user interactions, such as taps or gestures, and manages the flow of data between the different layers of the application.
When building new applications in Swift, It’s imperative that your developers know how to use SwiftUI to build a great, accessible user experience. For legacy Objective-C apps, the older UIKit is the go-to solution
Tools and Workflow
Programming languages don’t come on their own, but with a ginormous and ever-growing list of related tools and frameworks to improve the development process. Some tools such as Git for version control or Postman to test APIs are a must-have and common to other branches of software development, but some are particular to the iOS environment and therefore it’s critical that your iOS developers are comfortable with them.
Among those we can find xCode, the IDE used to develop iOS applications and the Cocoa Framework, which is an abstraction layer to streamline the development process, including sub-systems that handle animations, sounds, networking sockets and SQLite databases
Core Data is the object graph and persistence framework used in modern iOS apps. It allows developers to manipulate data using higher-level objects while taking care of the object lifecycle and graph management (including persistence) and insulates the developer from the underlying SQL store. Any iOS developer must have a deep understanding of how Core Data works and how to get the most out of it.
It’s important to notice that not all applications need internal storage and that there are alternatives to CoreData such as Realm, which can be easier to learn and use. So while Core Data skills are definitely nice to have, it may or may not be a requirement for your application.
It is extremely important that your team is comfortable operating with RESTful APIs, using JSON to share data back and forth both between the app backend and frontend as well as to servers and cloud. Modern applications, even those that work primarily offline, must offer some kind of connectivity for interaction with other users, server/cloud storage, etc.
GraphQL is a query language that allows for richer and easier API interactions. The industry is increasingly moving from RESTful APIS into GraphQL, and mobile development is no exception to that rule. Therefore, knowledge of GraphQL can be a great plus for any iOS developer.
Developing maintainable and scalable applications is extremely important for the future, so you need to make sure your iOS developers are familiar with architecture, security, performance and testing.
Mobile App Architecture
The best architecture to develop mobile applications is an ongoing and never-ending debate, but it’s clear at this point that the most popular choice is the Model – View -ViewModel (MVVM) software architecture, or some variation on it.
Using the MVVM architecture allows for great modularity and makes testing incredibly easy when compared to older monolithic architectures such as Model – View – Controller (MVC), at the tradeoff of slightly harder maintenance.
Other alternatives are:
- Model, View, Presenter (MVP)
- View, Presenter, Router, Interactor or Entity (VIPER)
- Model – View – ViewModel – Router (MVVM-R)
- Model – View – ViewModel – Coordinator (MVVM-C).
The definition and analysis of those are beyond the scope of this guide, but the important part is that whatever architecture your developers choose should be thoughtfully justified and understood by the whole team.
As we have seen, finding the right iOS developers can be critical for your application’s success. An iOS developer must have outstanding skills in programming and software architecture, but also an eye for design to provide the polished UIs your users expect.
They should also have the right soft skills to thrive within your team and help push for constant improvement and increased productivity.
The growing popularity of mobile apps and specific skills needed for this development niche make iOS developers a scarce resource, and finding strong ones can be challenging. Scalable Path is here to help.