☝️ 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
|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|