Motorcycles and Engineering Teams and Speed
Feb 24, 2020
My motorcycle goes about 140 mph, and gets there pretty quickly. I do not need to go 140. It would be wildly dangerous, it’s not great for the bike, and my ego is not so fragile that it is harmed by riding safely. However, I do need to occasionally crank the throttle to speed by a distracted commuter on a cell phone or someone weaving in a lane or a pickup truck’s blind spot. A fast bike doesn’t mean I go fast all the time. I sprint around an obstacle and drop back down to a normal speed.
Software teams shouldn’t work at top speed as their normal operating mode. Just like you wouldn’t normally ride a motorcycle with the throttle wide open, engineering teams should operate at a comfortable pace. They occasionally need to go fast, like if a real (ACTUALLY REAL, often software deadlines are timelines, not deadlines) deadline approaches or to fix a critical bug. If your over-allocate the team’s time, they can’t react well to changes, engineer autonomy is reduced, and people burn out. Just like my bike goes fast but I don’t always ride it fast, teams need to be able to go fast but should normally have some unallocated time.
If teams have a lot of defined and prioritized work, it can be hard to take on new opportunities. That would “push out” the existing work, and since it’s already assigned and prioritized and defined, it must be important, right? I’ve observed this phenomenon in myself and on teams: if the team is swamped, new ideas and opportunities look harmful because they’ll increase the workload even more. Without some slack time the team doesn’t have time to stop, breath, evaluate, and decide if this new thing should bump out the exiting work. The team transforms in to an assembly line, heads down, pulling stuff off a queue, frantic to keep up with the conveyor belt. That’s not a good feeling.
Software developers generally want to do good work and they know their own pain pretty well. If you give a motivated and talented developer slack time, the result is generally great. They’ll fix a nagging broken thing that has been causing more pain than you realized, or they’ll explore an opportunity you hadn’t thought of, or they’ll jump in to help someone who’s struggling, or they will rest and recover for when you actually need to sprint again.