“Managing senior programmers is like herding cats.” – Dave Platt
We’ve all heard this before. It’s a humorous analogy and makes for a good Super Bowl commercial. But, does it really apply anymore?
Not so long ago, my daughters wanted kittens. I can’t say I was eager, but, my daughters gave me one of those looks. So, of course, I said, “yes.” A few weeks later, we brought home Jasmine and Ariel. I grew up with dogs. They are friendly, loyal, and love to be with their people. Cats have more a reputation for tolerating their humans. Much to my surprise, they won me over. And, finally I started to understand the old cliché. Even more, I saw how it carried over and covered agile teams. So, I’d like to propose an update: “Leading an agile team is like owning cats.”
Before we get into it, if you haven’t read the agile manifesto (http://agilemanifesto.org) and the agile principles (http://agilemanifesto.org/principles.html), start there. Agile has become an overused buzzword – these two simple docs sum up what it’s really all about. Anything in quotes below is taken directly from the Principles behind the Agile Manifesto.
Self-organization (aka: No one owns a cat)
You don’t own a cat. At best, you live with it. At worst, you serve it. They do what they please, when they please. You can set out things for it (scratching posts, kitty condos, food), but you can’t tell it what to do and when. In the same way, you don’t manage an agile team, you lead it. Your job is to set the team up to be successful and to provide a steady stream of projects to complete. Beyond that, it’s up to the team how they handle the development. To be an effective agile leader, you must be willing to give up control and serve your team. This is perhaps the biggest challenge for many of us – it goes against our instincts, but is absolutely necessary to be successful.
Cats don’t operate on your schedule. My cats like to play hide-and-seek around 2:00 AM, every morning. We hear the tinkling of two little bells chasing each other throughout the downstairs. We’ve tried tiring them out before bed, but the results stay the same. In the same way, developers operate on their own schedule. Some do better coming in early and cranking out stories before everyone else arrives. Others are night owls, working best when the sun is down. As an agile leader, you need to be flexible. Let your team operate on a schedule that suits them (within reason). Remember, the focus is on delivering something that works.
“Satisfy the customer” (aka: If the cat’s happy, you’re happy)
If your cat is not happy, you’ll know about it. If you doubt it, go check out “My Cat From Hell” on Animal Planet. Sometimes, what you want to do works. Sometimes, you need to cater to the cat’s needs. Last week, we ordered a fancy new scratching post. This was the Cadillac of scratching posts – multiple textures, dangly toys, etc. The cats wanted nothing to do with it. So, we took the box it came in, cut out a few holes, and hid a toy mouse inside. The cats played with it for hours. It’s the same with customers. The solutions we think we should provide don’t always meet their needs. It is often necessary to put aside our personal preferences and do what it takes to satisfy the customer. Be willing to get feedback and adapt, even if it’s not the plan you wanted to follow.
Relationships are Key
Cats are complicated. It takes time to learn what makes each one tick. Put in the effort and they will be loyal and loving companions. Offend them and you get a little surprise in your shoe. Developers are complicated. Each one operates on a different wavelength and the only way to decipher them is to put in the time. Like cats, they can tell the difference between a genuine interest and someone just going through the motions. Put in the time and you will reap the rewards. Neglect your employees and you will see productivity suffer.
“Give them the environment and support they need”
Cats are optimists. They leap before they look and often end up in unusual situations. The first week we owned our cats, I had to rescue them 5 times from the top of the entertainment center. Developers operate in the same way. Of course the update won’t cause any issues! What could possibly go wrong? As an agile leader, it’s not always important to figure out why things went off the rails (that comes later). Keep the real goal in mind – delivering a working product – and don’t worry about blame. When it’s appropriate, investigate missteps and identify how to get better. This may include helping your team deal with non-work issues. Your team doesn’t turn off their lives when they come to work, so it’s important to lead the whole person, not just the developer.
Cats don’t respond well to smothering. My 3 year old daughter tried everything to get the cat to play. She put a toy in front of it – it turned around. She put it on top of the kitty condo – it just sat there. She put food in front of it – it refused to eat. Cats will not respond to commands (yes, I know they can be trained, but in general). In the same way, developers do not respond to micro-managing. Software development is a creative process. Developers need room to find their way. Give them space and they will deliver.
“Promote sustainable development” (aka: work hard, play hard)
My cats don’t do anything half speed. They go all in when playing, hunting (usually each other), etc. And when they are done, they’re done. They ensure they balance work and play time with nap time. Agile leaders must find the balance for their teams as well. Expect your teams to work hard, but don’t overdo it. And when work is over, make sure your team takes the time to unwind. It doesn’t do anyone any good if the team is putting in crazy hours. Productivity drops and morale suffers. As an agile leader, it’s okay to expect high performance from your team, just remember to keep it balanced.
So, go out and adopt a cat. You get to feel good about saving a life, and it just might make you a better leader.