Once you start working with the team that is really great, you stop thinking about the things that make them great – their greatness just exists and you “feel” it. But “feel” doesn’t work for me – I really need to describe, classify, plan and predict. So, let’s try to describe the features of a great team, so it would help us breed more great teams. Have you ever been a part of great team? Or worked with one? Please share your experience.
What makes the difference:
Everyone cares + cross-functional team
There is no problem which is “local” – team members support each other, perform as a single powerful and skilful creature. If someone sees an issue – they don’t close their eyes to it, they escalate it, help investigate and solve this issue.
The responsibilities of a team member in a “great team” are wider. Actually, there may be no list of the responsibilities at all – people are at the place where they are needed and when they are needed. It does not mean that developers create design or testers write code, but developers are responsible for the good design the same as designers – if they don’t like design or UI – they can and, furthermore, have to discuss it with the team, and fix it.
Quality should be the focus. Business people usually sacrifice quality when they need to implement something fast and cheap. No one will tell you that directly, but they use such phrases as, “It should just work…For this version this is ok, we need to publish this application in 2 weeks!” I totally agree that time should be small for the market, although it does not mean that we should produce crap.
The second most common problem is that customer often brings his own designs and insists on implementing them. These designs are sometimes (ok, almost 100% of the time) not the best. It can happen even with designs from your own design department, especially if the designer is not the part of the team. As a result, you have “so-so” designs, “so-so” usability – all the team is just waiting till we finish the application and publish it, as we all see that it’s a crap. How can I be proud of my work if the quality is poor?
Despite all the complaints about bugs in the code, developers have surprisingly high quality standards. A great team just uses these standards – all team members care about the quality. It does not mean they infinitely polish the code – they just make it good enough to be proud of the product. Business people talk to them and explain the need of fast shipping and team does it’s best. Developers are not so stupid to not understand the needs of business. But business people usually forget to talk to developers and explain what they really want and what are the real intentions. You can hear, “Just do this, we need it to be done ASAP.”
So here we come to the next great team differentiator:
Team members know WHY they are doing their work
There is no way I will do my task thoroughly if I don’t know why I need to do this. Indeed, people are very complicated creatures, they need to see the goal. If the team has a common goal, if it is clear to everyone, all of them will check their everyday decisions with that goal – will it help to reach it or not?
Common team values
It is great if your company has a clear vision of its values and they are not just the words on the wall of your entrance hall. It is even more important for the team to share common values. The team values are a solid addition to the company values, but they can also be a great differentiators for the team.
Common jokes, new words and differentiators
This item is close to the previous one – all of us want to work with people who are like them, who understand each other.
If you worked with the Great team you definitely noticed how one person might say a single word and all others are laughing very loudly, as if it was a joke. Or how they can understand each other using some unknown for you words and terms. After working together for some time, a team coins its own “language” which helps communicate faster and also provides with the feeling of “community” – team members feel unique and different from others, they have their own group.
In the great team I used to work with, we had the special code-phrase, “But I warned you!”, which was the favourite phrase of one of our developers. When it was the right moment to say it (and we all knew that it was the right moment), everyone became silent, waiting for someone to say it… and finally that guy had to say it and everyone was laughing. It was a kind of “tradition”, it was fun only for us, because we remembered all these situations when we heard it. For us it was not only the phrase – it was the mixture of all the mistakes we made and all the fuck-ups we survived together.
Some teams even invent a special “uniform” – they wear t-shirts of certain colour or use the same stickers for their notebooks. So you can see that they are proud to be parts of this particular team.
Team has right to make decisions
Great team usually has right to make decisions. Managers always say that they respect their team. But then they go to the team’s room and say something like “Do this because I said so”. When people are able to make decisions they feel responsibility. And it can be a very pleasant thing to have. You become involved in the process and you are the part of success (or failure).
Immediate feedback – team decides what to do on the basis of the use of their work
Even if you have in your team the world’s most intelligent people, they can’t make decisions unless they have feedback about the use of the product they create. Great Teams usually have a good connection with the Product Owner and business people. They communicate often with their customer and do that not only through the manager. The whole team participates in the discussions of beta-testing results and user feedback.
Team rituals are a good sign of the Great team. Some of them can be just a part of the working process – team has to work late hours once a week because of some business process (coming early and working till 22-00). Perfect! They have their “office evenings” when the whole office belonging to them.
Or take games that team plays together. One of my teams played Counter-Strike several times a week together. They even had a couple of jokes connected with these game sessions and birthday presents were chosen taking into account the merit of this person in the game.
Reasonable staff turnover
People who start working together on the project are not the team. Yes, manager calls them “team”, but they are just a group of developers. They have to work some time together, survive in the “storming” while team forms, and become a real team.
Great teams I’ve seen didn’t have a high staff turnover. I think that people have to work no less than 3 months together to become a team (based on my experience of mobile development projects – small teams, 5-7 developers). When we introduce a new person into the team – it goes through the storming period again. It is shorter, of course, but you can definitely feel it.
Team room space
Even if it is an open space, the Great team should have it’s own “corner”, where they can express their identity and keep all the process artifacts. It is one more differentiator for the Great team.
Seems that I described the Ideal Great Team, as I never worked in the team which had all of these features. But I wish my next team would have at least 90% of that. I would be glad if you share your thoughts and attributes of your Great Teams. It is the only way to make one – to learn which way I need to guide it 🙂