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