Monday, December 1, 2008

Where we are.

The new team is great. We've put some extreme measures in place, but we're getting some focus on getting real completion.

To deal with the huge QA backlog, we have devoted 2/3 of our programming staff to dealing with making software releases (dealing with old bugs, bringing code forward from the dark ages to current trunk, etc). We rotate the team roster randomly so nobody is stuck doing the dirty work all of the time. Nobody expects this team structure to last. It has changed how work is done, though. More people know more things about more parts of the code, and work no longer queues for individuals. We make weekly releases.

We're not fully agile, but we've been moving the right direction. There isn't full test-driven development and full pairing, so we're slower and less certain than we should be right now. In fact, we're just hitting that hurdle where there are so many non-unit tests that it takes a half-hour to run them all. Clearly we have to refactor for speed so we can do more testing, better and faster. Tests are not uniformly the first thing people read or write. This is something we have to start pushing harder.

Pairing is starting, but it's really more like parallel programming and basic collaboration. We're not seeing ping-pong or baseball programming games. A lot of people still prefer working out the code for themselves. I figure that's partly because they're still a bit nervous about how much they know versus how much they think that they should. It will change with the random rotation. I would push harder, but there is steady progress being made here now.

The hardest part is getting used to "Done Done" and the customer driving. We're making progress there also, but it's not smooth and easy.

As for me, my biggest problem is learning to keep up on the mundane tracking. My memory is too poor, and I need to keep solid records as a manager of a team, even one that rotates regularly. I'm doing a lot of the mundane work for the team (babysitting subversion branches, etc) but not a lot of "real he-man coding" here. I've forged some decent working relationships, and try to keep on top of things.

My current fun is trying to get the tests automated and reporting on them, and mining some data from svn to build some theories there. I'm starting to learn javascript because my colleagues and some friends have inspired me to do so.