It’s 2020 and many prevailing practices for how to build business software solutions are still hugely disappointing, especially considering how processes interact.
I get it, we are all human and we long for instant rewards. You ask a question and you want an instant answer. You give a command, and you want things to happen. Throw the ball; the dog runs to fetch it.
Yes, waiting is a terrible experience. You sit in a waiting room at the dentist’s office with stinging pain. You’re caught in a standstill traffic jam for an hour with no information and no way out. Traumatic.
Software isn’t human. It doesn’t get bored. It is unwise to tune parts of systems that do not directly interact with people such as if they did. Instant answers and turn-by-turn actions, synchronicity of asking and answering, are awfully wasteful.
Sadly, our programming models and tools are shaped to satisfy our longing for instant rewards and for the simplicity of having one question answered and one command performed at a time. Because that is easy on the mind.
Our computer systems, however, are distributed, multi-node, multi-core, multi-everything digital behemoths that can deal with millions of concurrent threads of execution and (mostly) without dropping the ball on any of them. We use them unwisely.
Oddly, our whole world is a distributed, multi-everything behemoth that deals with billions of concurrent activities every day.
If we want something right now, like getting a haircut or the new thing that everyone else wants, and a bunch of other people have the exact same idea at the same time, we have one strategy that is compatible with civilized coexistence: We get in line.
Peoplespace gets in line. Someone’s workload handling strategy while volunteering to sell pancakes at a local weekend community gathering is likely more sophisticated and robust than that of the RPC service they’ll continue programming on Monday.
CPU cycles are short. Computers get a lot work done in little time. Compared, network transfers take forever. Having a program sit around, hogging memory, while it waits milliseconds for a computation “over there” that only takes microseconds to be performed is a huge waste.
Business processes are long. From placing a purchase order to delivery, days may pass because physical goods must be moved. Having hundreds of program instances compete to rush through processing the accompanying digital steps in microseconds is a waste.
Make cyberspace like peoplespace. Use the wisdom of thousands of years of civilization.
Get in line.