Agile sucks when it’s about stuff you don’t like. Just ask the guys at Yahoo.
The good news is that there is no “standard” Agile. It’s best practices around iterative and incremental development. We write books and list out a bunch of stuff, people try them all, and we compare notes. Somethings apply most all of the time, so we keep those. Some apply every now and then, so we keep those too — but keep them in our back pocket. We’re always just interested in what works for us, right now.
The bad news is that a lot of stuff that works most of the time is stuff we might not like. Being an old dinosaur, I was never a fan of TDD. Didn’t care much for fluffy charts on the wall, or playing with crayons and glue again. Did enough of that in kindergarten. This thing where you get together standing up every day seems the height of lunacy. Why not just talk like normal human beings?
It turns out we do a really bad job of trying to figure out ahead of time whether something works or not. Many times when we don’t like something, we just don’t try it. Or we try it a little bit and then give up on it without “getting it”.
Which brings me to the number one thing that we’re finding in Agile that works most of the time but people don’t want to hear about: co-located teams.
Everybody and their brother wants to work remotely, you know, in their pajamas. And it’s slowly turning out that for many types of technology work, distributed teams aren’t going to cut it.
Yahoo is bringing all their remote workers back. Startups have long found that their odds of success are dramatically multiplied when they are physically together. These aren’t just business opinions, these are moves in the marketplace that we’re seeing from groups that succeed.
Big business is still trying to crack the nut of offshoring. Yes, it’s possible, but you always end up either breaking the work up in to such small pieces as to have done it yourself, or training up a bunch of experts in how your company operates who don’t work for you. Either path is problematic.
If you think about it, this makes sense. If you are working without a lot of interaction, it’s either because you have a job that’s minutely-defined or you are an expert in this customer, this domain, and can work with little interaction.
But wait! I can hear you say. We HAVE tools for remote work. Chat, Skype, and so forth. We have TONS of tools!
Here’s where it gets a bit tricky, and remember that I’m only trying to reverse engineer why we’re observing that it doesn’t work. I don’t have all the answers.
Technology development — indeed much of human existence — is a social construct. It’s about people, personalities, relationships, teams, and so forth. The technology and the problem have little to do with anything. “Give me a good team,” the saying goes, “and I can do most anything”
Lots of truth in that.
What we want technology development to be about, however, is moving bits of data around. I have a list of requirements in Excel. We have a project plan on the web. I can chat with you online to explain the way this code works.
Our working theory, mainly because we’re all bit-heads living in the digital age, is that with the correct bits flowing the correct way, things happen. So “friends” on facebook are kinda like friends, but kinda not. Email is kind of like having a conversation, but kinda not. I “know” Joe because we follow each other on Twitter, but not really.
Agile technology development, where you are changing the nature of how you work and the definition of success dynamically, has almost nothing to do with bits of data. So it’s not like having a video conference, or emailing a specification. It’s like making real friends, with real strengths and weaknesses, and learning to use each other’s characters in something greater than the sum of the parts.
There’s not an app for that.
I like Agile when it tells me things I want to hear: project management doesn’t have to be dull, endless meetings, we can work faster the closer we work with the customer, and so forth. I don’t like it so much when it tells me things I don’t want to hear, like in many situations I have to be sitting in a room with the rest of my team instead of in my pajamas.
I saw something a month ago I want to share.
I was observing a team of 8 people from across the hall. I couldn’t hear what was being said but I saw one them stop working and look confused. He looked around the room. Everybody else was busy. So he went to the flipchart and started sketching out his problem for himself. When I looked back a minute later two of them were working around the flipchart, the second guy pointing out things to the first guy.
For many minutes everybody else kept working, many with headphones on. Then one guy got to a stopping point, looked up, and saw the conversation. He gets up and walks over. Now there’s three guys talking and drawing.
They talk for a bit, then there’s four, then five people, all around the flipchart, all working on a solution. The fifth guy was interesting. He stands by the chart for a bit, then realizes the conversation is not for him, so he goes back to his work.
They reach a conclusion and everybody goes back to their seats except the first guy, who stays to make sure he’s captured the results.
This all took place in about ten minutes. No meetings planned, no time waiting around for introductions, no stop in the flow of work, no having to bring somebody else in, no hanging threads, no pre-planned agenda, no figuring out who to invite. Just a bunch of people working together organically, naturally.
An hour later they all went out to lunch together.
I don’t know how you do something like that electronically.
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.
the commenting system is currently down. If you would like to comment, send me an email and I promise to publish your comment unedited