With over 75% of Americans owning smartphones and over 50% owning tablets for both personal and business use, companies are busy developing mobile apps to serve their customers on all sorts of mobile devices. Apple being the giant in this space, with its popular iPhones and iPads running on their mobile operating system iOS, plays an important role.
This means many companies are hiring iOS Mobile Developers these days and recruiters are busy looking for them. When recruiting and hiring iOS developers, how should we assess these candidates? To help us get a clearer picture, our friend, Jaime Lopez Jr., a former lead iOS Engineer, gave us the following guidelines:
Junior iOS Developer
- Able to put together a simple app and release it in the App Store
- Proficient in using pre-made UI elements, such as those provided by Apple’s UIKit
- Understand and can implement basic error handling
Scope of work
- Doing straightforward bug fixes. These are usually reproducible bugs whose possible solutions are well-understood. An example would be a previously working feature that was broken due to a new software patch.
- Owning a simple product feature with a well-defined scope and technically uncomplicated. The feature that allows you to change status to “offline” in the Facebook Messenger mobile app could be an example.
- Making simple enhancements. This involves modifying currently working code to enhance the functionality of a feature. A good example could be adding the ability to show an interactive map where a static map is being used currently in an app.
Mid-level iOS Developer
- Demonstrating solid grasp of iOS app framework
- Showing mastery of basic design patterns, such as Apple’s MVC
Scope of work
- Fixing bugs that require significant research. They would need to piece a cohesive solution together after searching on different channels, such as Google, Stack Overflow, Slack interest groups, etc.
- Contributing to improving patterns used in the application’s code and architecture.
- Helping the team establish good software development practices, such as consistently writing unit tests to verify the correctness of the app as a habit
Advanced iOS Developer
- Having knowledge and mastery of more complex design patterns, such as MVW(hatever) including MVVM (Model-View-ViewModel) and MVP(Model-View-Presenter), or VIPER (View-Interactor-Presenter-Entity-Router/Wireframe)
- Able to identify new architecture and design patterns
- Making experienced judgment calls on the right patterns to use – neither over-simplifying nor over-complicating
- Proficient in complex tasks such as dealing with asynchronous programming. For example, knowing how and when to use GCD (Grand Central Dispatch) vs. NSOperations
- Having a higher level view across multiple concerns, such as usability, testability, maintainability, scalability, etc.
Scope of work
- (Re-)Architecting mobile applications. Identify and develop new architecture patterns and select the appropriate ones to use.
- Owning complicated product features or functional areas. For example, Instagram mobile app’s “Instagram Live” feature which lets users create disappearing live video and messages.
- Fixing hairy bugs that are technically challenging and/or with severe consequences. Examples include problems that come up when dealing with concurrency or a race condition. It could also be a defect within iOS or a foundational open source library.
- Deliver overall high-quality results.