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. Advanced knowledge in the language(Swift/Obj-C) 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 , MVP, , etc and it's up to you which one you'll follow and implement but I prefer to use MVVM along with , 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 VIPER Clean Architecture MVVM Tutorials MVVM pattern with Swift application How not to get desperate with MVVM implementation Design Patterns by Tutorials: MVVM An Introduction to the MVVM Design Pattern Fantastic iOS Architecture How to use RxSwift with MVVM MVVM with RxSwift MVVM + RxSwift on iOS Clean Architecture and MVVM on iOS Example of Clean Architecture of iOS app using RxSwift Design Pattern An intermediate iOS dev must able to follow a good design pattern and should follow principal and shouldn't violate any design pattern principal.In iOS these are : SOLID “must knows” Singleton Observer Delegate Strategy Factory Iterator Builde Multicast delegate pattern Facade pattern Composite pattern Memento pattern Observer pattern Refer to , it talks about various design pattern. this tutorial 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 (New Favorite) ObjectBox Concurrency A senior developer must know about , Grand Central Dispatch OperationQueue How to do , GCD OperationQueue queues. Serial or parallel Main thread, background thread Optimization The Code should be , there shouldn't be any memory leaks, retain cycles, Xcode provides and to investigate memory leaks and retain cycles. Optimized Memory Graph Debugger Instrument Security Security must be ensured and must be proper. Secret Management Reactivity Modern apps are very reactive, to handle the reactivity we will need any of the Reactive frameworks. Knowledge of , is unavoidable nowadays. RxSwfit ReactiveCocoa CI/CD CI (Continuous integration), CD (Continuous Delivery) is a must have knowledge for an intermediate level developer. Tools like , service like , , . Fastlane 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 or with third party frameworks like . XCTest Quick and Nimble Code styling and quality An intermediate dev should follow any standard style guide like Raywinderlich style guide Linkedin style guide Google style guide For linting purpose tools like , for code formating . for linting storyboard, xib files and to detect unused Swift code. SwiftLint SwiftFormat Xiblint CodePecker SwiftUI and Combine and is the latest and most exciting thing in Apple Development ecosystem, these are excellent frameworks but not so many developers uses it in production as most of them need to support devices before iOS 13, but by the end of 2020, it should be the norm (hopefully). Follow this to know about SwiftUI quickly. SwiftUI Combine Cheat sheet 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. How To Become A Senior Developer When should you call yourself a senior-developer 6 Tips to Become a Senior Developer Let's connect on or or read or v . Twitter LinkedIn my other writings isit me