This is a summary of concepts, that every senior iOS developer should know (Not in the order of priority). Add “what to use, when” with every headers as you read.
Suggestions are welcome.
Different architecture patterns:
MVC, MVVM ,Clean Architecture ,Viper …
Different source control options:
Git, Subversion etc. Services like Github, GitLab ….
Different Dependency manager options:
Different Data store Options:
Coredata, realm, xml, file, SQlite, FMDB, SQLCipher …..
Different choices in programming methodology:
Functional Reactive Programming, Object Oriented Programming, Protocol Oriented Programming
Frameworks : Reactive Cococa, Reactive Swift, RxSwift, RxCocoa…
Different choices in solution implementation:
Native, Hybrid etc.
Frameworks : Angualar2, ReactNative, Xamarin, Cordova …..
Different options to assure code quality:
DI, Unit testing, Test Automation, TDD, BDD, Styleguide, clang-format (automated style guide)
Frameworks : XCTest, iOS Snapshot Test Case, KIF (iOS Integration Testing Framework)…
Different process to assure quality:
Effective Code reviews
Tools : Crucible, Atlassian Stash, Differentials
Frameworks : ObjcLinte, SwiftLint ….
Different Options to send push notifications:
APNS, Firebase, Thirdparty Options like Urban Airship…
Different Options to track user behavior + analytics:
Different Options to track report and analyze app crashes:
Crashlytics, Fabric ….
Different Options to distribute apps for prod and test:
Enterprise vs Consumer facing (Apple Appstore), Hockey …..
Different Options to deploy apps remotely:
Different Options for CICD:
Travis, Jenkins …..
Different Options to track the project:
JIRA, Phabricator …..