You ever watch The IT Crowd? There is a nice little skit in an early episode where the boss [Denholm] fires a whole floor of workers who can’t work as a team, and then he prepares to fire the security team if they can’t work as a team.
Here is a quote from Denholm just after the firings:
“Team! Team, team, team, team, team. I even love saying the word ‘team’. You probably think this is a picture of my family? No! It’s a picture of The A-Team. Bodie, Doyle, Tiger, the Jewellery Man.”
Of course, as important as “Team” is to Denholm the boss, he never actually does anything remotely team-like. Fortunately, most bosses are not like this, right? Well, that is for some other post, I suppose.
I hear a lot of people talking about team
I hear a lot of people talking about “team”, and how important it is, and how to encourage people to work as a team, and all the team stuff they do, and etc. Team, team, team. Seems pretty important. Seems like something we need to nurture and grow in our organizations. So how important is it?
How important is “Team”? Very! But not as important as…
Well, I think “Team” is very important, but even more important is communication. As soon as you have more than one person involved in making software, you have to find some way to communicate. There are many ways to communicate. I advocate communicating in whatever way works best for you and for the stuff you are trying to communicate. You have to figure that out for yourself, and for the situation you are in.
What we noticed
When creating software, writing code results in a lot of immediate need for communication. Often, regardless of how much we know “ahead of time” about the problem, the problem domain, and the technical parts of the work, doing work reveals questions we didn’t know we would have until we start doing the work. Perhaps you have seen it otherwise – and I’d like to know all about that if you get the chance. But I haven’t – so far, anyways. And it isn’t just in writing code, but just about anything that has to do with creating software.
I have a saying about this: It is in the doing of the work that we discover the work that we must do. Doing exposes reality.
If this is true, we can’t answer questions “up-front” because we don’t know what those questions are “up-front”. The questions are discovered as we do the work.
So, if we are coming up with questions during development we’ll need a way to communicate quickly so we can work at a reasonable pace. When an unanswered question is slowing us down we want to get the answer as soon as we can.
The need to quickly answer questions
Why do we need such quick answers? Maybe you don’t, but here is what I have seen: If it takes 2 seconds to get an answer, then we can work as quickly as possible. If it takes 2 minutes, then we can work about as quickly as possible. If it takes 20 minutes, we are pretty much slowed down to a crawl. So, we want answers quickly. There is a lot more to this, obviously, but hopefully you get the idea.
Discovery is critical
Some questions cannot be answered quickly – but many can be if the right person is nearby. However, for the questions that can’t be directly answered, the sooner we know this the better – we might learn that we need a process of discovery of some kind. We might need to spend time doing work that will allow us to discover the answer, or to discover other questions that we need to answer – or things that remove the need to even get that answer (sometimes things become irrelevant once we dig into them). You see how this works, I bet.
So the question becomes – how do we become good at discovering questions and answers, and all the other discovery sort of stuff that needs to happen. Of course, I have no idea in the long run, but one thing that I think helps (and has been working well for us) is to have ALL the people involved working at the SAME TIME on the SAME STUFF in the SAME SPACE. That’s how I define a team. The interplay of all those brilliant minds and all that creative ability is powerful.
Team, team, team
So – having teams is a good thing for providing fast discovery and communication. This we need.
So, teams in and of themselves are not important. Communication is important. Team enhances communication. Let’s figure out how to have teams and see if it helps.
One last thing. In my world, a team is not some people who have meetings. A team does their work together.