Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time

iOS Developer Skills Matrix

☝️ What is it?

A compilation of indicators about knowledge in a particular area of iOS development.

✌️ How to use it?

Move from the left to right, try to give a confident, affirmative answer. Ability to hold a meaningful conversation about a particular topic is typically a good rule of thumb 👍

👌 Why these levels/skills?

This article explains a bit 😉

Google Docs Version

Google Docs Version Link

Markdown Version

Junior Middle Senior
Ability can make a news app talking to a JSON API can timely design and deliver fast and reliable chat module can establish team behaviour standards with non-fanatical ideas
Code Integration uses git to move code around has an opinion about GitFlow has ideas how to build a CI process and automate chores
Paradigms got the idea of OOP got hands dirty with FRP brings value from other platforms and paradigms
Dependencies knows how to use Cocoapods knows why apps can't use SPM, but Carthage is an option knows why it is essential to own/reduce dependencies
Platform uses Array, Dictionary and Set knows Value/Reference types and Equatable/Hashable knows the details of method dispatch of both Swift and Obj-C
Client-Server Protocol getting that JSON from the Internet is a piece of cake! making a WebSocket-based real-time chat is feasible building a video chat is an achievable challenge
Reference uses StackOverflow as a single source of truth often uses official documentation asks platform developers and can reverse engineer
Memory knows how to avoid and fix a memory leak knows NSPointerArray and why structs increase binary size has a strategy to reduce out-of-memory crashes
UI can build basic UI in the Interface Builder has reasons to make UI in code can take layout and diff calculation to non-main thread
Multithreading asyncAfter is a friend, @synchronize all the things asyncAfter is an enemy, and thread synchronisation is a problem understands multithreading problems beyond the deadlock
Attitude expects others to teach and guide during development discusses design with the team to share decision takes responsibility for design decision made by teammates
Design Patterns understands Delegation, Target-Action and MVC idea is proficient at Observer, Facade and Mediator patterns knows the sweet spot between dependency injection and service locator
Product Quality the app is tested if it works on my phone writes unit tests and tried TDD and UI tests defines a maintainable test pyramid with non-overlapping coverage areas


iOS Developer Skills Matrix






No releases published


No packages published