Roadmap to becoming an iOS developer in 2018
This is a tree-like compilation of topics highly relevant to iOS development.
The roadmap will be helpul for:
- anyone who wants to become an iOS developer
- iOS developers who desire to become experts
- iOS developers who are preparing for interviews and need to brush up knowledge
- iOS developers who need to compile own set of interview questions
See this article explainig selection of topics.
- Find a topic you want to study.
- Go to corresponding resources section.
- Study untill you can confidently explain the topic to your cat.
- (Optional) tick the checkbox next to the topic. How to tick a checkbox.
- Go to step 1.
Essential topics are topics which significantly contribute to understanding of iOS development. Consequently, it is a good idea to study them first as they are often encountered on interviews.
Start from Getting started section if you haven't done any iOS development yet.
Use materials from Resources section to master topics from the Roadmap.
- Practical knowledge
- Getting started
- First pet project ideas
- Languages
Objective-CBlocksMemory Management
KVCKVO- Toll-free bridging
RuntimeMethod messaging- Swizling
- NSZombies and KVO implementation
SwiftClosuresInitializersGenericsProtocolsStructsEnumsRuntimeMethod dispatch
Memory managementStack and HeapValue vs Reference typeMRCARCweak references
Retain cycles- Garbage collector
Memory leaks- Shallow and deep copying
Autorelease pool
Multithreading and concurency- POSIX threads
- NSThreads
- Perform selector family
GCDNSOperation(Queue)RunloopMethods of thread synchronisation- Problems
- Race condition
- Deadlock
- Reader-writer problems
Cocoa Touch (iOSKit)UIKitUIApplicationStatesUIApplicationDelegate
UIViewsUITableViewsUICollectionViews
- Layers
LayoutFrame-based (manual)Constraint-based (autolayout)- UIStackView
AnimationsTransformScreen transitions (Navigation)ViewControllerLifecycle
- UserNotifications
FoundationNotifications, Delegation and observing- Collections
NetworkingSerialization- NSCoding
CodableJSON- XML
- Protobuf
- Core Location
Work in background mode
Software ArchitectureDesign PatternsArchitecturalMVCMVVMMVPClean architectureVIPER- RIBs
CreationalSingletonFactoryAbstract Factory
- Structural
BehaviouralObserver
- Concurrency
Design PrinciplesSOLIDInversion of ControlDependency Injection- Service Locator
- Object-Oriented Programming
Third-party dependencies managementCocoapodsCarthage- Swift Package Manager
- Functional programming
- Functional Reactive Programming Frameworks
- Project structure and File/Group organisation
Version Control SystemsGit
- Debugging
- Instruments
- Best practices
- Checklists
- UX
Caching and PersistencyCore Data- Realm
- YAPDatabase
TestingUnit Tests- Snapshot Tests
- Functional test
- TDD
- BDD
- Performance optimization
- Increase FPS
- Decrease memory footprint
- Code signing
- Tools
Swiftlint- Sourcery
- Fastlane
- Continuous Integration
- Security
- Keychain
- tvOS
- WatchKit
- Getting started
- Computer Science knowledge
AlgorithmsSortingGraph TheoryTrees
Strings- Greedy
- Dynamic Programming
- Bit Manipulation
Recursion- Game Theory
- NP Complete
Big-O notation
Abstract Data TypesStackArrayListMap- Multimap
Set- Multiset (Bag)
GraphQueue- Priority Queue
- Double-ended priority queue
- Double-ended queue
System design- Problems
Submit a pull request with additional topics and/or study matterials or throw ideas at me on Twitter
- content file with topics and materials
- ability to generate README.md from the content file
- ability to generate Roadmap tree image from the content file
