Reactive is the new hotness. It can help you scale your backend, and keep your front-end complexity sane. It makes you dinner.
I was reading the fantastic introduction by Andre Staltz on the topic and for some reason my mind combined this stream with another thinking through asynchronous communication at work.
We tend to have a blend of synchronous and asynchronous communications, and sometimes we float between the two. I remember seeing a cool demo back in my webOS days where you would float between asynchronous and synchronous talking between parties. Imagine starting a conversation and going back and forth. Then at some point you and your mate happen to be available at the same time so the communication speeds up and feels synchronous. I am actually surprised that voice communications hasn’t allowed for this, other than silos (e.g. Voxer).
The same thing happens with text; whether it be sms, email, or chat. It gets interesting when you add in the social rules of engagement. If someone sends you a “yt?” message on work slack do you feel like you have to answer within 5 mins?
Now think of yourself as an actor. You are subscribing to a slew of streams right now, and you need to manage their SLA 🙂
At the end of a productive day you feel like you managed your time well, moving grabbing tasks (events), dealing with them, and then putting them back onto another stream. On these great days I feel like I spent the minimum time possible to move the ball (but no less!). Any thread locks (aka meetings) were productive in that decisions were made and the multiple threads (people) were unblocked.
When the ball doesn’t feel like it is moving we tend to solve via meetings. “If we all just get together and hash it out we will be good to go!” This can sometime work, but much of the time it doesn’t. It tends to go best when people are equally up to date, or able to get up to speed with the latest context quickly and have thought through their side of things.
On the flip side, when you are solving by asynchronously nudging GitHub issues, where people each take time to think through their side of the communication, it can be hard to know how things are going. Grabbing one item and “finishing” it feels productive, but nudging 12 items may actually be more impactful even if it doesn’t seem to be the case.
We have all seen the worst case scenario. That bug that now has 3000 comments and hasn’t been fixed for years. It gets nudged, but not actually towards the goal.
Nudging in the right direction
Maybe that is the key. If the work is moving in somewhat the right direction, then keep pushing and playing the multiple games of chess at the same time. If you notice the work is just being shuffled back and forth like a seasoned bureaucrat? Maybe it is OK to join the threads and use that opportunity to make a large change.
Do you track the velocity of your work? The more I learn about how the conscious brain tricks you, the more I feel like I need to be wary of some gut feelings.
Hard work is Good work
For example, it turns out that science has shown us that you need work to be hard to actually learn efficiently and effectively. The problem is that this hard work may make you feel like you aren’t learning as quickly as you would like. These tricks have very bad side effects for us all.
How often have you gone through the following situation: a certification test occurs once a year, so a week before the next one you cram to be able to pass it. The problem? you have tricked the test, but also yourself and people who depend on you. You now have a false sense of confidence of the material. The cramming helped get some knowledge into memory but probably not durable memory.
What should you do instead? Be a life long learner and test yourself as frequently as possible during the year. When the certification test comes up you will be rightfully confident, because you have proved to yourself that you have a certain level of knowledge. You will also be able to use this knowledge in your job all year round. Oh, and it will take you less time this way by using spaced learning!
If you interleave your learning you will also start to make more connections between your work. Maybe this is why I connected reactive programming with reactive working? YT?