I've had the good fortune to work on a lot of different software teams. Some identified as agile, some waterfall, and some followed weird made-up homebrew processes. Upon some reflection, I had an important revelation:

The successes of these teams had very little to do with how "agile" their processes were.

I have to admit I've seen a lot of traditional waterfall teams perform extraordinarily well. Similarly, I think we've all witnessed teams that follow agile processes to the letter but fail to get traction. I believe agile methodologies are the best way to adapt to the rapidly changing landscape around us, but they don't guarantee success.

This got me thinking: if it's not all about process, what actually does define an exceptional team? I scanned my memory banks for recurring themes in teams that performed exceptionally, and also teams that were constantly struggling.

Here are some observable behaviors I'd use to describe exceptional team:

When the team congregates, there is a "buzz" in the air. It's an excited, energetic, feeling.

The team is self-healing. When there is a crisis, the team finds a way to turn it into a rallying cry.

And here are some behaviors that I'd use to describe a struggling team:

When the team congregates, there's a dour cloud overhead. There are awkward silences where you can actually feel resentment and resignation. But nobody ever gives it voice.

resentment and resignation. But nobody ever gives it voice. The team is self-defeating. When there is a crisis, the team goes into a panicky reactive mode. There are lots of I-told-you-sos and blamethrowing.

I think the underlying theme here is harmony. It might be a silly choice of words, but it makes sense: is the team aligned around its own purpose and success? Or is it composed of individuals who just happen to exist in the same business unit?

This focus on collaboration and people-first is, of course, a key component of agile. Unfortunately, many companies attempt to become agile by implementing only the process part and ignoring the fundamental change in people management that leads to true harmony. I think we've all been there.

I don't claim to be an expert in this area, but here are some pointers that have helped me build harmonious teams in the past.

1: Be careful when shuffling team members.

Have you ever seen an exceptional team that just wasn't the same after a key member departed? Team dynamics are an incredibly powerful thing, so when you build a team that "clicks," don't mess with it! And if at all possible, give the team itself control over who joins and leaves.

2: Control negativity by reframing the problem.

When bad things happen (and they will happen), help the team see the positive side. Maybe that critical bug on production is just the thing to justify the big refactoring the team has been pushing for. Turn every crisis into an opportunity. But whatever you do, never attempt to shut down communication or "spin" things into what they aren't. You need to be open and genuine.

3: Praise in public, have difficult conversations in private.

When your team succeeds, make sure the entire world knows. But when an individual on the team (or the entire team itself) needs to change its behavior, respect those involved and the sensitivity of that conversation. Have that conversation in private. It's the Golden Rule, after all.

4: Rephrase criticisms into a request for help.

The need for difficult conversations is unavoidable, but you can always control how difficult they need to be. I always try to phrase these things as a request for help, or a favor. "You need to be more thorough in your code reviews" can just as easily be phrased as, "If you could help me mentor the junior developers with extra-thorough reviews, I'd really appreciate it."

5: Protect your team at all costs.

Members of a healthy team look out for each other. If you want your team to respect you, they need to know that you will defend them. If you hear a stakeholder or external party criticizing your team, address the issue immediately so it doesn't grow out of control.

6: Turn problems into action items.

Your team needs to know that when problems come up, you'll deal with them. As soon as you understand the nature of the problem, you should immediately define an action plan to create a solution. Be sure to define the entire plan, communicate the specific actions to all involved, and ensure you follow through.

7: Never punish failure.

Mistakes and failures will always happen; it's part of being human. Punishment for failures leads to a culture of fear, where the team will play it safe and avoid leaving their comfort zone. Failure is learned knowledge, and we must always frame it that way. Besides, there's a good chance that the failure was actually due to something you did, and accidentally punishing others for your mistake will destroy trust and respect for your leadership.