While previous articles have gone more in depth with understanding true cost and answering common questions for top-level management, this will briefly outline what we consider to be some of the most valuable benefits of Software Teaming.
Continuous Everything
Communication, learning, delivery, and the ability to adapt to change quickly.
Value consistently flows whether it is through actually writing software or more importantly, doing the upfront analysis as a group so that everyone has a shared understanding prior to implementation.
Some may be wary of analysis paralysis, but when the entire team is involved, you’re more likely to arrive at a consensus and start delivering on it.
Collective Stewardship
Everyone knows the code and the purpose of the system, there is no single “owner”. This means there are no longer single points of failure or developer heroics. People feel freer to speak up and their ideas are handled collaboratively, leading to well thought out solutions instead of one person’s interpretation of “the requirements”.
People can also take vacations without worrying about losing momentum or that one person that knows how that one part of the system works. Happier people are going to more effective, efficient, productive, and produce higher quality software.
Blame is either shared by everyone or we turn our attention to the systems at play and look for areas to improve.
(Hat tip to Matthew Skelton for “stewardship”)
Less Defects
We will never say “zero defects” with good reason. However, where we have applied Teaming, we have seen a massive reduction in defects. Paired with other practices (CI/CD, TBD, et al), Teaming allows us to quickly squelch any issues that might creep through, but we’ve found that we catch the majority of them during delivery, because we are working with multiple sets of eyes on the code and with those who will be using the software. This not only increases the sense of team by involving folks from across the organization, but it bolsters the expectations for quality as well.
Collective Learning
Everyone working together means they will learn together.
Not just about the software or the expectations of the business, but everyone will enhance their own skillset by learning from others in a Teaming approach.
This is a win-win for everyone. The business. The workers. The customers.
True Agility
If you are Teaming regularly - at least some portion of your workday - you won’t need daily standups or other famously unnecessary ceremonies.
Everyone knows where things are and has a good idea of what is left to be done.
If there needs to be a change in direction, everyone is aware of it. Everyone gets a chance to understand it, possibly even finding that the proposed change itself needs to be challenged.
Focusing on actual priorities, one at a time, enables actual agility and reduces the chaos that frequently accompanies change.
(See Joshua Kerievsky 🇺🇦’s The Joy of Agility)
Summary
There are many more benefits to list, but if the above aren’t enough reason for you to consider it, good luck with the way you’ve always done things.
It should be obvious when you take a moment to really understand the pros and cons. That’s not to say there aren’t any negatives or that this is some sort of panacea. It requires some deeper knowledge of management, systems, and maturity to practice it effectively.
It is, however, a better way of working than most organizations are currently utilizing. They are stagnating and focused on bullshit metrics and chasing revenue instead of providing real value for everyone. We can do better.
Interested?
We’d love to mentor, teach, or work directly with you and your people.
We’re here to help.