Good Agile, Bad Agile
| Scrums are the most dangerous phase in rugby, since a collapse or improper engage can lead to a front row player damaging or even breaking his neck. — Wikipedia |
When I was growing up, cholesterol used to be bad for you. It was easy to remember. Fat, bad. Cholesterol bad. Salt, bad. Everything, bad. Nowadays, though, they differentiate between "good" cholesterol and "bad" cholesterol, as if we're supposed to be able to distinguish them somehow. And it was weird when they switched it up on us, because it was as if the FDA had suddenly issued a press release announcing that there are, in fact, two kinds of rat poison: Good Rat Poison and Bad Rat Poison, and you should eat a lot of the Good kind, and none of the Bad kind, and definitely not mix them up or anything.
Up until maybe a year ago, I had a pretty one-dimensional view of so-called "Agile" programming, namely that it's an idiotic fad-diet of a marketing scam making the rounds as yet another technological virus implanting itself in naive programmers who've never read "No Silver Bullet", the kinds of programmers who buy extended warranties and self-help books and believe their bosses genuinely care about them as people, the kinds of programmers who attend conferences to make friends and who don't know how to avoid eye contact with leaflet-waving fanatics in airports and who believe writing shit on index cards will suddenly make software development easier.
You know. Chumps. That's the word I'm looking for. My bad-cholesterol view was that Agile Methodologies are for chumps.
But I've had a lot of opportunity to observe various flavors of Agile-ism in action lately, and I now think I was only about 90% right. It turns out there's a good kind of Agile, although it's taken me a long time to be able to see it clearly amidst all the hype and kowtowing and moaning feverishly about scrums and whatnot. I have a pretty clear picture of it now.
And you can attend my seminar on it for the low, low price of $499.95! Hahaha, chump!
No, just kidding. You'll only find seminars about the Bad kind of Agile. And if in the future you ever find me touring around as an Agile Consultant, charging audiences to hear my deep wisdom and insight about Agile Development, you have my permission to cut my balls off. If I say I was just kidding, say I told you I'd say that. If I then say I'm Tyler Durden and I order you not to cut my balls off, say I definitely said I was going to say that, and then you cut 'em right off.
I'll just go right ahead and tell you about the Good Kind, free of charge.
It's kinda hard to talk about Good Agile and Bad Agile in isolation, so I might talk about them together. But I'll be sure to label the Good kind with a happy rat, and the Bad kind with a sad dead rat, so you'll always know the difference.
The Bad Kind
Back in Ye Olden Dayes, most companies approached software development as follows:
- hire a bunch of engineers, then hire more.
- dream up a project.
- set a date for when they want it launched.
- put some engineers on it.
- whip them until they're either dead or it's launched. or both.
- throw a cheap-ass pathetic little party, maybe. This step is optional.
- then start over.
Thank goodness that doesn't happen at your company, eh now? Whew!
Interestingly, this is also exactly how non-technical companies (like, say, Chrysler) handled software development. Except they didn't hire the engineers. Instead, they contracted with software consultants, and they'd hand the consultants 2-year project specs, and demanded the consultants finish everything on time plus all the crap the customer threw in and/or changed after signing the contract. And then it'd all fall apart and the contractors wouldn't get paid, and everyone was really miffed.
So some of the consultants began to think: "Hey, if these companies insist on acting like infants, then we should treat them like infants!" And so they did. When a company said "we want features A through Z", the consultants would get these big index cards and write "A" on the first one, "B" on the second one, etc., along with time estimates, and then post them on their wall. Then when the customer wanted to add something, the consultant could point at the wall and say: "OK, boy. Which one of these cards do you want to replace, BOY?"
Is it any wonder Chrysler canceled the project?
So the consultants, now having lost their primary customer, were at a bar one day, and one of them (named L. Ron Hubbard) said: "This nickel-a-line-of-code gig is lame. You know where the real money is at? You start your own religion." And that's how both Extreme Programming and Scientology were born.
Well, people pretty quickly demonstrated that XP was a load of crap. Take Pair Programming, for instance. It's one of the more spectacular failures of XP. None of the Agileytes likes to talk about it much, but let's face it: nobody does it. The rationale was something like: "well if ONE programmer sitting at a terminal is good, then TEN must be better, because MORE is ALWAYS better! But most terminals can only comfortably fit TWO programmers, so we'll call it PAIR programming!"
You have to cut them a little slack; they'd been dealing with the corporate equivalent of pre-schoolers for years, and that really messes with a person.
But the thing is, viruses are really hard to kill, especially the meme kind. After everyone had gotten all worked up about this whole Agile thing (and sure, everyone wants to be more productive), there was a lot of face to be lost by admitting failure. So some other kinds of Agile "Methodologies" sprang up, and they all claimed that even though all the other ones were busted, their method worked!
I mean, go look at some of their sites. Tell me that's not an infomercial. C'mon, just try. It's embarrassing even to look at the thing.
Yeah. Well, they make money hand over fist, because of P.T. Barnum's Law, just like Scientology does. Can't really fault 'em. Some people are just dying to be parted with their cash. And their dignity.
The rest of us have all known that Agile Methodologies are stupid, by application of any of the following well-known laws of marketing:
- anything that calls itself a "Methodology" is stupid, on general principle.
- anything that requires "evangelists" and offers seminars, exists soley for the purpose of making money.
- anything that never mentions any competition or alternatives is dubiously self-serving.
- anything that does diagrams with hand-wavy math is stupid, on general principle.
And by "stupid", I mean it's "incredibly brilliant marketing targeted at stupid people."
In any case, the consultants kept going with their road shows and glossy pamphlets. Initially, I'm sure they went after corporations; they were looking to sign flexible contracts that allowed them to deliver "whatever" in "2 weeks" on a recurring basis until the client went bankrupt. But I'm equally sure they couldn't find many clients dumb enough to sign such a contract.
That's when the consultants decided to take their road show to YOU. Why not take it inside the companies and sell it there, to the developers? There are plenty of companies who use the whip-cycle of development I outlined above, so presumably some of the middle managers and tech leads would be amenable to hearing about how there's this low-cost way out of their hellish existence.
And that, friends, was exactly, precisely the point at which they went from "harmless buffoons" to "potentially dangerous", because before they were just bilking fat companies too stupid to develop their own software, but now the manager down the hall from me might get infected. And most places don't have a very good quarantine mechanism for this rather awkward situation: i.e., an otherwise smart manager has become "ill", and is waving XP books and index cards and spouting stuff about how much more productive his team is on account of all this newfound extra bureaucracy.
How do we know it's not more productive? Well, it's a slippery problem. Observe that it must be a slippery problem, or it all would have been debunked fair and square by now. But it's exceptionally difficult to measure software developer productivity, for all sorts of famous reasons. And it's even harder to perform anything resembling a valid scientific experiment in software development. You can't have the same team do the same project twice; a bunch of stuff changes the second time around. You can't have 2 teams do the same project; it's too hard to control all the variables, and it's prohibitively expensive to try it in any case. The same team doing 2 different projects in a row isn't an experiment either.
About the best you can do is gather statistical data across a lot of teams doing a lot of projects, and try to identify similarities, and perform some regressions, and hope you find some meaningful correlations. But where does the data come from? Companies aren't going to give you their internal data, if they even keep that kind of thing around. Most don't; they cover up their schedule failures and they move on, ever optimistic.
Well if you can't do experiments and you can't do proofs, there isn't much science going on. That's why it's a slippery problem. It's why fad diets are still enormously popular. People want fad diets to work, oh boy you bet they do, even I want them to work. And you can point to all these statistically meaningless anecdotes about how Joe lost 35 pounds on this one diet, and all those people who desperately want to be thinner will think "hey, it can't hurt. I'll give it a try."
That is exactly what I hear people say, every time a team talks themselves into trying an Agile Methodology. It's not a coincidence.
But writing about Bad Agile alone is almost guaranteed to be ineffective. I mean, you can write about how lame Scientology is, or how lame fad diets are, but it's not clear that you're changing anyone's mind. Quitting a viral meme is harder than quitting smoking. I've done both. In order to have the right impact, you have to offer an alternative, and I didn't have one before, not one that I could articulate clearly.
One of the (many) problems with Bad Agile is that they condescendingly lump all non-Agile development practices together into two buckets: Waterfall and Cowboy. Waterfall is known to be bad; I hope we can just take that as an axiom today. But what about so-called Cowboy programming, which the Agileers define as "each member of the team does what he or she thinks is best"?
Is it true that this is the only other development process? And is Cowboy Programming actually bad? They say it as if it's obviously bad, but they're not super clear on how or why, other than to assert that it's, you know, "chaos".
Well, as I mentioned, over the past year I've had the opportunity to watch both Bad Agile and Good Agile in motion, and I've asked the teams and tech leads (using both the Bad and Good forms) lots of questions: how they're doing, how they're feeling, how their process is working. I was really curious, in part because I'd consented to try Agile last Christmas ("hey, it can't hurt"), and wound up arguing with a teammate over exactly what metadata is allowed on index cards before giving up in disgust. Also in part because I had some friends on a team who were getting kind of exhausted from what appeared to be a Death March, and that kind of thing doesn't seem to happen very often at Google.
So I dug in, and for a year, I watched and learned.
The Good Kind
(cue happy rat)
I'm going to talk a little about Google's software development process. It's not the whole picture, of course, but it should suffice for today. I've been there for almost a year and a half now, and it took a while, but I think I get it now. Mostly. I'm still learning. But I'll share what I've got so far.
From a high level, Google's process probably does look like chaos to someone from a more traditional software development company. As a newcomer, some of the things that leap out at you include:
- there are managers, sort of, but most of them code at least half-time, making them more like tech leads.
- developers can switch teams and/or projects any time they want, no questions asked; just say the word and the movers will show up the next day to put you in your new office with your new team.
- Google has a philosophy of not ever telling developers what to work on, and they take it pretty seriously.
- developers are strongly encouraged to spend 20% of their time (and I mean their M-F, 8-5 time, not weekends or personal time) working on whatever they want, as long as it's not their main project.
- there aren't very many meetings. I'd say an average developer attends perhaps 3 meetings a week, including their 1:1 with their lead.
- it's quiet. Engineers are quietly focused on their work, as individuals or sometimes in little groups or 2 to 5.
- there aren't Gantt charts or date-task-owner spreadsheets or any other visible project-management artifacts in evidence, not that I've ever seen.
- even during the relatively rare crunch periods, people still go get lunch and dinner, which are (famously) always free and tasty, and they don't work insane hours unless they want to.
These are generalizations, sure. Old-timers will no doubt have a slightly different view, just as my view of Amazon is slightly biased by having been there in 1998 when it was a pretty crazy place. But I think most Googlers would agree that my generalizations here are pretty accurate.
How could this ever work?
I get that question a lot. Heck, I asked it myself. What's to stop engineers from leaving all the trouble projects, leaving behind bug-ridden operational nightmares? What keeps engineers working towards the corporate goals if they can work on whatever they want? How do the most important projects get staffed appropriately? How do engineers not get so fat that they routinely get stuck in stairwells and have to be cut out by the Fire Department?
I'll answer the latter question briefly, then get to the others. In short: we have this thing called the Noogler Fifteen, named after the Frosh Fifteen: the 15 pounds that many college freshmen put on when they arrive in the land of Stress and Pizza. Google has solved the problem by lubricating the stairwells.
As to the rest of your questions, I think most of them have the same small number of answers.
First, and arguably most importantly, Google drives behavior through incentives. Engineers working on important projects are, on average, rewarded more than those on less-important projects. You can choose to work on a far-fetched research-y kind of project that may never be practical to anyone, but the work will have to be a reward unto itself. If it turns out you were right and everyone else was wrong (the startup's dream), and your little project turns out to be tremendously impactful, then you'll be rewarded for it. Guaranteed.
The rewards and incentives are too numerous to talk about here, but the financial incentives range from gift certificates and massage coupons up through giant bonuses and stock grants, where I won't define "giant" precisely, but think of Google's scale and let your imagination run a bit wild, and you probably won't miss the mark by much.
There are other incentives. One is that Google a peer-review oriented culture, and earning the respect of your peers means a lot there. More than it does at other places, I think. This is in part because it's just the way the culture works; it's something that was put in place early on and has managed to become habitual. It's also true because your peers are so damn smart that earning their respect is a huge deal. And it's true because your actual performance review is almost entirely based on your peer reviews, so it has an indirect financial impact on you.
Another incentive is that every quarter, without fail, they have a long all-hands in which they show every single project that launched to everyone, and put up the names and faces of the teams (always small) who launched each one, and everyone applauds. Gives me a tingle just to think about it. Google takes launching very seriously, and I think that being recognized for launching something cool might be the strongest incentive across the company. At least it feels that way to me.
And there are still other incentives; the list goes on and ON and ON; the perks are over the top, and the rewards are over the top, and everything there is so comically over the top that you have no choice, as an outsider, but to assume that everything the recruiter is telling you is a baldfaced lie, because there's no possible way a company could be that generous to all of its employees, all of them, I mean even the contractors who clean the micro-kitchens, they get these totally awesome "Google Micro-Kitchen Staff" shirts and fleeces.
There is nothing like it on the face of this earth. I could talk for hours, days about how amazing it is to work at Google, and I wouldn't be done. And they're not done either. Every week it seems like there's a new perk, a new benefit, a new improvement, a new survey asking us all if there's any possible way in which life at Google could be better.
I might have been mistaken, actually. Having your name and picture up on that big screen at End of Quarter may not be the biggest incentive. The thing that drives the right behavior at Google, more than anything else, more than all the other things combined, is gratitude. You can't help but want to do your absolute best for Google; you feel like you owe it to them for taking such incredibly good care of you.
OK, incentives. You've got the idea. Sort of. I mean, you have a sketch of it. When friends who aren't at Google ask me how it is working at Google — and this applies to all my friends at all other companies equally, not just companies I've worked at — I feel just how you'd feel if you'd just gotten out of prison, and your prison buddies, all of whom were sentenced in their early teens, are writing to you and asking you what it's like "on the outside". I mean, what would you tell them?
I tell 'em it's not too bad at all. Can't complain. Pretty decent, all in all.
Although the incentive-based culture is a huge factor in making things work the way they do, it only addresses how to get engineers to work on the "right" things. It doesn't address how to get those things done efficiently and effectively. So I'll tell you a little about how they approach projects.
Emergent Properties versus The Whip
The basic idea behind project management is that you drive a project to completion. It's an overt process, a shepherding: by dint of leadership, and organization, and sheer force of will, you cause something to happen that wouldn't otherwise have happened on its own.
Project management comes in many flavors, from lightweight to heavyweight, but all flavors share the property that they are external forces acting on an organization.
At Google, projects launch because it's the least-energy state for the system.
Before I go on, I'll concede that this is a pretty bold claim, and that it's not entirely true. We do have project managers and product managers and people managers and tech leads and so on. But the amount of energy they need to add to the system is far less than what's typically needed in our industry. It's more of an occasional nudge than a full-fledged continuous push. Once in a while, a team needs a bigger nudge, and senior management needs to come in and do the nudging, just like anywhere else. But there's no pushing.
Incidentally, Google is a polite company, so there's no yelling, nor wailing and gnashing of teeth, nor escalation and finger-pointing, nor any of the artifacts produced at companies where senior management yells a lot. Hobbes tells us that organizations reflect their leaders; we all know that. The folks up top at Google are polite, hence so is everyone else.
Anyway, I claimed that launching projects is the natural state that Google's internal ecosystem tends towards, and it's because they pump so much energy into pointing people in that direction. All your needs are taken care of so that you can focus, and as I've described, there are lots of incentives for focusing on things that Google likes.
So launches become an emergent property of the system.
This eliminates the need for a bunch of standard project management ideas and methods: all the ones concerned with dealing with slackers, calling bluffs on estimates, forcing people to come to consensus on shared design issues, and so on. You don't need "war team meetings," and you don't need status reports. You don't need them because people are already incented to do the right things and to work together well.
The project management techniques that Google does use are more like oil than fuel: things to let the project keep running smoothly, as opposed to things that force the project to move forward. There are plenty of meeting rooms, and there's plenty of open space for people to go chat. Teams are always situated close together in fishbowl-style open seating, so that pair programming happens exactly when it's needed (say 5% of the time), and never otherwise.
Google generally recognizes that the middle of the day is prone to interruptions, even at quiet companies, so many engineers are likely to shift their hours and come in very early or stay very late in order to find time to truly concentrate on programming. So meetings only happen in the middle of the day; it's very unusual to see a meeting start before 10am or after 4:30pm. Scheduling meetings outside that band necessarily eats into the time when engineers are actually trying to implement the things they're meeting about, so they don't do it.
Google isn't the only place where projects are run this way. Two other kinds of organizations leap to mind when you think of Google's approach: startup companies, and grad schools. Google can be considered a fusion of the startup and grad-school mentalities: on the one hand, it's a hurry-up, let's get something out now, do the simplest thing that could work and we'll grow it later startup-style approach. On the other, it's relatively relaxed and low-key; we have hard problems to solve that nobody else has ever solved, but it's a marathon not a sprint, and focusing requires deep concentration, not frenzied meetings. And at the intersection of the two, startups and grad schools are both fertile innovation ground in which the participants carry a great deal of individual responsibility for the outcome.
It's all been done before; the only thing that's really surprising is that Google has managed to make it scale.
The scaling is not an accident. Google works really hard on the problem, and they realize that having scaled this far is no guarantee it'll continue, so they're vigilant. That's a good word for it. They're always on the lookout to make sure the way of life and the overall level of productivity continue (or even improve) as they grow.
Google is an exceptionally disciplined company, from a software-engineering perspective. They take things like unit testing, design documents and code reviews more seriously than any other company I've even heard about. They work hard to keep their house in order at all times, and there are strict rules and guidelines in place that prevent engineers and teams from doing things their own way. The result: the whole code base looks the same, so switching teams and sharing code are both far easier than they are at other places.
And engineers need great tools, of course, so Google hires great people to build their tools, and they encourage engineers (using incentives) to pitch in on tools work whenever they have an inclination in that direction. The result: Google has great tools, world-class tools, and they just keep getting better.
The list goes on. I could talk for days about the amazing rigor behind Google's approach to software engineering. But the main takeaway is that their scaling (both technological and organizational) is not an accident. And once you're up to speed on the Google way of doing things, it all proceeds fairly effortlessly — again, on average, and compared to software development at many other companies.
The Tyranny of the Calendar
We're almost done. The last thing I want to talk about here is dates. Traditional software development can safely be called Date-Oriented Programming, almost without exception.
Startup companies have a clock set by their investors and their budget. Big clients set target dates for their consultants. Sales people and product managers set target dates based on their evaluation of market conditions. Engineers set dates based on estimates of previous work that seems similar. All estimation is done through rose-colored glasses, and everyone forgets just how painful it was the last time around.
Everyone picks dates out of the air. "This feels like it should take about 3 weeks." "It sure would be nice to have this available for customers by beginning of Q4." "Let's try to have that done by tomorrow."
Most of us in our industry are date-driven. There's always a next milestone, always a deadline, always some date-driven goal to it.
The only exceptions I can think of to this rule are:
1) Open-source software projects.
2) Grad school projects.
3) Google.
Most people take it for granted that you want to pick a date. Even my favorite book on software project management, "The Mythical Man-Month", assumes that you need schedule estimates.
If you're in the habit of pre-announcing your software, then the general public usually wants a timeframe, which implies a date. This is, I think, one of the reasons Google tends not to pre-announce. They really do understand that you can't rush good cooking, you can't rush babies out, and you can't rush software development.
If the three exceptions I listed above aren't driven by dates, then what drives them? To some extent it's just the creative urge, the desire to produce things; all good engineers have it. (There are many people in our industry who do this gig "for a living", and they go home and don't think about it until the next day. Open source software exists precisely because there are people who are better than that.)
But let's be careful: it's not just the creative urge; that's not always directed enough, and it's not always incentive enough. Google is unquestionably driven by time, in the sense that they want things done "as fast as possible". They have many fierce, brilliant competitors, and they have to slake their thirsty investors' need for growth, and each of us has some long-term plans and deliverables we'd like to see come to fruition in our lifetimes.
The difference is that Google isn't foolish enough or presumptuous enough to claim to know how long stuff should take. So the only company-wide dates I'm ever aware of are the ends of each quarter, because everyone's scrambling to get on that big launch screen and get the applause and gifts and bonuses and team trips and all the other good that comes of launching things with big impact at Google.
Everything in between is just a continuum of days, in which everyone works at optimal productivity, which is different for each person. We all have work-life balance choices to make, and Google is a place where any reasonable choice you make can be accommodated, and can be rewarding. Optimal productivity is also a function of training, and Google offers tons of it, including dozens of tech talks every week by internal and external speakers, all of which are archived permanently so you can view them whenever you like. Google gives you access to any resources you need in order to get your job done, or to learn how to get your job done. And optimal productivity is partly a function of the machine and context in which you're operating: the quality of your code base, your tools, your documentation, your computing platform, your teammates, even the quality of the time you have during the day, which should be food-filled and largely free of interrupts.
Then all you need is a work queue. That's it. You want hand-wavy math? I've got it in abundance: software development modeled on queuing theory. Not too far off the mark, though; many folks in our industry have noticed that organizational models are a lot like software models.
With nothing more than a work queue (a priority queue, of course), you immediately attain most of the supposedly magical benefits of Agile Methodologies. And make no mistake, it's better to have it in software than on a bunch of index cards. If you're not convinced, then I will steal your index cards.
With a priority queue, you have a dumping-ground for any and all ideas (and bugs) that people suggest as the project unfolds. No engineer is ever idle, unless the queue is empty, which by definition means the project has launched. Tasks can be suspended and resumed simply by putting them back in the queue with appropriate notes or documentation. You always know how much work is left, and if you like, you can make time estimates based on the remaining tasks. You can examine closed work items to infer anything from bug regression rates to (if you like) individual productivity. You can see which tasks are often passed over, which can help you discover root causes of pain in the organization. A work queue is completely transparent, so there is minimal risk of accidental duplication of work.
And so on. The list goes on, and on, and on.
Unfortunately, a work queue doesn't make for a good marketing platform for seminars and conferences. It's not glamorous. It sounds a lot like a pile of work, because that's exactly what it is.
Bad Agile in More Detail
I've outlined, at a very high level, one company's approach to software development that is neither an Agile Methodology, nor a Waterfall cycle, nor yet Cowboy Programming. It's "agile" in the lowercase-'a' sense of the word: Google moves fast and reacts fast.
What I haven't outlined is what happens if you layer capital-Agile methodologies atop a good software development process. You might be tempted to think: "well, it can't hurt!" I even had a brief fling with it myself last year.
The short answer is: it hurts. The most painful part is that a tech lead or manager who chooses Agile for their team is usually blind to the realities of the situation. Bad Agile hurts teams in several ways.
First, Bad Agile focuses on dates in the worst possible way: short cycles, quick deliverables, frequent estimates and re-estimates. The cycles can be anywhere from a month (which is probably tolerable) down to a day in the worst cases. It's a nicely idealistic view of the world.
In the real world, every single participant on a project is, as it turns out, a human being. We have up days and down days. Some days you have so much energy you feel you could code for 18 hours straight. Some days you have a ton of energy, but you just don't feel like focusing on coding. Some days you're just exhausted. Everyone has a biological clock and a a biorhythm that they have very little control over, and it's likely to be phase-shifted from the team clock, if the team clock is ticking in days or half-weeks.
Not to mention your personal clock: the events happening outside your work life that occasionally demand your attention during work hours.
None of that matters in Bad Agile. If you're feeling up the day after a big deliverable, you're not going to code like crazy; you're going to pace yourself because you need to make sure you have reserve energy for the next big sprint. This impedance mismatch drives great engineers to mediocrity.
There's also your extracurricular clock: the set of things you want to accomplish in addition to your main project: often important cleanups or other things that will ultimately improve your whole team's productivity. Bad Agile is exceptionally bad at handling this, and usually winds up reserving large blocks of time after big milestones for everyone to catch up on their side-project time, whether they're feeling creative or not. Bad Agile folks keep their eye on the goal, which hurts innovation. Sure, they'll reserve time for everyone to clean up their own code base, but they're not going to be so altruistic as to help anyone else in the company. How can you, when you're effectively operating in a permanent day-for-day slip?
Bad Agile seems for some reason to be embraced by early risers. I think there's some mystical relationship between the personality traits of "wakes up before dawn", "likes static typing but not type inference", "is organized to the point of being anal", "likes team meetings", and "likes Bad Agile". I'm not quite sure what it is, but I see it a lot.
Most engineers are not early risers. I know a team that has to come in for an 8:00am meeting at least once (maybe several times) a week. Then they sit like zombies in front of their email until lunch. Then they go home and take a nap. Then they come in at night and work, but they're bleary-eyed and look perpetually exhausted. When I talk to them, they're usually cheery enough, but they usually don't finish their sentences.
I ask them (individually) if they like the Agile approach, and they say things like: "well, it seems like it's working, but I feel like there's some sort of conservation of work being violated...", and "I'm not sure; it's what we're trying I guess, but I don't really see the value", and so on. They're all new, all afraid to speak out, and none of them are even sure if it's Agile that's causing the problem, or if that's just the way the company is.
That, my friends, is not "agile"; it's a just load of hooey. And it's what you get whenever any manager anywhere decides to be a chump.
Good Agile Should Drop the Name
I would caution you to be skeptical of two kinds of claims:
- "all the good stuff he described is really Agile"
- "all the bad stuff he described is the fault of the team's execution of the process"
You'll hear them time and again. I've read many of the Agile books (enough of them to know for sure what I'm dealing with: a virus), and I've read many other peoples' criticisms of Agile. Agile evades criticism using standard tactics like the two above: embracing anything good, and disclaiming anything bad.
If a process is potentially good, but 90+% of the time smart and well-intentioned people screw it up, then it's a bad process. So they can only say it's the team's fault so many times before it's not really the team's fault.
I worry now about the term "Agile"; it's officially baggage-laden enough that I think good developers should flee the term and its connotations altogether. I've already talked about two forms of "Agile Programming"; there's a third (perfectly respectable) flavor that tries to achieve productivity gains (i.e. "Agility") through technology. Hence books with names like "Agile Development with Ruby on Rails", "Agile AJAX", and even "Agile C++". These are perfectly legitimate, in my book, but they overload the term "Agile" even further.
And frankly, most Agile out there is plain old Bad Agile.
So if I were you, I'd take Agile off your resume. I'd quietly close the SCRUM and XP books and lock them away. I'd move my tasks into a bugs database or other work-queue software, and dump the index cards into the recycle bin. I'd work as fast as I can to eliminate Agile from my organization.
And then I'd focus on being agile.
But that's just my take on it, and it's 4:00am. Feel free to draw your own conclusions. Either way, I don't think I'm going to be an Early Riser tomorrow.
Oh, I almost forgot the obvious disclaimer: I do not speak for Google. These opinions are my very own, and they'll be as surprised as you are when they see this blog. Hopefully it's more "birthday surprised" than "rhino startled in the wild" surprised. We'll see!


231 Comments:
Without judging, i'm still young in the industry, which of the methodologies is good/bad, i would like to point a deeper communication flaw.
Agile, as it stands in software development, can mean 2 things, completely opposite in meaning -
1. Agile engineering to changing business needs
2. Agile business process to changing engineering schedules
If the industry accepts a defacto meaning to avoid confusion, it only succeeds in blurring expression of the distinction between the two.
Cant believe this made Slashdot/Joel.. Corporate culture vrs Agile Development..
Chuck Norris < pwnz > Google
Little off topic but me and my associates were discussing Google, the company last night at a business dinner. We really believed in what Google stood for.. Dont be evil etc..
The mask cracked, proving there was a mask when they agreed to filter their search engine in accordance with the Chinese Govt..
Just another company with a good marketing scheme..
In the end, the cold heard cash is what guides their decisions. Rather disappointed, we really believed you stood on principle etc.. Anyways good luck etc.
Context, people. Context.
Three quick comments.
1. The Agile fans here (detractors) all seem to be arguing from a different perspective than the original post (and the anti-Agile posters.) Most programming isn't about creating that which has never been done, but mere variations on that which has. If you are making a new dental record billing system, this is variation N of something already invented. New concepts aren't being created. Agile works for this. It doesn't work for any other endeavour.
2. Today's google isn't any different than Bell Labs 50 years back nor many other 80's "computer" companies (e.g. Sun and Microsoft, Xerox PARC) and for that matter, divisions of other "non-computer" companies (e.g. Lockheed skunk works, GE, etc.) Obviously this is a well tested road that we all know to work.
3. Refer to comment #1 whilst reading comment #2 and you will hopefully understand that Agile etc can't work for innovation and the #2 comment applies *only* to innovation. All of you who would carry on about Agile need to get a grip and realize that this is a development method optimized for the "mostly known" and simply doesn't apply outside that context.
I was with ya until you started slamming Scientology, for no apparent reason. It's an entertaining rant, but nothing that anyone could use in reality. Creating software is different than working as a consultant for a company and creating real solutions that solve real business problems. I do think that a good system for rewarding people makes a huge difference in people perform.
It is clear that you have absolutely no idea or real experience about software development or software projects. Clearly you must have worked in a too many none functional teams managed but hopeless project managers. It seems however that you have missed a key factor in your assassination of agile, for a project to be successful you actually need competent motivated people working on the project.
From my experience of well over 30 projects the Agile approach is an extremely effective method, and those that can’t see this tend to be those that don’t actually understand how to work in teams or run projects effectively. Just to clear, however, I’m not however saying that Agile by any means actually fits every situation. I have also seen the Waterfall approach being used very successfully. The key ingredients in all successful projects is good people using a clearly defined process that has been refined through trial and error and not whether the process is Agile or Waterfall.
An interesting counter to Google's hiring/management practices can be found at:
http://www.gladwell.com/2002/2002_07_22_a_talent.htm
Great posts..
Its the best!!
If you've got a moment, please drop by Espresso Coffee and find out all about espresso coffee makers..
Made it myself !!
At least you manage to analyze the situation, to take a moment back and think deeply.
Some of us don't even bother. They just said, "Oh well, next time will be better. We have a deadline coming, you know." Repeat until you can no longer feel the pain.
Here's a list of free online software engineering books .
I just bought the Pragmatic Programmers' Agile Web Development With Rails
In the e-mail with the PDF book, GMail chose this ad for me:
Do Scrum- Google Kirkland
Sprint to your heart's content. Scrum experts in Java apply now!
www.google.com/jobs
So, Google is recruiting Rails developers with Scrum+Java pitch.
Not quite the right pitch, unless
this ad is a self-aware insinuation that Google needs Rails developers to fix the Adwords targeting...
This comment has been removed by a blog administrator.
Smartphonesystemsltd is offering you a great offer by selling at a
undercut as a purpose of bonus period.
Smartphonesystemsltd is a wholesales company and we guarrantee you
that your satisfaction is 100% guarranteed with you placing your
order with us.
Kindly view our great price list below
For your enquiry please contact;
(smartphonesystemsltd@yahoo.co.uk)
(smartphonesystemsltd@24.com)
Call us at (+447024055752)
Thank You For Your Enquiry
Best Regard
Mr Darren
PRODUCTS LIST WITH THEIR PRICES
SIDEKICK PRICES
Juicy SIDEKICK I...........$150USD
SIDEKICK II..........$120
SIDEKICK II MISTER CARTOON...... $1700
JUICY COUTURE SIDEKICK II .....$1500
SIDEKICK 3..........$220
PALM TREO PRICES
PPC-7600.............. $220
Treo 700...............$200
Treo 600...............$150
Treo 650...............$160
02 XDA PRICES
o2 xDA Exec ........ $250
02 XDA Atom ........ $220
02 XDA NEO ........ $220
ETC
SAMSUNG PRICES
SAMSUNG D500-- US$180
SAMSUNG D600--US$180
Samsung Z500 --US$160
Samsung E360 --US$150
Samsung D807 --US$160
ETC
MOTOROLA PRICES
Motorola razor v3 pink edition....$150usd
Motorola v3X...................$180usd
Motorola V3i.............$140
Motorola MPX300.,...$175usd
ETC
NEXTEL PRICES
Nextel i930.........$150usd
Nextel i870.........$104usd
ETC
SONY ERICSSON PRICES
Sony Ericsson p990.....$170usd
Sony Ericsson p910i....$200usd
Sony Ericsson w900i....$200usd
Sony Ericsson z1010....$250usd
ETC
QTEK PRICES
Qtek 9000 ....... $250
Qtek 8310 ....... $200
Qtek 9100 ....... $270
Qtek 9090 ....... $200
Qtek 2020i ...... $220
Qtek 2020 ....... $200
ETC
I-MATE PRICES
I-MATE JAMin ......... $240
I-MATE JASJAR ........ $250
I-MATE K-JAM ......... $200
I-MATE JAM Black ........ $1800
I-MATE JAM ......... $190
I-MATE PDA2 ......... $190
ETC
NOKIA PRICES
Nokia N80.......$120USD
Nokia N93.......$200USD
Nokia N92.......$200USD
Nokia N91.......$180USD
Nokia N90.......$180USD
Nokia N70.......$1600USD
Nokia N71.......$160USD
Nokia 8800......$160USD
Nokia 9500......$200USD
ETC
IPOD PRICES
20GB iPod 20GB iPod .............45USD
Apple 4 GB iPod Mini Pink M9435LL/A ......40 USD
Apple 40 GB iPod photo....................40 USD
Apple 4 GB iPod Mini Silver M9160LL/A ....40 USD
Apple 60 GB iPod Photo M9830LL/A..........60 USD
Apple 60 GB iPod photo ...................55 USD
Apple 30 GB iPod Photo M9829LL/A..........50 USD
Apple 512 MB iPod Shuffle MP3 Player......40 USD
Apple 4 GB iPod Mini Blue M9436LL/A.......45 USD
Apple 2 GB iPod Nano......................50 USD
Apple 4 GB iPod Nano......................60 USD
Apple 30 GB iPod Vidoe...................110 USD
Apple 60 GB iPod Vidoe...................150 USD
PLAY STATION PRICES
Sony PSP PlayStation Portable Game System-$200
Sony PSP Handheld Gaming System-$180
PSP Portable Console $180
Sony PSP-1000KCW PlayStation Portable Value-Pack $130
PSP Starter Bundle $180
Sony PSP Value Pack (Ceramic White) $150
Sony PSP Standard Pack (for Sony PSP) $170
Sony PlayStation PSP PSP1001K $132
XBOX PRICES
Xbox 360 Premium Gold Pack Mega Sports Bundle $250
Xbox Bundle Console,12 Movies, 2 Games and DVD Kit $150
Xbox 360 Core Console Video Game System $200
Xbox 360 "Core Sports Bundle" Video Game System $250
Microsoft Xbox 360 Core System (Xbox 360) $180
Xbox 360 Platinum System $200
Xbox 360 Game Console System Combo Pack $250
Xbox Kasumi-Chan Blue Limited Edition (for Xbox) $250
Xbox 360 Fully Loaded console PAL version $250
Xbox Bundle $200
*All Toshiba laptops
Toshiba Satellite PRO L10 $320
Toshiba M200 $500
Toshiba R100 $450
Toshiba Qosmio E10 $750
Toshiba Satellite PRO L20 $250
Toshiba M100 $680
Toshiba M300 $740
Toshiba Portege A200 $320
Toshiba Satellite L10 $330
Toshiba Qosmio F20 $500 *
*ALL NEC LAPTOPS
NEC 42XM3 Plasma TV -$1,600
NEC 42XR3 Plasma TV -$1,300
NEC 50XM4 Plasma TV -$1,350
NEC 50XR4 Plasma TV -$1,100
NEC 61XM3 Plasma TV -$1,300
NEC 61XR3 Plasma TV -$1,300
NEC 84VP4 Plasma TV -$1,250
*Dell Laptops
Dell Latitude D600 $290
Dell Latitude D500 t $200
Dell Inspiron 6000 $350
Dell Latitude D505 $340
Dell Latitude D610 $460
Dell Latitude D510 $320
Dell Inspiron 9300 $530
* CAMCORDERS
Sony DCR-DVD201 DV Camcorder....$300usd
Canon ZR200 DV Camcorder........$180usd
Samsung SCD67 DV Camcorder......$200usd
Sony DCR-HC20 DV Camcorder......$200usd
Panasonic AG-DVC7 DV Camcorder..$500usd
Panasonic PV-GS150 DV Camcorder.$200usd
Sony DCR-DVD203 DV Camcorder....$240usd
Sony DCR-HC40 DV Camcorder......$180usd
Panasonic PV-GS19 DV Camcorder..$200usd
Sony DCR-DVD403 DV Camcorder....$300usd
AND MANY MORE AVAILABLE IN STORE
*Sony Laptops
SONY VAIO A217S-- 100GB-- 512MB RAM-- XP HOME-------------$300
SONY VAIO B1VP-- 40GB HD-- 512MB RAM-- XP PRO--------------$330
SONY VAIO T370P/L-- 60GB HD-- 512MB RAM-- XP----------------$200
SONY VAIO A215Z 60GB HD-- 512MB RAM-- XP------------------$2450
SONY VAIO A397XP-- 80GB HD-- 512MB RAM-- XP----------------$300
SONY VAIO B100B08 60GB HD-- 512MB RAM-- XP---------------$250
SONY VAIO B100B08 60GB HD-- 512MB RAM-- XP---------------$400
SONY VAIO FS295VP 80GB HD-- 512MB RAM-- XP---------------$350
SONY VAIO FS215Z 100GB HD-- 512MB RAM-- XP---------------$350
SONY VAIO A417M 80GB HD-- 512MB RAM-- XP-----------------$450
SONY VAIO B1VP-- 40GB HD-- 512MB RAM-- XP PRO-------------$200
SONY VAIO T370P/L-- 60GB HD-- 512MB RAM-- XP PRO----------$400
SONY VAIO LAPTOP-- VGN-A117S---------------$300
FLYBOOK NOTEBOOK - WI-FI-- GPRS-- BLUETOOTH-- 1GHZ (RED)------$410
FLYBOOK NOTEBOOK - WI-FI-- GPRS-- BLUETOOTH-- 1GHZ (BLUE)-----$300
FLYBOOK NOTEBOOK - WI-FI-- GPRS-- BLUETOOTH-- 1GHZ (YELLOW)--$300
FLYBOOK NOTEBOOK - WI-FI-- GPRS-- BLUETOOTH-- 1GHZ (SILVER)---$300
*APPLE LAPTOPS
APPLE G4 POWERBOOK 1.5GHZ SUPERDRIVE WITH 15 INCH DISPLAY--$500
APPLE G5 POWERMAC 2.0GHZ DESKTOP COMPUTER-------------$700
APPLE G4 POWERBOOK 1.5GHZ SUPERDRIVE WITH 17 INCH DISPLAY--$400
APPLE G5 POWERMAC 2.5GHZ DESKTOP COMPUTER---------$100
APPLE G4 POWERBOOK 1.5GHZ SUPERDRIVE WITH 15 INCH DISPLAY--$500
APPLE G5 POWERMAC 2.0GHZ DESKTOP COMPUTER---$700
APPLE G4 POWERBOOK 1.5GHZ SUPERDRIVE WITH 17 INCH DISPLAY--$400
APPLE G5 POWERMAC 2.5GHZ DESKTOP COMPUTER---$100
*ALL PANASONIC TV
Panasonic TH-42PD50U Television.....$600USD
Panasonic TH-42PX50U Television.....$1000USD
Panasonic TH-50PX50U Television.....$1500USD
Panasonic TH-42PWD6UY Television....$500USD
Panasonic TH-42PD25U/P Television...$400USD
Panasonic TH-42PHD8UK Television....$450USD
Panasonic TH-65PHD7UY Television....$2500USD
Pioneer PDP-5050HD Television.......$1000USD
Panasonic TH-37PX50U Television....$500USD
Panasonic TH-42PX500U Television...$800USD
*ALL SONY TV
Sony KLV-32M1 Television.........$400USD
Sony PFM-42V1/S Television.........$500USD
Sony KDE-61XBR950 Television......$5000USD
Sony KDE-42XBR950 Television......$1000USD
Sony PFM-42X1/S Television.......$500USD
Sony KDE-42XS955 Television......$550USD
Sony FWD-50PX1/S Television.....$1200USD
*ALL SAMSUNG LCD TV
Samsung HP-R4252 Television........$500USD
Samsung LN-R328W - LCD TV - 32....$500usd
Samsung LN-R408D - LCD TV - 40....$800usd
Samsung LT-P326W - LCD TV - 32....$650usd
Samsung LTM 225W - LCD TV - 22....$500usd
Samsung PPM63H3-plasma panel 63...$2000usd
Samsung HP-P5071 50-inch 1366X768 HD Plasma TV Ref.....$800usd
Samsung HPP5031 - plasma panel - 50...$1000usd
* ALL PIONEER PLASMA TV
Pioneer PDP-5050HD Television.......$1000USD
Pioneer PDP-424MV Plasma TV -$1,300
PioneerPDP-42A3HD Plasma TV -$1,120
Pioneer PDP-434CMX Plasma TV-$1,280
Pioneer PDP-43A5HD Plasma TV-$1,100
Pioneer PDP-4360HD Plasma TV -$1,200
Pioneer PDP-504CMX Plasma TV-$1,400
Pioneer PDP-505CMX Plasma TV -$1,370
Pioneer PDP-5060HD Plasma TV-$1,290
Pioneer PDP-614MX Plasma TV -$1,400
Pioneer PDP-424MV Plasma TV -$1,300
Pioneer PDP-42A3HD Plasma TV -$1,120
Pioneer PDP-434CMX Plasma TV-$1,280
Pioneer PDP-43A5HD Plasma TV-$1,100
Pioneer PDP-4360HD Plasma TV -$1,200
Pioneer PDP-504CMX Plasma TV-$1,400
Pioneer PDP-505CMX Plasma TV -$1,370
Pioneer PDP-5060HD Plasma TV-$1,290
Pioneer PDP-614MX Plasma TV -$1,400
Sharp 32" Aquos HD-Ready LCD TV....$500usd.
AVAILABLE MODELS:
NOKIA - N93, N73, N72,N70 , N71 , N80 , N92 , N91 , 8801 , 8800 , N90
, 9300i , 9500 , 7370 , 7380 , 6136 , 6131 , 6070 , 6125 , 6103 ,
3250 , 6708 , 6280 , 6270 ....
SONY ERICSSON - K800 , K790 , W300 , Z530 , K510 , K310 , W950 , M600
, K610 , W810 , W900i , P990i , W550i , W600i , W800i ....
SAMSUNG - D870 , D780 , E900 , Z400 , Z550 , i320 , i310 , Z560 ,
P900 , P910 , D520 , D300 , Z710 , D820 , D810 D800 ....
MOTOROLA - W220 , V195 , ROKR E2 , RAZR V3i , ROKR E1 , A910 , A1200
, A728 , A732 , Q , E895 , V3x , RAZR V3i Gold ....
This comment has been removed by the author.
Wow, sounds like Google is geek heaven :-)
For others not working in such a unique situation, what you call "Bad Agile" still has a lot to offer over waterfall, particularly when you're developing products where you have control over scope.
In particular it certainly helps to provide clear visibility and open engagment between IT and business teams, and if that's a problem that needs fixing at an organisation, "Bad Agile" is good.
However, you are certainly right to say "Agile" is not a silver bullet and anyone who believes it is is a mug!
Kelly Waters
http://allaboutagile.com
Canton GA Real Estate | Canton Georgia Real Estate
Hi - can you comment on the HR policy at Google - all this free flowing structure seems like it would have to be coupled with a unique type of person working there - can you please describe the traits of your 'average' google developer / tester / BA etc?
thanks
I recently wrote an article Agile Methods and Other Fairy Tales. Of course, I am not a big fan of Agile. You can see the article at
www.SoftwareMetrics.Com
David Longstreet
that said, who will server the customer, no matter how childish he is? will google go to chrysler? or will they do the DoD 5015 compliant Records Management for anybody out there? it's like comparing apples with lemons -> different types of software development.
If I am a government agency, and I need Records Management, should I contract with a contractor, and say, well, work on tis IF YOU WANT, but if not, some sheep jumping on the taskbar would be cool as well.
Just in case...
Pretty Good Post Stevey!
Well, there have been 2 stands of views as the title suggests. But both defend their stand to be be the "GOOD Agile". So who's on the "BAD Agile" stand??
It is all a matter of perception. Every Project that is undertaken has one goal "Successful Bug-Free Completion", and the stands to achieve the same.
When I started reading this Post, I felt great being a part of such a practise, but as i browsed through the comments, I realised, this is rare.
But, I enjoy my DBA job, as there is immense responsibilty of keeping the Database up and running. And for that, every DBA is granted the space to out-stand himself.
Lets come up with something that has time-frames and delivery model approache, yet the developers are satisfied and are being valued by incentives.
That will solve the problem of the Customer, the Manager, and the Developer.
Take Care,
Zaffer
This comment has been removed by the author.
Great writing, I very much agree with your experiences.
When resumes come across my desk and I see "agile" or "scrum" on them it's a hit against the candidate.
This article is absolute rubbish. Google runs a totally different business model to the rest of the world. The financially realistic world with deadlines and date commitments.
This blog is about techie rant and nothing about the value of completing a project within timeframes constructured by a business framework.
Stevey,
Very funny post! I recently wrote an article and I have presented the same at several conferences. I get a lot of hate mail and nasty grams. It seems like anyone dare criticize or point out the flaws of Agile gets attacked.
I have recently decided Agile folks are shape shifters too because you can never get a handle on their ideas. Even though I can quote from popular Agile books or quote from Agile fanatics, I get told that is not Agile.
"Agile Methods and Other Fairy Tales" You can read it at
SoftwareMetrics.Com/Agile.
Excellent blog.
It creates harmony in working together - equilibrium in thoughts and actions, goals and achievements, plans and performance, products and markets. It resolves situations of scarcity, be they in the physical, technical or human fields, through maximum utilization with the minimum available processes to achieve the goal. Lack of management causes disorder, confusion, wastage, delay, destruction and even depression. Managing men, money and materials in the best possible way, according to circumstances and environment, is the most important and essential factor for a successful management
Hope you will come with more such article.
I must be walking around in a dream or I am just delusional. I have been in IT for over 15 years and I have used many "methodologies", all with success and failures. However, I have found that methodologies which require the creation of deliverables in a sequential manner and seek to freeze those deliverables to control the project fail to deliver business value sought by the initiators of the project. I have been using various Agile methodologies on projects for the past three years and the results have been excellent. Not only have these projects been delivered very close to the "date" that was committed they actually have delivered the business value that the customer was expecting. The developers on my team are much happier with this approach than with the others they were used to such as Waterfall or RUP.
You dismissal of Agile seems to be a bit parochial and ignores the success that many have achieved. Perhaps you have always worked in environments that did not have oppressive amount of documentation and process to follow and any "methodology" seems like too much. But when you have lived in the Corporate IT world for years and find an approach that eliminates useless deliverables and artifacts and lets you focus on building software, reduces or eliminates the command and control mentality and replaces it with team who are self-directing and it works, you embrace it and rejoice.
Hi Steve! That was a great article. Quite Practical and realistic. Its true that so-called "methodologies" -> ALL OF THEM < have made software development a part of HELL.
Every single person thinks differently. There cannot be a "one size fits all" process. So better stop thinking about process and start implementing your ideas.
When you do that, you can satisfy your customer quite well. For an average customer, Performance matters - not the procedure :).
Sadly, the pests occupying a significant portion of the developer population cannot even code and so they stick on to so-called "process" because they assume that plain jargons can get you to the top which is obviously untrue :)..
There are a few people here who vouch for a "methodology" saying that it has been a success - for them atleast. You can find a hundred million failed "process-ridden" companies that failed miserably.
None of the "methodologies" have worked well for all of them.
My most productive days were when I was a Cowboy :)..
...
Hello,
Your blog entry was really informative :). Also, I have a request for you. We, at ArticleMuseum.com, are trying to build a quality site on articles. I would be very grateful if you could look at it sometime and try using it's service :).
Thanks,
Patrick ([articlemuseum@gmail.com])
Good recruitment pitch. Try telling that this blog is not a Google infomercial.
Our engineers prefer pair programming and have found it to be more productive. Of course, XP has to fit a company's culture and needs...this I'll admit is what's missed in most of the marketing. Also, XP should be applied by the team not the management....management just needs to accept it.
Google is really just an advertising company that makes software for fun. You can't compare it to companies whose entire livelihood depends on the software it delivers and when it is delivered.
----
Reflections of an Unstable Mind
Interesting idea about our biological body clock! Thank you:)
<< Home