What makes a group of good people a great team? I believe that shared values and experiences are fundamental. While there are many team-building activities available, such as paint ball and boule, I’d like to think that software development teams need more than that.
An agile team needs to work close together to become really productive. As team members, we need to get to know each other – yes – but also agree on how the job should be done. We are constantly affecting each other by the way we write code and the quality of the code we ask our fellow team members to test.
If we can’t agree, there will be friction between team members and productivity will go down. Eventually there will be no team but a bunch of individuals starring at each other 15 minutes every morning.
So what will you do instead? Let’s start with the values. We all have them, hopefully we change them as we learn from experiences. Naturally, if you take a group of people and try to form a team, everyone will bring their own values to the table.
To get shared values, you need to discuss them openly. You need to post them on the wall. You need to talk about them every day. You need to remove every impediment that stops you from following them.
I will give you some examples of shared values:
All code should be written test-first.
Everyone is to measure test coverage and strive for 100%.
It is not OK to check in code that has a lower coverage than when you checked out.
Comment should only express what can’t be expressed in code.
Acceptance tests should be automated to an increasing extent.
There is nothing quick about dirty.
If someone in a team with the above values decides that we need a quick fix, it may be true but the discussion must be open. What can we do about it after the fact? It is just us here and we are the professionals that must make the wise decision.
Therefore you need a statement about what to do when you break the values.
When it comes to experience, I’ve mentioned a few options already that works for a generic team. It works for an agile team as well. But at the same time, the nerd factor must be taken into account. There are so many in our profession that care so much about their job that the best experience to share can be to attend a course or a conference together. If your budget has some kind of kick-off or team-building money reserved, consider that.