Program Management at Impermium: An Unexpected JourneyWritten By: Talia Fukuroe
Jan 30, 2013 • 12:47 pm 5 Comments
Last week, I talked about some of the challenges I’ve seen while trying to mold teams to fit rigid, defined processes that supposedly work for everyone. Here, I’d like to talk about how we’ve evolved our process to fit the individual team at Impermium.
Getting to this point was difficult for me. I had to let go of my beloved practices, and really pay attention to what the team members needed. That helped me discover where a little bit of process helps keep them on track, and more importantly, where they do just fine without any externally-imposed process. I also looked for places we were lying to ourselves (e.g. “We’ll do that next sprint,” and then the next sprint, and then the next) and had to figure out ways to stop.
While our process works well for us, it may or may not be right for your team. I firmly believe each team needs to find its own tweaks that make it more effective, and that the process needs to evolve over time.
So where did we end up? These are some of the key points of what we do now:
Two week iterations – I hesitate to call them “Sprints” in public because we don’t 100% commit to the tasks in the sprint, and things change in the middle. But every two weeks we have checkpoints, demo as much as we can show at that point, and discuss future work.
Daily standups – Standups help everyone know what others are working on, and what the current priorities are. They’re also good for finding out who can help with a problem. Keys to successful standups: Start on time; Take a minute before standup to prepare what you’re going to say; No debugging during the standup, save it for after. Our standups take no more than 15 minutes, and often less than 10.
Limit work-in-progress, more or less – We don’t do formal estimations on tasks, and we don’t set official limits for how many tasks can be “in progress”. Instead, we do a gut-check to make sure that people are not doing too many things at once, and that what they have on their plates seems reasonable.
Write tasks however you need to – Some engineers like to keep a detailed task list of everything they need to do. Some prefer just the high-level description. Occasionally, we even write actual User Stories, when it seems appropriate. The one thing we do try to be strict about is that all discussion gets documented in the task. (Big shout-out to the Asana team, for building a tool that is lightweight enough that the engineers don’t mind using it, and powerful and flexible enough that I can organize and re-organize projects as needed.)
Have a product backlog, but don’t worry about it – We’ve found that having a place for us to log ideas for future tasks is necessary. It’s useful to get those ideas written down and out of our heads. But once something goes into the “backlog”, we never look at it again. If a task is critical, it will come up again when it’s important, and get done then. If not, it wasn’t important enough to do in the first place.
Demo as much as possible – Nothing is more convincing than seeing working code. We have time regularly set aside for demos, and occasional impromptu demos as needed.
Review status and process improvements individually – Rather than official “retrospective” meetings, I approach everyone individually and get feedback on the process and what they’d like to see done differently. It’s one of the luxuries of being part of a small team, and I find it less disruptive and more effective than formalized meetings.
In this way, we’ve managed to strip out a lot of the overhead we previously had, and still have a team that works together and executes well. The engineers don’t feel like they’re wasting their time on “useless” process, and I end up doing fewer repetitive tasks and a lot less nagging. Things (of course) don’t always go according to plan, but we’re able to cope and adjust quickly to handle it. To me, that is true agility.
We’re always looking for new ways to make it better, so I’d love to hear what other folks are doing with their teams and what innovations have worked for you.
Talia is Impermium’s Program Manager. She is a planner by nature, and enjoys Getting Things Done. Her idol is Hannibal Smith from the A-Team. And just like Hannibal, she “loves it when a plan comes together. “