Publish, Don’t Ping: Event‑Driven Comms for Humans
How software architecture patterns can improve human communication
“Ping—got a sec?”
I was mid-keystroke, untangling a bug, when that Slack pop-up hijacked my screen.
One innocent question.
Two “quick” calls to “align.”
A surprise calendar invite because “it’ll be faster live.”
By the time we killed Zoom, ninety minutes had vanished, the bug was still there, and five extra people had joined the discussion for reasons no one remembers.
If software behaved like this, we’d probably rewrite the app.
Yet we let human systems lock up every day, whispering the lie that real-time equals progress.
It doesn’t.
It’s just architectural debt—paid in attention instead of dollars.
Human Systems, Built Like Bad Software
Your company may brag about its microservices, but its conversations still run like a single‑threaded monolith. Everything blocks. Everyone waits. Then someone hits retry and we do it again.
We’ve ported two of the worst anti‑patterns from legacy code into our calendars.
Synchronous Blocking Calls — Every request is an interrupt. Ping, join now.
Like calling a function that halts the whole program until it returns, these pings freeze teammates mid‑flow and throttle throughput.God Object Communication — One person hoards context, approvals, and answers. All traffic routes through them. Great for ego, not so much for scalability. Single point of failure? You bet.
The damage is measurable:
Latency: tasks stall while people wait for the “god object” to wake up or jump out of another meeting.
Throughput: partial attention shreds deep‑work hours into confetti.
Fault Propagation: when the god object drops, the whole team face‑plants.
Put bluntly: our brains are CPUs, and we’re forcing them into constant context switches. That’s not collaboration, it’s cache thrashing.
The fix starts with seeing communication for what it really is—architecture, not etiquette. Once you accept that, refactoring becomes inevitable.
Go Event‑Driven — Publish, Don’t Ping
Remember when your backend swapped blocking APIs for an event bus and the latency charts flattened? You can do the same for conversations.
Right now, every status update is a blocking call: you ping someone, they pause, you clarify, they pause again.
Round‑trip time: infinite. Throughput: zero.
Flip it.
Treat information like events that anyone can subscribe to once and process whenever.
Define the event — Completed build, merged design, user‑reported bug. One coherent state change.
Broadcast the payload — Public Slack channel, project changelog, automated bot in #deploys.
Subscribe by choice — Ops follow #deploys, designers lurk in #ui‑changes, managers skim as needed.
Pull beats push.
Illustration: Add a #frontend‑deploys channel. Every merged PR posts a one‑liner event. Engineers, PMs, Support can quickly know what's up.
Nobody pings you at 10 p.m. asking, “Did the fix ship?”—the log already told them.
The result? Quiet chat windows, faster decisions, fewer “Got a sec?” drive‑bys. An event‑driven org feels calmer—because work flows instead of waits.
Publish. Let people subscribe. Watch the conversation latency drop.

Redis for Humans — Write It Once, Cache It Forever
Ever answer the same Slack DM three times in one week? That’s not collaboration, it’s a cache miss. Your knowledge exists, but no one can fetch it without hammering the origin server (a.k.a. you).
Left unchecked, cache misses snowball:
Duplicate Questions: “Where’s the latest design?” “What branch was that hotfix?”
Context Debt: New hires take ages to onboard, seniors babysit. Throughput tanks.
Hidden Latency: Each repeat answer feels quick, yet adds micro‑delays that compound into hours.
The fix is simple engineering hygiene applied to people:
Memoize Repetition — The first time a question hits twice, document the answer. Wiki page, pinned Slack thread—pick a writable addressable space.
Serve from Cache — Drop a link instead of re‑explaining. Fast, deterministic, ego‑free.
Invalidate Intentionally — When reality changes, update the source of truth before the next request.
Caching isn’t cold. It’s respectful. You’re giving future you (and everyone else) the gift of time.
Write it once. Cache it forever. Watch your brain’s CPU temperature drop a few degrees.
Respect the Queue — Not Everything Is Real‑Time
Slack’s “typing …” indicator is the digital equivalent of an ambulance siren—you see it, your pulse spikes, you start looking around how to get out of the way. Nine times out of ten, the “emergency” is everything but.
That’s the anti‑pattern: Synchronous Blocking Calls masquerading as chat. Every message implicitly screams handle me now.
Queues offer a saner contract. Tasks enter at one end, pop out the other in order, and the worker sets the pace. No flailing. No context thrash.
Here’s how to give your team a humane message queue:
Declare Response SLAs — Slack bio says “Replies within 4 hours.” Expectations set, guilt erased.
Tag Priority — 🚨 for blockers, 🐢 for “when convenient.” Emojis beat paragraphs.
Batch Consumption — Check DMs at set times—just like you process pull requests. The queue shrinks; deep work survives.
Practical idea: Create a “Focus 10‑12” window. All pings go to the queue unless they have the 🚨 emoji. It might feel weird at first, but it will help your engineers focus.
Will things wait? Yes. That’s the point.
Treat chat like a job queue. Prioritize, batch, clear. Your calendar will thank you, and so will your brain.
Can't afford to do that? Then at least dedicate one rotating engineer to answer all these "urgent" pings on a public channel- it's better to sacrifice one person's focus than the entire team's.
Load Balancing — Spread the Communication Load
One Slack DM is harmless. Ten are a DDoS attack with a friendly emoji.
That’s another facet of the God Object problem: we centralize questions, approvals, and tribal knowledge in one heroic brain. Great until the hero needs an afternoon off—and the entire sprint stalls.
Healthy systems shard traffic.
Here’s how to route people‑requests the same way you route packets:
Publish Ownership Maps — Make it obvious who owns what. If three people can answer, the load distributes itself.
Rotate Gatekeepers — Share the burden of being the "first responder". Knowledge spreads, burnout drops.
Push to Public Channels — Private DMs are single‑threaded. Public threads invite multiple answers and create searchable history.
Automate First Touch — Bots that suggest docs or owners before a human gets pinged remove a ton of trivial asks.
The math is simple: if one person handles 100 % of inbound requests, their capacity is your ceiling. Spread that across five, and the ceiling quintuples overnight. As a bonus, the knowledge of the whole team grows as well.
Stop treating your leads like infinite‑capacity APIs. Balance the requests.
Build Your Human‑Architecture Toolkit
Time to distill all of these patterns into a script you can actually run.
Copy‑paste these into your team’s runtime:
Publish Events — Ship updates to public channels. Let people pull context on demand.
Cache Answers — Write each solution once, link it forever. Stop chewing the same data twice.
Queue Messages — Batch pings, tag urgency, respect response SLAs. Deep work demands a buffer.
Balance Load — Rotate gatekeepers, expose ownership maps, let bots answer the obvious.
Ruthlessly delete these two anti‑patterns:
Synchronous Everything — If it blocks, redesign it. Async is your new default.
God Objects — Knowledge and approvals must scale horizontally, not vertically.
My bet: meetings drop 30%, deploys climb, and nobody wants the old way back.
If I’m wrong, coffee’s on me.
Run the experiment, measure the delta, then tell me what you broke.
Save the playbook below for quick reference:
This is such a brilliant piece, Kacper. It shows how the chaos we blame on "bad culture" is actually poor architecture, and then offers concrete ways to redesign it.
I also think half the Slack pings and meetings happen just to create the illusion of shared responsibility. Event-driven comms also require real trust. Trust that people will read the update. Trust that they’ll speak up if something’s off. And trust that silence doesn’t mean you’re on the hook alone.
Technical solutions only work when cultural fear doesn’t override them.