Let’s cut the corporate crap for a second. Nobody wants to say it out loud during a retro because it feels like heresy, but your team’s biggest bottleneck isn’t the creaky legacy monolith, the flaky test suite, or even that one microservice that shits the bed every Tuesday at 3 a.m. It’s the calendar. The shared, color-coded, notification-spamming, guilt-inducing calendar. We’ve built a culture where the knee-jerk reaction to any ambiguity, any need to coordinate, or any flicker of managerial anxiety is to throw a meeting on the books. We call it “collaboration.” I call it a synchronized waste of expensive brain cycles.

Engineering is a craft that demands long, unbroken stretches of focus. Instead, the modern tech workplace has turned into a gauntlet of stand-ups, sprint planning, backlog grooming, retros, one-on-ones, cross-team syncs, architecture review boards, and the dreaded “quick 15-minute check-in” that somehow eats an entire morning. We’re not building software anymore. We’re attending a perpetual conference about the possibility of building software.

A cluttered desk with multiple monitors displaying code and a calendar full of events

The Cognitive Cost of Context Switching

Developers aren’t factory workers. You can’t just hit pause on the conveyor belt, have a 45-minute chat about the conveyor belt, and then expect it to roar back to life at full speed. Loading a complex system’s mental model into a human brain takes time. Researchers at the University of California, Irvine, pinned down just how much: it takes an average of 23 minutes and 15 seconds to claw your way back to a focused state after an interruption. So, a single 30-minute meeting in the morning and another in the afternoon doesn’t cost you an hour. It vaporizes nearly two hours of deep work. You’ve taken a potential 8-hour deep-work day and hacked it into a fragmented, shallow 6-hour slog of task-switching.

And what do we get for that trade? A status update that could’ve been a three-line Slack message. A decision that could’ve been a threaded comment on a design doc. A debate about naming conventions that a linter should have settled back when we were all still arguing about tabs versus spaces. The math is ugly. Pull five engineers into a one-hour meeting, and you haven’t spent one hour. You’ve burned five hours of productive capacity. If that meeting was just to disseminate information, you’ve committed organizational malpractice.

Stand-ups: The Daily Ritual of Reciting Jira Tickets

The daily stand-up started as a quick, feet-on-the-ground sync for tightly coupled teams. It’s mutated into a theatrical performance where each person recites their Jira ticket number, mutters something about being “blocked,” and then mentally checks out for the next 14 minutes while pretending to care about the infrastructure team’s Kubernetes pod eviction saga. If your stand-up has more than five people, you’re not a team. You’re a small town hall meeting. Split it up. If your stand-up drags past 10 minutes, you’re not syncing. You’re problem-solving in a circle, which is the worst possible format for problem-solving.

The fix is so simple it stings. Write. It. Down. Post a daily async update in a dedicated Slack channel. What did I do yesterday? What am I doing today? What’s in my way? That’s it. Three bullet points. If someone is blocked, they don’t need to wait 24 hours to announce it to a captive audience. They can ping the person who can unblock them right now. The rest of the team can read the updates while grabbing a coffee, not while they’re in the middle of tracing a race condition.

A person writing on a whiteboard with sticky notes, representing planning and communication

Meetings as a Crutch for Weak Decision-Making Frameworks

A shocking number of meetings exist because the org lacks a clear decision-making protocol. When nobody knows who actually has the authority to make a call, the default move is to schedule a meeting to “align.” That’s a polite way of saying “spread the responsibility so thin that nobody feels the sting of a bad decision.” It’s organizational cowardice dressed up in a Google Calendar invite.

Strong engineering cultures lean on Request for Comments (RFCs) or design documents. You write down the problem, the proposed solution, the alternatives you considered, and the trade-offs. You post it in a shared space. You give people 24 to 48 hours to read and comment. If there’s consensus, you move. If there’s a fundamental disagreement, then you schedule a focused, time-boxed meeting with only the people who disagree. You don’t drag in eight bystanders to watch a debate about database indexing strategies. That’s not collaboration. That’s a hostage situation.

Async communication forces clarity. When you have to articulate your reasoning in writing, you can’t hide behind hand-waving and jargon. You can’t say “we’ll figure it out” and scan the room for nodding heads. You have to think. And when everyone has to think before they respond, the quality of the discourse goes up. The loudest voice in the room no longer wins. The best argument, laid out in plain text, wins.

The Managerial Panic Button

Let’s dig into the root cause. A lot of meetings get scheduled because a manager is anxious. They can’t see the code being written in real-time, so they demand a meeting to see the progress. They feel a loss of control, so they manufacture a synchronous checkpoint to reassure themselves that something is happening. This is a trust issue wearing a process mustache.

