3 min read

These 3 Mistakes Are Stressing Out Your Software Engineers

Don't let these 3 sources of chaos infect your team.
These 3 Mistakes Are Stressing Out Your Software Engineers
Photo by Brett Jordan on Unsplash

Even the best software engineering teams will buckle when chaos is left unchecked.

Sadly, much chaos is self-inflicted and takes the form of conflicting priorities, uncontrolled team growth, and overbooked sprints. Chaos turns into irrational stress that spreads to all team members like a sickness. Reacting to the symptoms promptly will be vital to getting your team back on track.

It will require some soul-searching and a few difficult conversations, but the only way is to take the bull by the horns.

1. Not maintaining a clear priority list.

You and your stakeholders must first and foremost agree on what is truly important.

No two items should compete for the #1 spot. When everything is urgent, nothing is.

Distilling this list requires an open and frank conversation. These talks are essential and ideally take place at regular intervals. You should consider the plan that results from this collaboration as a temporary snapshot—a short-term roadmap of concrete milestones for the product you're building together. Make sure it’s aligned with your company's high-level goals. And remember, this list isn't set in stone. You rejigger it as you go.

Don’t allow ambiguity to creep into the priority list, as it will serve as an important tool for clarifying expectations between IT teams and their business stakeholders. Collaborating on this list will give your team invaluable insights into the bigger picture. Understanding the larger landscape in which your team operates enables you to organize yourself better for success.

Prioritization is not a one-shot ceremony but a continuous collaboration to give your team the focus it needs to deliver on its promises.

2. Adding more people to speed up the work.

Nine people can't make a baby in a month.

This funny quote is used in software engineering circles as a word of wisdom against what often happens when teams face impossible deadlines. They might haphazardly inflate the team’s headcount to increase velocity, a move that usually results in precisely the opposite.

You're buying into an illusion if you think you're boosting your team's productivity by “just adding more people.” Productivity gains actually fall off quickly after a certain number of team members. What this number is varies and is very specific to your situation. In the short term, rapidly increasing headcount usually increases short-term chaos because of:

  • More competing opinions and disagreements
  • More communication overhead
  • More code review
  • More management

Team expansion is a long-term investment that will ultimately give you time. Time for quality. Time for discussion. Time for ideation. Time for the right process.

Time for success.

Grow your team for the right reason. The reason can never be short-term speed. It's just not how it works. Recklessly or temporarily ballooning your team's headcount to meet a deadline usually compromises quality and team well-being.

Instead, meet your deadline by making room for your team to focus by cutting out all non-essential work, temporarily removing bloated team ceremonies, and prioritizing what really needs to be in the next release (see point 1).

3. Not leaving slack time in sprint planning.

There's more in a sprint than just features.

As your team sets out to deliver the next priority, leaving some unplanned time in the sprint is essential. 20% works well for many teams. This so-called “slack time” is important for taking on unexpected work, such as bugs, production incidents, or extended bouts of refactoring.

Software systems naturally grow increasingly more complex unless explicitly kept in check. Your team needs peace of mind to wrestle with this complexity. By constantly refocusing what a given piece of code means, fixing unexpected bugs, and reworking previous features to fit into the new mental model of your continually evolving software system.

These "unknown unknowns" are the enemy of every mature software project and can be accounted for with the magic of pretending. Pretending that the top 20% of your sprint doesn't exist. And in time, this added breathing room will give your team the comfort to dive into the next rabbit hole when it presents itself and come out on the other side.

Most high-performing teams benefit from 20% of slack time to stay on top of the "unknown unknowns" that plague every software project. It grants them the peace of mind to foster creativity, the courage to take on much-needed refactoring, and the chill to deal with production incidents. Without it, your team may feel overloaded and resort to cutting corners.

Leave some breathing room in your sprint planning: it helps you account for the unaccountable.