I'm an EEE, and one of the strange things I've noticed is that, for whatever reason, people from a CompSci background is really, really have trouble building and understanding even simple state machines. I suspect this unintuitiveness is the main reason why we don't see more state machines, as even in the case where they're an optimal solution many SWEs will shy away from them. Locally-rendered UIs are probably one o…
Here's a real-world example from my previous job. A process makes two simultaneous requests (we're on a tight dead line here). Here is the enumerated states we have to code for: send 1,2 -> receive 1, receive 2, process send 1,2 -> receive 2, receive 1, process send 1,2 -> receive 1, timeout 2, process, receive 2 (which is ignored) send 1,2 -> receive 1, timeout 2, process (2 is lost) send 1,2 -> receive 2, timeout 1…
I do it regularly. They compose well (and you can pass them state for context).