If you need a meeting to know what your team is doing, your project tracking is broken. If your Jira board, GitHub project, or Linear workspace doesn’t give you a clear picture of status at a glance, fix the tooling. Don’t break the team’s flow. A manager’s job is to absorb uncertainty and shield the team from organizational noise, not to amplify that noise by converting every external request into an internal interruption. When a VP asks a random question, the answer is not to schedule a two-hour deep-dive with the whole squad. The answer is to spend 15 minutes pulling the data yourself and sending a concise email.

Building an Async-First Culture

Shifting to async isn’t about installing a new tool. It’s about changing the default behavior. The default should be a written artifact. A pull request description that actually explains the context, not just “fixes bug.” A design doc that lives in a shared space, not a slide deck that disappears after a meeting. A recorded demo, not a live walkthrough that requires 20 people to coordinate calendars.

Here’s a practical starting point: declare a “No Meeting Wednesday” or, if you’re feeling bold, a “Maker Week” once a month where all recurring meetings are canceled. Watch what happens. The sky will not fall. In fact, you’ll probably ship more in that week than in the previous two combined. Then, take the meetings that were canceled and ask a hard question: did we miss anything? If the answer is no, kill those meetings permanently. If the answer is “we missed the social connection,” then schedule a dedicated, optional social hour. Don’t pretend that a sprint planning session is a team-bonding event. It’s not. It’s a negotiation about story points.

A developer working alone in a quiet, focused environment with headphones on

When a Meeting Actually Makes Sense

I’m not an absolutist. There are times when synchronous communication is the right tool. A complex, emotionally charged conflict between two team members should not be resolved over Slack threads. A high-stakes incident response requires a war room. A brainstorming session for a genuinely novel problem can benefit from the rapid back-and-forth of real-time conversation, provided it’s structured and has a clear output. But these are the exceptions. They should be rare, intentional, and treated as a break from the norm, not the norm itself.

The rule of thumb is this: if the meeting is primarily about information transfer, it should be an email, a document, or a recorded video. If it’s about decision-making, it should start as an RFC. Only if the RFC fails to resolve a critical disagreement do you escalate to a meeting. And that meeting must have a clear agenda, a designated decision-maker, and a hard stop. No agenda? No meeting. It’s that simple.

Frequently Asked Questions

What if my team is remote and we need meetings to feel connected?

Feeling connected is a legitimate need, but a status meeting is a terrible way to fulfill it. Separate the social from the functional. Schedule a virtual coffee chat, a gaming session, or an in-person offsite if the budget allows. Don’t try to sneak bonding into a backlog refinement. It doesn’t work, and it makes both the bonding and the refinement worse. People resent forced fun, and they resent meetings that waste their time. Give them space to actually talk to each other like humans, not like ticket-updating automatons.

How do I convince my manager to let us try async stand-ups?

Don’t ask for permission. Propose an experiment. Say, “I’d like to try async stand-ups for two weeks. We’ll post our updates in a public channel by 10 a.m. every day. If anything is blocked, we’ll escalate immediately. After two weeks, we’ll review the impact on throughput and team satisfaction.” Frame it as a data-driven trial, not a philosophical rebellion. Most reasonable managers will agree to a low-risk experiment. If your manager refuses to even try, you have a much bigger problem than meetings.

What about cross-team communication? Don’t we need meetings for that?

Cross-team communication is where async shines the brightest. Trying to find a 30-minute slot that works for six engineers across three time zones is a scheduling nightmare. Instead, create a shared channel or a discussion thread in your documentation tool. Post the context, the ask, and the deadline. Let people respond when they’re available. This respects everyone’s time and creates a written record that can be referenced later. If a real-time conversation is absolutely necessary, record it and post the recording with a summary. Never assume that everyone who needs the information can attend live.

How do we handle urgent issues without immediate meetings?

Define what “urgent” actually means. A production outage is urgent. A question from the sales team about a feature that’s not on the roadmap is not urgent, even if they put three red exclamation points in the subject line. For true emergencies, have a clear on-call rotation and an incident response protocol. That protocol should include a dedicated war room, but only for the people directly involved in resolving the incident. Everyone else gets a status page or a Slack update. Don’t pull the entire engineering org into a call because a certificate expired. That’s not a meeting. That’s a spectator sport.

The bottom line is this: your team’s time is the most valuable asset your company has. Treating it like an infinite resource you can squander on circular discussions is not just inefficient; it’s disrespectful. The best engineering cultures I’ve seen treat meetings like a necessary evil, a tool of last resort. They guard their focus time with the ferocity of a build system guarding its cache. They write things down. They trust each other to read. And they ship, relentlessly, while the meeting-heavy teams are still trying to find a time that works for everyone to discuss the agenda for the next meeting.