Team Maturity: Chaos
So how do you know if your team is in choas? Actually, most teams are in the chaos stage. Learning to identify when a team has gotten into chaos isn’t really that hard if you follow some simple guidelines, though.
Ask yourself a simple question.
Does my team have enough time to learn new things?
If the answer is no, then you’re in chaos. I’ll go one step further. If the answer was “no, why does my team need to learn anything?”, then you’re in chaos, and if you want to fix it you need to look at yourself.
All teams need time to learn. This is important so that they can become more productive, and to move towards being self-organizing. If they can’t learn then they’ll never get the self-organizing stage.
If you’re with me so far, then you’re probably asking
How do I make time for my team to learn?
It starts by identifying why you’re team doesn’t have time. Sometimes it can be as simple as giving them some extra time in the week to learn something new. Tell your team they can have 4 hours on Friday to learn whatever they want. This will let you see which people on your team are self-motivated. This is vitally important. It identifies your leaders. For those who choose not to learn anything, make it a requirement. The best way to go about doing this is to just ask people how they’re learning is going. Maybe every Monday you ask each team member individually what thing they learned on Friday. This is great because it sets up an expectation for them that they not only have the opportunity to learn, but that you’re expecting them to learn.
Not all teams will have time for this. Your release cycle swamps you with work, for various reasons, and prevents you from being able to give this critical time to your team. So what then? That’s when you’re role become a fire fighter of sorts. You have to put out the fires. The point here, though, is to extinguish the fire, permanently. If you’re putting out one fire, and two fires pop up in it’s place, then you have another issue which needs to be addressed. You’re the team leader, and it’s your job to control the fire. You have to shield your team, that’s your job during this stage. That means putting out fires, but it also means not allowing other fires to start in the first place.
This is usually a good indication that you’re lacking tools that help your team be more productive. For example, maybe your “fire” is releases. They take too long to do, because they’re manual. You release often, so it’s something you spend a lot of time on. Why isn’t your release process automated? Take a step back, is your build process automated? No? That’s the beginning of your problem. You can’t have an automated release process if you don’t have an automated build process. Another example, is it hard for your team to share projects? Do you find yourself in situations where two people are working on the same thing and stepping on each other’s toes a lot? Does this require you to put people on separate projects so you don’t get into a tangled web of conflicts? Yes?
Are you using source control?
No? Get it.
Yes? Are you using a good source control system? Your team needs to be able to work together, and if your source control doesn’t accommodate that it’s probably because it’s not so great. Try a new one. Maybe Git, or Mercurial, or if you’re not into DVCS, try SVN.
There are a lot of things that can hinder your team’s productivity. Most of them have been solved by other teams already using automation. You’re team probably isn’t special, and their problems have probably been solved by other (bigger and more productive) teams. See what they’ve done. Copy them, mimic them, learn from them.
Get your team out of chaos, so they can learn, and make your job easier.