Back in January, we began working in teams.
A team is made of three people: One designer and two programmers. A system administrator will also assist the team when necessary…
Each team will stay together for two months (a “term”). When two months are up, the teams split up and form again with different people. This way everyone gets to work with everyone else…
During the two month term, there will be four iterations. An iteration lasts for two weeks. An iteration can tackle one feature, a variety of smaller features, or part of a bigger feature that will require multiple iterations to complete.
It went well and we’ve stuck to this model while also evolving it along the way. This two-month recap offered up the results of the first term and some lessons learned. For example:
Lesson: Get out the scope hammer early and often
For two week iterations, true scope should be nailed down no later than half-way through. We found ourselves up against the wall a few times because we didn’t cut scope early enough. So we decided that on Monday of the second week we’ll review the work done during the previous week and the work remaining to complete the iteration. Since humans are notoriously bad estimators, we’ll be extra conservative with scope. We’ll bring out the hammer and beat down the scope. And then we’ll do it again on Wednesday, two days before the end of the iteration.
It’s now nine months later, so let’s check in again and see what else we’ve learned since then.
Lesson: Deploy is not the finish line
After an iteration is deployed, teams now go into a cooldown phase — something we didn’t have originally. This means team members go into support mode and deal with issues related to the deploy and any general concerns coming back from the Support team. That means fixing bugs, revising copy in the help section and/or email responses, and responding to queries at our Answers forum.
There’s no set length for this phase since you can’t plot exactly how it will play out. So we wait and see. We only assume the latest deploy is good to go once Support is in the clear for 6-12 hours. Then, and only then, is it time to move on to a new iteration.
Worth noting: It’s usually not a full court press on Support in this phase so this period also serves as a general cooldown and cleanup period. If one of the programmers is chasing an on-call issue, the other can refactor some code from the iteration that could be a general plugin. Meanwhile, the designer can help someone else explore an idea.
Lesson: Get away from calendar mode
We originally thought it best to have teams work strictly in two week iterations. But we’ve realized mapping iterations to calendar days causes problems. If you go from this Monday (the 1st) to that Monday (the 14th), you ignore vacations, holidays, summer schedules with 4-day workweeks, etc.
So we now measure iterations in number of working days. We’ll estimate how long it will take a team to finish a unit of work. If it’s seven working days and it’s during the summer, that means we’ll work on it Monday-Thursday (4 days) and Monday-Wednesday (3 days). We’ll then deploy on Wednesday night.
If something pops up that distracts the team for a day — say a major emergency or the need to help some other team out — everything just shifts forward a day. The deploy that was scheduled on Wednesday moves to Thursday. This means that iterations can end on any day of the week and start on any day of the week.
We noticed a similar issue with the length of team terms. It can be hard for a team to gel if it’s two-month term is during heavy vacation times (say, August or December). We’re now trying three-month terms to give teams more time to work together.
Lesson: Track your iterations
It’s important to stop and take a look back at how the time was spent. A term time card for a two-month term might look something like this:
Iteration 1: Estimated 7 days, actual days 7, quiet period 2 days
Iteration 2: Estimated 5 days, actual days 6, quiet period 1 days
Iteration 3: Estimated 10 days, actual days 9, quiet period 3 days
Iteration 4: Estimated 4 days, actual days 5, quiet period 3 days
When we look back at this time card, we see that Iteration 4 had the most problems. It was off a day and it had the longest quiet period relative to its duration. At that point, we know to dive in for closer review and see what caused issues with that iteration.
Lesson: Have a project “scribe”
At our last meetup, one of our Sys Admins expressed feeling out of the loop with the teams. Of course, we’re now at 20 people so no matter how we try, it’s going to be harder to keep the same intimate vibe we had when we were half that size. But we are taking steps to keep that tight-team feel whenever we can.
For one thing, we plan on meeting in person more often. The new office has helped spur more face-to-face meetings and trips to HQ for out-of-towners.
Also, we’ve added a role for project “scribe.” There’s one on each team and that person’s responsibility is to keep everyone else informed of what’s happening. The scribe posts a summary at the beginning and end of each iteration explaining what’s being tackled, what we got done, what issues arose, what delays occurred, etc. When everyone knows what’s going on with everyone else, the company feels more connected.
Continued…