I’ve started using Angular 2.4 at The Graide Network, and one of the tools they encourage is a reactive programming library called RxJS. I have not done much functional programming or worked extensively with event-driven programming, so this has been a challenge. It’s fun, but still a challenge.
I think the biggest difference I notice is that when organizing code, I am no longer concerned with which object should contain which methods and properties, but instead which store should provide which observables. Building responses asynchronously across multiple API calls and user interactions makes reactive programming a big challenge for state debugging as well. Unlike in object oriented programming, where the state of each object is likely known by the look of the UI, reactive programming allows for states to change under the hood without changing the whole application’s state.
Another thing that I notice when switching between reactive and object oriented code often (as I’m now doing) is that it’s making me think in new ways about my old code, which I really like. Every time I pick up a new framework, language, or library it seems to stretch my thinking about other tools that I’ve been using before.