A few things I'll add to that list:
- Releasing code at the end of each sprint. We were following the spirit of "releasable" code, but that's too easy to wiggle out of -- lots of code is releasable, but that doesn't mean it won't take two weeks to deploy it. We keep getting ourselves in a position where we're "done," and yet we still have to figure out how to get 140 files to production without affecting the customer experience. That's hard. So our new goal is to actually release code at the end of each sprint. Even if the project isn't finished, we can deploy pieces of it to production sprint by sprint. That way, we won't be overwhelmed by a massive code push once the time comes to get it live.
- Small, cross-functional teams. We're trying to re-capture the spirit of a start-up, where everyone's in it together, a small group of energized people are working towards a common goal, and communication is as simple as yelling a question out to the room. As we grow, our challenges to achieving this are figuring out how to arrange seating so that teams can sit next to each other and maintaining that feeling of a small group while the company inevitably becomes a bit more stodgy as it grows.
- Public burndown charts, updated daily. We're still trying to reach this goal, but it's becoming clear to me that the visibility these provide to both the company and the group, and the group-wide responsibility these engender on the teams, are a key part of agile.
No comments:
Post a Comment