Home

Awesome

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

JuniorMiddleSenior
Abilitycan make a news app talking to a JSON APIcan timely design and deliver fast and reliable chat modulecan establish team behaviour standards with non-fanatical ideas
Code Integrationuses git to move code aroundhas an opinion about GitFlowhas ideas how to build a CI process and automate chores
Paradigmsgot the idea of OOPgot hands dirty with FRPbrings value from other platforms and paradigms
Dependenciesknows how to use Cocoapodsknows why apps can't use SPM, but Carthage is an optionknows why it is essential to own/reduce dependencies
Platformuses Array, Dictionary and Setknows Value/Reference types and Equatable/Hashableknows the details of method dispatch of both Swift and Obj-C
Client-Server Protocolgetting that JSON from the Internet is a piece of cake!making a WebSocket-based real-time chat is feasiblebuilding a video chat is an achievable challenge
Referenceuses StackOverflow as a single source of truthoften uses official documentationasks platform developers and can reverse engineer
Memoryknows how to avoid and fix a memory leakknows NSPointerArray and why structs increase binary sizehas a strategy to reduce out-of-memory crashes
UIcan build basic UI in the Interface Builderhas reasons to make UI in codecan take layout and diff calculation to non-main thread
MultithreadingasyncAfter is a friend, @synchronize all the thingsasyncAfter is an enemy, and thread synchronisation is a problemunderstands multithreading problems beyond the deadlock
Attitudeexpects others to teach and guide during developmentdiscusses design with the team to share decisiontakes responsibility for design decision made by teammates
Design Patternsunderstands Delegation, Target-Action and MVC ideais proficient at Observer, Facade and Mediator patternsknows the sweet spot between dependency injection and service locator
Product Qualitythe app is tested if it works on my phonewrites unit tests and tried TDD and UI testsdefines a maintainable test pyramid with non-overlapping coverage areas