Combine are the beginning of something new to most iOS developers. More so than it was five years ago with the release of Swift. While it's feasible to do Swift with an Objective-C mindset, I am afraid that interacting with SwiftUI the same way you would with UIKit won't work. It's a paradigm shift, and it will force people, sooner or later, to embrace it. I have a couple of points I would like to share:
First, how I feel as a developer and as a person that has dedicated a tremendous amount of time to FRP* (both as a dev, contributor and evangelist). The release of
Combine is the realization that the investment I have been making all these years made sense and it's also the confirmation that the industry is moving on this particular direction. This gives me two advantages: either by understanding
Combine and FRP* the paradigm without too much friction, but also when employers start to require it (some do already, with RxSwift and ReactiveSwift). I do believe that both companies and people will take longer to adopt SwiftUI and/or Combine (comparatively to Swift the language) since
UIKit and the old imperative model are still a valid approach and a more comfortable entry point.
The second point is how I feel as a manager of a team of almost 30 people and how this will impact us. On this particular point, it's not black and white. On the upside, we are staffed with highly experienced developers using FRP* and our declarative framework: Bento.
Combine as a mindset, or way of working, won't cause too much friction. This is one of the bets I did almost three years ago when I asked a group of people that didn't know me to trust that something like ReactiveCocoa would be the future. We now know it is. Comparatively to other companies, we have a massive advantage, considering we have years of experience working with a declarative, unidirectional data flow architecture powered by Bento, ReactiveSwift and ReactiveFeedback. Anders puts it beautifully:
We have invested in declarative UI & FRP in the past years. Some said these were erratic. For us though, years of prod experience worths it — our sherlocked infrastructure, sharing roots with Combine/SwiftUI, would help deliver a smooth and orderly migration. pic.twitter.com/v9WDdYk1yK— Anders Ha @ San Jose (@_andersha) June 5, 2019
On the downside, besides DrawerKit, all our infrastructure is deprecated, and we will eventually stop supporting Bento and ReactiveFeedback. Most notably, because there is little financial reason to do so: we now have Apple taking the financial hit for us. I will be lying if I say that deprecating these libraries doesn't come with a bittersweet taste.
To conclude, a migration plan will be draft in the coming months, for when we are ready to embrace both
Combine thoroughly, which should happen when our deployment target is iOS 13. We couldn't be more excited about comes next to us as a team, but also as developers within the Apple ecosystem.