Sunday, November 22, 2015

Reactive Programming

- Why Rx:
abstracting away concerns about things like low-level threading, synchronization, thread-safety, concurrent data structures, and non-blocking I/O. Which makes your code more readable and bug-prone.


The key is stream... Everything is stream of events "Variables, User inputs, Data structures,...".
- A stream can be an input for another stream
- A stream can be filtered, combined or mapped to other values...
- A stream is immutable.
- Subscribe to a stream and get the value from onNext; finish at onCompleted; handle error at onError.
- A stream is called observable.


It is all about Feedback: Incremental Iterative Development

The following excerpt from "Growing object-oriented software guided by tests" is inspiring in how to Software Projects should work...

"The sooner we can get feedback about any aspect of the project, the better. Many teams in large organizations can release every few weeks. Some teams re- lease every few days, or even hours, which gives them an order of magnitude increase in opportunities to receive and respond to feedback from real users.
Incremental and Iterative Development
In a project organized as a set of nested feedback loops, development is incremental and iterative.
Incremental development builds a system feature by feature, instead of building all the layers and components and integrating them at the end. Each feature is implemented as an end-to-end “slice” through all the relevant parts of the system. The system is always integrated and ready for deployment.
Iterative development progressively refines the implementation of features in response to feedback until they are good enough."