Fire the Firefighters
Are there fires occurring on your projects? You know the ones:
We have a major delivery coming, and the testers just found 12 new defects.
The user study uncovered a missing feature, and we were just about ready for delivery.
Management changed the direction of the project halfway through. Oh, and, by the way, project cost and timeframe remain fixed.
Anyone else feel a tightness in their chest reading through those? Anyone have Vietnam-like flashbacks to projects you’ve lived through that had that happen?
But the project usually gets done, as something has to give. Either the schedule gets extended or scope is adjusted. Or maybe people step up and get things done. We sometimes call them the firefighters.
Send in the Firefighters
Firefighters are the people that will buckle down and get things done in a crunch. The thing that has to give in that situation isn’t time or scope, it’s people’s lives. Increased stress, long work hours, and missed family time. While there is an occasional need, we have to limit those times to emergencies, just like our need for firefighters that fight physical fires.
However, not all people think like I do. I had a client once tell the project teams, “We don’t want your hair on fire all the time. It should just remain smoldering…” What I heard him say was that he wanted the teams to be constantly on the edge of starting a fire. I physically cringed and did a double-take from shock. If you are close to starting a fire, something is wrong!
Where There’s Smoke, There’s Fire
If everyone is on the cusp of a fire, stress is continuously being pressed against the developers. From a quick Google, it seems that numerous studies show that stress in the workplace is bad. Uh, DUH! Some managers may think that providing a little “tension” brings out the best in people. Maybe that’s what that client meant. However, I know that if you pressure me or I’m in a crunch to get something done fast, I miss something. Missing something causes a defect to be introduced or quality to go down. If I can work at my pace, I can ensure quality, which will usually pay out in spades in the end.
Smell for Smoke
You probably already know if your project is smoldering, or if you’re calling the firefighters too much. Here is a quick checklist of some of my favorites.
- Do you have a good continuous integration build going on every check-in to your source code repository? (you do have your code in a good SCM tool, right?)
- Does that continuous integration build include unit and integration tests to make sure new work doesn’t break old stuff? (you are writing automated tests, right?)
- Can you deploy/publish a new version of your application with full confidence in less than an hour? Or is it a hair-pulling week of following outdated procedures and crossed fingers that it worked right the first time?
- Are teams/developers in-sync and working toward a common goal? Or is every iteration a battle to win the “I checked in first, you can merge” race?
- Does the project/product manager have the big picture in mind and a course set to get the team there? Or is the team floundering without purpose sometimes?
If there is an active firefighter in your ranks at all times, you need to get to the point where you can fire them. (No, not the literal pink slip. Just move them to another project to do awesome things.) Don’t stress out your developers. Give them some love. From project management to product management, configuration management or whatever, get your people in a position to succeed. Leave the heroics to when there is an actual emergency.