(How to) Be an Intermediate iOS dev in 2021
How to be an Intermediate iOS dev in 2021Last updated: July 22, 2021
A beginner or associate level needs to know just to do something but to become an intermediate level you need to be able to do a certain thing in a certain way following best practices. I tried to list some of the things that an intermediate iOS dev should know about.
SwiftUI and Combine
SwiftUI and Combine is the latest and most exciting thing in Apple Development ecosystem, these are excellent frameworks. Also lots of new apps are being written with SwiftUI. It should be more available by end of 2021.
- SwiftUI Cheat sheet
- SwiftUI by Example
- SwiftUI: Getting Started
- Mastering SwiftUI
- MVVM with Combine Tutorial for iOS
- How to Implement MVVM with Combine in SwiftUI
- Welcome to the MVVM-Router With SwiftUI and Combine
- Modern MVVM iOS App Architecture with Combine and SwiftUI
- View Communication Patterns in SwiftUI
- Swiftui navigation stack
Advanced knowledge in the Swift
An intermediate iOS dev should have basic fundamental knowledge along with advanced and deep knowledge in languages, preferably in Swift.
- Protocol Oriented Programming
- Generics and Protocols
- Values and References
- Types and Operations
- Sequences, Collections and Algorithms
- Memory Management
- Error Handling
- Codable
Architecture
For architecture most common, used and abused pattern is MVC which isn’t well testable and reusable and to overcome the problem there are many popular solution like MVVM, MVP, VIPER, etc and it’s up to you which one you’ll follow and implement but I prefer to use MVVM along with Clean Architecture, as I found it to be more balanced, less complex and suitable for small to medium level project and easy to implement and follow for entire team. Refer to the following posts about MVVM and design pattern:
MVVM Tutorials
- MVVM pattern with Swift application
- Modern MVVM iOS App Architecture with Combine and SwiftUI
- How not to get desperate with MVVM implementation
- Introduction to MVVM
- Design Patterns by Tutorials: MVVM
- An Introduction to the MVVM Design Pattern
- Fantastic iOS Architecture
- Clean Architecture and MVVM on iOS
Design Pattern
An intermediate iOS dev must able to follow a good design pattern and should follow SOLID principal and shouldn’t violate any design pattern principal.
In iOS these are “must knows” :
- Singleton
- Observer
- Delegate
- Strategy
- Factory
- Iterator
- Builder
- Multicast delegate pattern
- Facade pattern
- Composite pattern
- Memento pattern
- Observer pattern
Refer to this tutorial, it talks about various design pattern.
Persistency
Data persistency is very important for an app if the internet isn’t available and the app doesn’t work that’s bad if the internet is slow and the app slow that’s bad, calling API too many costing developer and user more data cost is bad. There are many solutions, based on your need you may choose your solution, having in mind security, speed, complexity, reusability, support.
- Core Data
- SQLite
- UserDefaults
- Realm
- ObjectBox (New Favorite)
Concurrency
A senior developer must know about Grand Central Dispatch, OperationQueue
- How to do GCD, OperationQueue
- Serial or parallel queues.
- Main thread, background thread
Optimization
The Code should be Optimized, there shouldn’t be any memory leaks, retain cycles, Xcode provides Memory Graph Debugger and Instrument to investigate memory leaks and retain cycles.
Security
Security must be ensured and Secret Management must be proper.
Reactivity
Modern apps are very reactive, to handle the reactivity we will need any of the Reactive frameworks. Knowledge of RxSwfit, ReactiveCocoa is unavoidable nowadays.
CI/CD
CI (Continuous integration), CD (Continuous Delivery) is a must have knowledge for an intermediate level developer. Tools like Fastlane, service like Jenkins, Bitrise, CircleCL
TDD
Test-Driven Development (TDD) is a programming practice that instructs developers to write new code only if an automated test has failed. Writing codes that are tastable, writing Unit Testing is part of it. Writing Unit Tests with XCTest or with third party frameworks like Quick and Nimble.
Code styling and quality
An intermediate dev should follow any standard style guide like
For linting purpose tools like SwiftLint, for code formating SwiftFormat. Xiblint for linting storyboard, xib files and CodePecker to detect unused Swift code.
Not just technical skills
Having a theoretical and practical sound knowledge on these topics probably will make you an Intermediate level dev and to become a senior dev you’ll need some improvement on soft skills too.