Moving forward, we added more elements to our new pattern still going further in that search of perfect code architecture: protocol oriented programming, dependency injection, test driven development, functional programming, reactive programming with RxSwift/RxCocoa and so on. Personally, I think best practice aims for core principle to follow through development, like having an app testable, maintainable with a clean separation of concern. Almost every week you see articles and talks about “fixing MVC”, proposing new architectures and flows, even though I’m sure that the majority of the apps still use (in one way or another) MVC, Core Data is still used by a lot of developers and there’s still a lot of Objective-C out there.