My-iOS-Dev-Learning-Tracker
My-iOS-Dev-Learning-Tracker copied to clipboard
A log of my iOS development skills, links to useful articles, highlights and many more.
![]()
🎯 My-iOS-Dev-Learning-Tracker
Hi! This is my log of iOS development skills, resources, highlights and many more that eventially evolved into a constantly growing knowledge base
Here gethered the bare minimum you need to know to become an iOS developer. Highlighted themes are most essential topics
Feel free to contribute!
🗺 iOS Developer skills Tree navigation
❇️ General notes
✊ Practical knowledge
- Pet projects
- Practice projects
- Languages
- Memory management
- Multithreading and concurrency
- SwiftUI
- Cocoa Touch
- Software Architecture
- Dependencies management
- Project structure organisation
- Version Control Systems
- Debugging
- UX
- Caching and Persistency
- Testing
- Performance optimization
- Code signing
- Tools
- Continuous Integration
- Security
- tvOS
- WatchKit
- Core ML
🧠 Computer Science knowledge
- Algorithms
- Abstract Data Types
- System design
- Programming Paradigms
🥁 Project Management knowledge
- Project Management Metodologies
❇️ General notes
- My Skills and Experience
- References
- Useful Tools
- Useful links
- Courses and books
- Inspiration
- Job hunt
- Command Line
✊ Practical knowledge
Pet projects
Practice projects
Languages
- [ ]
Objective-C- [X] Program Structure
- [X] Basic Syntax
- [X] Data Types
- [X] Variables
- [X] Constants
- [X] Operators
- [X] Loops
- [X] Decision Making
- [X] Functions
- [X]
Blocks- [X] Memory Management
- [X] Numbers
- [X] Arrays
- [X] Pointers
- [X] Strings
- [X] Structures
- [X] Preprocessors
- [ ] Typedef
- [ ] Type Casting
- [ ] Log Handling
- [ ] Error Handling
- [ ] Line Arguments
- [X] Classes & Objects
- [X] Inheritance
- [X] Polymorphism
- [X] Data Encapsulation
- [ ] Categories
- [ ] Posing
- [X] Extensions
- [X] Protocols
- [ ] Dynamic Binding
- [ ] Composite Objects
- [ ] Foundation Framework
- [ ] Fast Enumeration
- [ ] Memory Management
- [ ] KVC
- [ ] KVO
- [ ] Toll-free bridging
- [ ]
Runtime- [ ] Method messaging
- [ ] NSZombies and KVO implementation
- [ ] Swizzling
- [x]
Swift- [X] The Basics
- [X] Basic operators
- [X] Strings and Characters
- [X] Collection Types
- [X] Control Flow
- [X] Functions
- [X] Closures
- [X]
Enums - [X]
Structures and Classes - [X] Properties
- [X] Methods
- [X] Subscript
- [X] Inheritance
- [X]
Initialization - [X] Deinitialization
- [X] Optional Chaining
- [X] Error Handling
- [ ] Concurrency
- [X] Type Casting
- [X] Nested Types
- [X] Extensions
- [X]
Protocols - [X] Generics
- [X] Opaque Types
- [X] Automatic Reference Counting
- [X] Memory Safety
- [X] Access Control
- [x] Advanced Operators
- [x] Runtime
- [x] Method dispatch
- [X] KVO
- [X] Swift & Objective-C work together
Memory management
- [X]
Stack and Heap - [X]
Value vs Reference type - [X] MRC
- [X]
ARC- [X] Weak references
- [X]
Retain cycles - [X] Garbage collection
- [X]
Memory leaks - [X] Shallow and deep copying
- [X] Autorelease pool
Multithreading and concurrency
- [ ] POSIX and NSThreads
- [ ] Perform selector family
- [ ]
GCD - [X]
NSOperation(Queue) - [X]
Runloop - [X]
Synchronization - [ ] Problems
- [ ] Race condition
- [ ] Deadlock
- [ ] Readers–writers problem
SwiftUI
Cocoa Touch
- [X]
UIKit- [X]
UIApplication- [X]
States - [X] UIApplicationDelegate
- [X]
- [X]
UIView- [X]
UITableViews - [X]
UICollectionViews
- [X]
- [ ] Layers
- [X]
Layout- [X]
Frame-based - [X]
Autolayout- [X] UIStackView
- [X]
- [ ] Animations
- [ ] Transform
- [X]
Navigation- [ ] Deep links
- [ ] FlowControllers
- [X]
UIViewController- [X]
Lifecycle
- [X]
- [X]
- [X]
Foundation - [ ] UserNotifications
- [ ] Core Location
- [ ] Core Motion
- [X]
Work in background mode
Software Architecture
- [ ]
Design Patterns- [ ]
Cocoa- [ ] Abstract Factory
- [ ] Class cluster
- [ ] Adapter
- [ ] Command Pattern
- [ ] Chain of Responsibility
- [ ] Decorator
- [ ] Delegation
- [ ] Categories
- [ ] Facade
- [ ] Memento
- [ ] Observer
- [ ] Proxy
- [ ] Receptionist
- [X] Singleton
- [ ] Template Method
- [ ] MVC
- [ ] Abstract Factory
- [ ]
Architectural- [X]
MVC - [X]
MVVM - [X]
MVP - [ ]
Clean architecture- [ ] VIPER
- [ ] RIBs
- [ ] Coordinators
- [X]
- [ ]
Creational- [ ] Factory
- [ ] Abstract Factory
- [ ] Builder
- [ ] Factory Method
- [ ] Object Pool
- [ ] Prototype
- [X] Singleton
- [ ]
Structural- [ ] Adapter
- [ ] Bridge
- [ ] Composite
- [ ] Decorator
- [ ] Facade
- [ ] Flyweight
- [ ] Proxy
- [ ]
Behavioural- [ ] Command
- [ ] Chain of responsibility
- [ ] Interpreter
- [ ] Iterator
- [ ] Mediator
- [ ] Memento
- [ ] Observer
- [ ] State
- [ ] Strategy
- [ ] Visitor
- [ ] Concurrency
- [ ] Anti-pattern
- [ ]
- [X]
Design Principles- [X]
SOLID - [X]
DRY - [X]
KISS - [X]
YAGNI - [X]
Inversion of Control- [X]
Dependency Injection - [ ] Service Locator
- [X]
- [ ] Protocol-Oriented Programming
- [X]
Dependencies management
- [X] Cocoapods
- [ ] Carthage
- [X] Swift Package Manager
Project structure organization
Version Control Systems
- [X]
Git- [X] How to config
- [X] How to clone
- [X] How to commit
- [X] How to pull
- [X] How to push
- [X] How to create/change/delete/merge branches
- [X] How to log
- [X] How to reflog
- [X] How to resolve conflicts
- [X] GitFlow
Debugging
- [ ] Instruments
- [ ] Best practices
- [ ] Checklists
UX
Caching and Persistency
- [X] UserDefaults
- [ ] Saving files to disk (Codable)
- [ ] Keychain
- [ ] SQLite
- [ ] Core Data
- [ ] Realm
- [ ] Property Lists
- [ ] YAPDatabase
Testing
- [X]
FIRST principles - [X]
Unit Tests - [X] Snapshot Tests
- [X] Functional test
- [X] UI Tests
- [X] TDD (Test Driven Development)
- [ ] BDD
Performance optimization
- [ ] Increase FPS
- [ ] Decrease memory footprint
Code signing
Tools
Continuous Integration
- [ ] Jenkins / CircleCI / Bitrise / Github Actions
- [ ] Xcode server
Security
- [ ] Keychain
- [ ] Security Transforms API
- [ ] Secure Enclave
tvOS
- [ ] Focus interactions
WatchKit
Core ML
- [X] Model conversion
- [X] Create ML
Augmented Reality
🧠 Computer Science knowledge
Algorithms
- [X]
Sorting- [X] Merge Sort
- [X] Quick Sort
- [X] Heap Sort
- [X] Counting Sort
- [ ]
Graph Theory- [ ] Depth-First Search (DFS)
- [ ] Breadth-First Search (BFS)
- [ ] Minimum Spanning Tree (MST)
- [ ] Trees
- [X]
Strings- [X] Brute-forse
- [X] Boyer-Moore
- [ ] Greedy
- [ ] Dynamic Programming
- [ ] Bit Manipulation
- [ ]
Recursion - [ ] Game Theory
- [ ] NP Complete
- [X]
Big-O notation
Abstract Data Types
- [x]
Arrays - [X]
Lists- [X]
Singly linked list - [x] Doubly linked list
- [X] Circular linked list
- [X]
- [X]
Maps - [X]
Hash tables- [X] Hash table
- [X]
Set - [X] Hash Set
- [X] Multiset (Bag)
- [X]
Graphs - [ ]
Queues - [ ] Trees
System design
- [ ] Problems
Programming Paradigms
- [X]
Object-Oriented - [ ] Functional
- [ ] Functional Reactive Programming Frameworks
- [ ] React Native
- [ ] RxSwift
- [ ] RxRealm, RxDataSources
- [ ] Combine
- [ ] Functional Reactive Programming Frameworks
🥁 Project Management knowledge
Project Management Metodologies
- [X]
Kanban - [ ] Scrum
- [ ] Agile
- [ ] Lean
- [ ] Waterfall
- [ ] Six Sigma
- [ ] PMI/PMBOK
😉 Feel free to text me
Mail: [email protected]
Instagram: @lemonbrusher
Twitter: @Lemonbrusher
🙏 Acknowledgments
I was inspired by Syknapse. He does cool things! The tree is almost complete copy of iOS-Developer-Roadmap
⬆️ Return to the Tree navigation ⬆️