It's the People, Stupid.

Published October 04, 2006
Advertisement
A few years ago, I routinely described myself with a certain ha-ha-only-serious quip that rarely failed to draw a wry chuckle. I would inform people with a perfectly straight face that "I'm not antisocial... I simply hate everyone."

Being reclusive seems to be no small part of working in intellectual fields, and programming is no exception. The need for focus and a controlled environment borders on the neurotic in many of the programmers I know - myself included. I've been known to blow up quite spectacularly when people show up at a point where I want to be left to my own devices.

I bring this up for one simple reason: to underscore just how totally bizarre it is that I, of all people, am about to say what comes next. Remember, my telecommuting job consists essentially of sitting in my darkened apartment all day, in complete isolation - and I love it.


It's the People, Stupid.
I've been doing the programming thing long enough to remember more than one fad. A few of them have succeeded, more or less, like Java. Some have crawled away back into obscurity to die in shame. Others have clung to a dwindling yet rabid fan base, yelling loudly to anyone hapless enough to come within earshot that someday the world will wake up, see the truth, and everything will be beautiful and perfect; they exist in perpetual denial over the fact that their time has come and gone, and nobody cares anymore. (I won't name any names; the Kool-Aid drinkers might get offended and stab me in my sleep or something.)

So it's really no surprise to me to watch the Fad Cycle occuring with Agile development: first, it rises from obscurity and enjoys a massive surge in popularity. Then, a few people become openly critical. Next, polarization occurs: those who are "for" the fad line up on one side, and those "against" on the other. The two sides then proceed to throw things at the neutral, undecided people who wander around in between. More often than not, in an attempt to be persuasive, each camp begins chucking large and dangerous items, or even explosive devices.

Eventually, the proponents and opponents work their way up from paper cups to grand pianos to hand grenades. All the neutral people either flee to one side randomly just to escape the devastation, or they get impaled with a flying harmonica and decide to go to law school.

Once the polarization phase is done, both sides decide (for the most part) to just go about their business and leave those crazy "other people" doing their thing. A few vocal people will stick around and halfheartedly lob free convention pens and stress balls at each other for a few months.

Then, the disillusionment phase begins. This is typically accompanied by a massive resurgence in the controversy around the fad, but this time the rats are starting to flee the burning ship. The vocal get louder, the proponents become fanatical, and everyone insists that everyone else is wrong, deluded, stupid, and going to bungle their project if they don't wake up and smell the enlightenment.

After a while, enough people leave the fad to restore a form of equilibrium. In most cases, a few stragglers enter the denial phase, and huddle up in a corner in a fetal position, rocking gently back and forth and whispering about how aspect-oriented programming will return to save us all.


Right now, I think Agile is in the beginnings of the disillusionment phase. The controversy and fighting is becoming louder and more bitter, with no new, intellectually significant contributions on either side of the debate. This is where the shouting match escalates; we've stopped debating the subtleties of chocolate versus the nuanced richness of vanilla, and now we're just yelling and throwing ice cream cones around like blitzed apes.

It's only a matter of time before the 31 flavours run out and we have to resort to using feces.



So what's the deal? Why do people go through this cycle, roaming from one fad to another, in endless search of a magical solution that we all know (deep down) probably doesn't even exist? Brooks told us decades ago that software development is hard, and there's no magic recipe for making it not-hard. Why do we insist on plugging our ears and pledging our souls to the first shyster with a good methodology sales pitch? Are we so addicted to the search for silver bullets that we convince ourselves that we might actually find one?

How can otherwise perfectly rational, intelligent people so devote themselves to what amounts to a massive unicorn hunt? I think the explanation is actually rather simple, albeit a rather depressing commentary on the state of our culture.


Methodology fads, like self-help fads and get-rich-quick schemes, share a single point in common. No, I'm not talking about instant-gratification selfishness, although that does play a role. Underneath the surface, all of these things have one goal in common: to supress the human element.

Humans are imperfect; we're prone to failure. We screw stuff up. We make mistakes. We can be lied to, deluded, or innocently mistaken. We routinely bungle things on all scales, from wearing the wrong colour socks to killing innocent people.

Methodology fads have an unspoken but powerful allure: they promise to mitigate the human factor. They whisper in our ear that if we only embrace the One True Way, we'll stop making mistakes. We'll stop screwing up. We'll stop having to have brutal, embarassing code reviews with that one guy who loves to smugly poke holes in our modules.

We latch on to these fads because, at a fundamental level, we want to stop being imperfect.


This is the fundamental allure of Western commercialism. We're all familiar with the superficial promises made: drink this substance, and women will strip naked and pounce on you on a daily basis. Eat at this restaurant, and your family will love you forever. Wear this brand of clothing, and everyone will respect you. Drive this car (or truck, more often), and you can do anything. Buy this book, and all your difficulty in life will go away.

Fads, commercials, and even cults appeal to a lot of things: self esteem issues, public image issues, skill deficincies, social dysfunction, and so on. For virtually any problem under the sun, you name it, there's probably a 10-step book describing just how to kick it.


Clearly, all of this stuff is bullshit. If it weren't, we'd all be perfect little Buddhas walking around in glowing white robes. The fact that the universe has not suddenly transformed into a utopia is a fairly good indicator that our "cures" are not as effective as we would like to believe. Further evidence is the fact that the cures follow fad patterns: they surge in popularity, then dwindle into obscurity fairly quickly. True cures are timeless and everlasting; they don't disappear from public consciousness as soon as they drop off the New York Times Bestseller lists.

The one thing all these ineffectual half-cures have in common is that they promise us that they will remove our failure. We will stop being imperfect. We will stop making mistakes, causing problems, screwing things up.

All such promises are deadly lies. People will never be perfect. I've known some incredible, remarkably great people, and they're not perfect. Everyone knows it, whether they want to admit it or not. Because of this, we'll never stop making mistakes. We may get lucky, make a good run, have a strong streak - but eventually, no matter how big or small, we'll botch something somewhere along the line.

The real deadliness of fad-cures strikes here, after that first failure. If we have bought into a cure fad, we've probably convinced ourselves that we've gotten it right and we won't screw it up. So, when we inevitably do, it can be devastating. We'll question the fad, ourselves, and anything and everything around us in a desperate attempt to recover. The most insidious fads will tell us that we should expect to screw up, and just be persistent in following the magic recipe; this engenders rabid loyalty. People think that they simply didn't try hard enough, or believe hard enough, or want it bad enough. Maybe they misinterpreted some subtle wording in Step Three and they should go back and try it again. This time, it'll work for sure!

Usually, people will tolerate only a limited amount of this nonsense before moving on to other things. Sadly, some do not; they dig deeper into the dogmatic hole of blind faith, and swear to themselves and everyone around that they're still right - you'll see! Just give it time! They are Linus, passed out in an empty field in the dead of night, still believing that the Great Pumpkin will fly out and deliver joy and perfection to everyone around. Many go to their graves convinced that the Messiah of their choice is just around the corner, and when he shows up, by golly everyone'll be sorry for doubting.


As a species, we've spent thousands of years trying to find the magic recipe. Every group of more than three people in history has eventually started speculating about the answers to Life, the Universe, and Everything. (The enlightened among us are, of course, perfectly aware that the answer is not the hard part.) We all look for our silver bullets, not just in software development but in all of human life. We want to patch off the last of the imperfections and quit having to deal with the icky, slimy, dirty mess of people.

Fallible, flawed human beings can be sticky and grimy. Our baggage, issues, and quirks can make a pretty nasty sludge at times. Is it really any wonder that we crave a way to escape that? Is it surprising that we want to be rid of it?



Yet time and again, we've shot ourselves with various shiny bullets. They look sort of like silver, so we hope they're the ones that will finally slay our demons. And time and again, we discover that the bullet wasn't silver, but merely polished up stainless steel or whatever, and now we've got a gaping bullet wound to deal with on top of the demons, who are now having quite a go at us for being so silly.

The search for silver bullets, in software engineering as in life, will never end up with a cure for our imperfections. All it can do is put a lot of bullet holes in a lot of people.


The most successful people in history are not those who have attained perfection. On the contrary, the successful people are those who have learned to handle failure. Our collective consciousness is slathered with pithy quotes from Newton, Einstein, Edison, and a horde of others; they speak of standing on the shoulders of giants, of dogged persistence in the face of apparent defeat, of sweat and work and getting back up after we've been kicked down and beaten a little bit.

All the great people became great not because they had some magic recipe for perfection, but because they had mastered fallibility.



I am convinced that, in software engineering and everywhere else, we could see dramatic changes in the world if we simply learned to accept the fact that we are not perfect beings. We're not likely to ever become perfect. Expecting and seeking perfection is ultimately destructive and harmful; there are ample tales of warning. I daresay pretty much everyone has had a personal brush with that truth as well.

Instead of trying to find the methodology that will make every software project everywhere instantly perfect, we should focus on what we've got. We're so caught up in the hunt for the Big Answers that we ask stupid questions just so they will line up with the answer we want to use. We get things horribly out of order, and try to organize our lives and projects to fit some idealistic end goal, often without any real consideration for what it is we're doing.

The problem is, it often works... sort of. Someone out there is bound to get lucky, and just happen to have the Big Answer work out for their particular question. These are the people who become the rabid proponents of the fads, the ones who write the breathless testimonials and make keynote speeches at big conferences. They're the ones who write the books, go on tours, and tout their experiences as gospel proof that their fad of choice is the One True Way.

Worse yet, some people will be on the fringe, along the hazy border between the area where the Answer works and where it doesn't. They'll modify the answer a bit (just a bit - not enough to piss off the Holy Prophets) and then go off and become cheerleaders themselves. They supposedly prove that if you just adhere to the spirit of the Answer rather than the letter, and adapt it to your situation, it'll work for you, too! So don't question it, because it can't be wrong; you just haven't suitably adjusted it for your particular situation.


If shooting ourselves in the head with would-be silver bullets was a total failure, we would have stopped millenia ago. There wouldn't be Agile fads and goofy late-night infomercials for machines that will make your unsightly flab go away by whispering Shakespeare to it. The problem is, every time we pop a round in our cranium, we happen to lodge some lead in the pleasure center, and we get a rush. We're blowing our brains out, a chunk at a time, but it just feels too damn good to quit - we're so sure that Next Time it'll work out. The Next Fad will be the One with the Real Answer.

And so we continue to fail to deal with the reality of the situation: that we're not perfect, and mutilating ourselves won't change that.



Let me tell you one thing that will save your bacon a million times over in today's world of cargo-cult fads: nobody can give you genuinely valuable advice if they haven't sat down and listened, extensively, earnestly and honestly, to your specific situation. I don't care how many degrees or years of experience your guru has; if he hasn't taken the time to learn the nuances of your personal circumstances, any advice he gives you is arbitrary. If it happens to work, it's not because he was right or wise or brilliant or Jesus reincarnated - it's because he got lucky.

There's a whole field of people who thrive on convincing people they know more than they do, using linguistic tricks and statistics. That is the domain of con men, TV psychics, and pyramid schemers. Good advice - good guidance - can come only from someone who is intimately familiar with your case. Not one that was very similar. Not one that vaguely involved something related. Yours.


This has two important corollaries. First, and most obviously, any methodology fad is going to work for some people, and not for others. Depending on how lucky the prophets of the fad are, it may work for more people than it doesn't work for; these are the most successful fads. This explains the typical fad-cycle described earlier.

Secondly, and most importantly, the real answer is to look for answers within, not from outside. If your project is struggling, don't immediately run out and try to find a book that addresses your problem. Don't look for a fad that might fix it. If your team is dysfunctional, behind schedule, over budget, or simply playing too much Unreal Tournament on work hours, don't rush around for the first convincing slogan and set of 10 magic steps that sound promising.


Look internally first. Understand and know your own problem. Know the people you are working with. The tools, location, and other stuff is likely irrelevant periphery; we must truly understand that our people are the most significant factor. It's easy to put on a poster, but we must make sure that we truly understand, believe, and practice this.


Know thyself; and, once you know, do what you can, with what you have, where you are.

Adapt to the imperfections of the people you have. More importantly, adapt to their strengths. Sometimes you'll need to add, replace, or even remove some people. Sometimes you may well need to seek the advice of someone who can, from experiential wisdom, suggest how best to make use of who you have. Just make sure the focus is on using what you've got.

Take care of your people, first and foremost. If you're taking care of them, they'll take care of you. It is typical of command-and-control culture to expect people to be amorphous blobs that can be reconfigured to suit our whims; employees and team members are cogs, Lego bricks; they can be reassembled and modified freely for some larger purpose. This is not at all true, and it is a shameful abuse of human beings. Get to know your people, and fit them into the team based on their strengths and weaknesses.



Every team, every project, every situation will be unique. If we focus too much on the generalities that are common to many situations, we will always fall prey to the devil in the details.

If, on the other hand, we learn to master the details, the pecularities which separate our particular situation from all others, we have eliminated the problem. The way to conquer imperfection is not to wish for it to go away.

The way to conquer imperfection is to accept that it exists, and adapt accordingly.
0 likes 9 comments

Comments

extralongpants
Quote:
Methodology fads have an unspoken but powerful allure: they promise to mitigate the human factor. They whisper in our ear that if we only embrace the One True Way, we'll stop making mistakes. We'll stop screwing up. We'll stop having to have brutal, embarassing code reviews with that one guy who loves to smugly poke holes in our modules.

We latch on to these fads because, at a fundamental level, we want to stop being imperfect.


This is the fundamental allure of Western commercialism. We're all familiar with the superficial promises made: drink this substance, and women will strip naked and pounce on you on a daily basis. Eat at this restaurant, and your family will love you forever. Wear this brand of clothing, and everyone will respect you. Drive this car (or truck, more often), and you can do anything. Buy this book, and all your difficulty in life will go away.

Fads, commercials, and even cults appeal to a lot of things: self esteem issues, public image issues, skill deficincies, social dysfunction, and so on. For virtually any problem under the sun, you name it, there's probably a 10-step book describing just how to kick it.


I don't know if all of those kind of advertisements and ideas are trying to make humans less fallable.

From what I've seen and heard, some products play on a sense of emptiness, some play on problems you didn't know you had (and don't actually have), some play on your desire to be accepted, and some seek to, as you say, solve those stupid little problems. In short, some try to make you feel better, and some try to make life easier, and some try to do both.

The most interesting to me are those that seek to convince people that they are missing something in their lives, that there is a void, which only their new product can fill.

Depending on your view, that void either does not exist, or exists but can not be filled by material things (I would liken this to the restlessness in man that Marx describes, as a result of man not being directly connected to the output of his work).

I guess that's beside the point though [smile].


I didn't read your post too carefully, but I didn't see much that mentioned "it's the people", except for the following line:

Quote:We all look for our silver bullets, not just in software development but in all of human life. We want to patch off the last of the imperfections and quit having to deal with the icky, slimy, dirty mess of people.


which logically seems to come out of nowhere, but maybe I misread that sentence. Are you saying that people do not want to deal with other people, or that they do not want to deal with what it is that makes people?

Bah, I'd like to comment more, but I've gotta get to work.

October 04, 2006 10:20 AM
ApochPiQ
Why should such a "void" be significant, though? Is not the implication that you will be "improved" somehow by filling that void? And if so, that suggests that without filling the void, you have not reached your full potential - you're not everything you could be. Isn't that just another way of saying "you're not perfect"?

I think the old Army "Be All You Can Be" ads illustrate that pretty well. The surface statement is, as you say, that you need to have/do X in order to improve. The logical implication is that you are inferior without X.


Quote:Are you saying that people do not want to deal with other people, or that they do not want to deal with what it is that makes people?


Yeah, not my best prose - what I'm driving for is that the magical cures are designed to obscure or "fix" the flaws that people introduce. This is true everywhere from AA (do these things and your alcholism flaw will go away) to management methodologies (do these things and your fallible employees will quit bungling your projects and you will be successful).

I don't think it's some kind of maladjusted antisocial thing - that is, it's not an aversion to people per se - but rather it's an underlying desire for people's problems to quit screwing life up for us. This is fairly easy to observe, in practice: just watch the boss when Joe's Quake fixation causes the third consecutive milestone slippage.
October 04, 2006 10:38 AM
extralongpants
Quote:Original post by ApochPiQ
Why should such a "void" be significant, though? Is not the implication that you will be "improved" somehow by filling that void? And if so, that suggests that without filling the void, you have not reached your full potential - you're not everything you could be. Isn't that just another way of saying "you're not perfect"?

I think the old Army "Be All You Can Be" ads illustrate that pretty well. The surface statement is, as you say, that you need to have/do X in order to improve. The logical implication is that you are inferior without X.


Quote:Are you saying that people do not want to deal with other people, or that they do not want to deal with what it is that makes people?


Yeah, not my best prose - what I'm driving for is that the magical cures are designed to obscure or "fix" the flaws that people introduce. This is true everywhere from AA (do these things and your alcholism flaw will go away) to management methodologies (do these things and your fallible employees will quit bungling your projects and you will be successful).

I don't think it's some kind of maladjusted antisocial thing - that is, it's not an aversion to people per se - but rather it's an underlying desire for people's problems to quit screwing life up for us. This is fairly easy to observe, in practice: just watch the boss when Joe's Quake fixation causes the third consecutive milestone slippage.


Ah, ok, I think that clears things up. I had a feeling that's what you meant, but as it was stated previously, I guess it didn't sound as general as was intended (to me).
October 04, 2006 12:18 PM
Corman
BRAVO! This is getting printed and saved. [grin]
October 04, 2006 04:28 PM
nedruod
You make a compelling argument, but unfortunately you make one of the most common blunders in your misuse of the silver bullet phrase.

Brooks never meant that there were no solutions, just that there were no complete solutions. Your analogies take an interesting twist, as you seem to realize that a bullet is a bullet even if it's not silver, but for some reason you believe a non-silver bullet is destined to end up in your foot or your head.

The problem is that we're not fighting mystical werewolves, just normal old wolves. They'll still rip our throats out if we're not careful. Silver bullets aren't any better than normal bullets. Stainless steel bullets work just fine, but because they're big wolves it may take more than one, and there are lots of wolves.

Most importantly, we have to aim when we shoot, which in the end is your conclusion. But somehow you believe we're better of throwing rocks than picking up the gun. A well aimed rock is better than a poorly aimed gun, but the two are not in opposition.

We need both sides to be effective, and criticizing everyone who works on the general problems does little good. Realizing that you have to do more than mindlessly follow their discoveries is worth a lot, but totally ignoring them is dooming you in the long term to solving every problem from scratch.

People should realize, the pundits, the evangelists, even the critics have a different job than those on the front line. Of course they can't speak to your specifics, that's your job!

Oh well, I am always disappointed by smart people who are so negative. People who go to such great lengths to poke holes in any effort of change, who advocate the status quo so blindly.

You say:
"Clearly, all of this stuff is bullshit. If it weren't, we'd all be perfect little Buddhas walking around in glowing white robes. The fact that the universe has not suddenly transformed into a utopia is a fairly good indicator that our "cures" are not as effective as we would like to believe."


See it hardly matters whether something is as effective as we would like to believe. All that really matter is whether it is effective at all. It's not all bullshit just because it's not perfect. You're out here screaming "If it's not perfect, IT'S CRAP!" That's as zealous an argument as those of any pundit or evangelist.
October 04, 2006 08:07 PM
ApochPiQ
Err... I think the bullet analogy has officially collapsed. I was just riffing off the original "silver bullet" concept to paint a picture of damaging violence. Please don't read too deeply into the significance of that. [smile]


I'm not at all against people working on general problems. However, there is a tendency for these people to present their solutions as ubiquitous rather than general. Worse, people looking for solutions often find a general one, and will assume (even with ample warnings to the contrary) that it could work for them. This is the real problem.

In my real-world experience, I've seen plenty of cases where people have settled for a general solution merely because it is general. Often times it wasn't even designed to solve the real problem in question. Cherry-picking cool, general solutions is worthless if we don't guide our choice of solution based on careful introspective examination of the problem itself. That introspection - particularly, the willingness to come to terms with the fact that people are largely imperfect and always will be - is shockingly absent from the majority of business and managerial decisions I've seen.



Nor am I against things which are not perfect. That's my whole point - that we are human beings, and nothing we do will ever be perfect. We must learn to cope with imperfect situations by working with the people who are involved in those situations. I'm not looking for perfection - quite the contrary. I'm calling for us to draw upon our imperfection.


I'm also not sure how you get the impression I'm against change or "advocating the status quo". If anything, I'm bitching excessively about the status quo and whining about how we aren't changing fast enough [wink]

I do appreciate the counterpoint, though; I'd be interested to hear your views on the issue.
October 04, 2006 08:48 PM
paulecoyote
Indeed, the last part is particularly true. Being pragmatic in your approach and knowing what would work with your own people, by actually listening to them, and you'll achieve great things.

Guy at google has very similar views to you (and man, does google sound nice to work for!)
http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html
October 05, 2006 04:45 AM
nedruod
You say you believe imperfect is okay, but only about half your arguments say that. It seems more like your willing to accept imperfect people, but not imperfect tools or solutions.

I hear what your saying about the belief in ubiquitous solutions, and that description is much close to Brooks intentions. The biggest problem with belief in a ubiquitous solution however is not that you might attempt to use it, the biggest problem is that you'll begin to ignore all the other possible solutions.

While blind belief in a false solution is probably the worst state to be in, blind belief that all solutions are fads isn't far behind.

I'd also add that sometimes, picking a general solution because it is general is the right thing to do. If your working on a large project, or in a large organization that needs a common base, a general solution is your best bet to establish that base.

I'd agree that dogma and fear encourage the choice of, or at least too strict an application of, the general solutions far too often. Still if your argument against that solution is that it sucks because it is general, you'll make little headway in dealing with the root cause, fear.

By the way, I don't at all disagree that people have a hard time accepting imperfection. It's not the final conclusion that is flawed, it's the corrollaries you touch on along the way. In fact, it's not all that different in theme from one of my posts.



October 07, 2006 12:02 AM
ApochPiQ
It's important to remember that I'm not trying to deal with the validity or applicability of any particular solution here; indeed, as I noted, all the good fad solutions gain acceptance precisely because they are at least partially valid and applicable to any given situation.

I'm not trying to say that you should never use a solution you didn't come up with from scratch; rather, I'm saying that every decision (including/especially selection of solutions, methodologies, et. al.) should be done in light of the human element involved. Particularly, the strengths and weaknesses of one's people must be considered.

Let's take a great example: Brooks' "surgical team" structure. I have to admit I would love to work on such a team. I can immediately see huge benefits from that method, and tremendous potential for success in its application.

Yet I have never suggested we adopt it at work, nor am I likely to do so. Why? Because of the way domain knowledge is spread across our team. Diving up our existing people into a surgical model would put a couple of our best coders into positions where they could no longer work as effectively, because of what they know and understand about our code base and technology. The more strictly we adhere to the particulars of that solution, the more likely we are to squander our people.

So the model we end up using in practice is similar, but sort of mutant - a few people blur across roles and so on. It isn't optimal, but it's workable, and it makes good use of the people and their skills that we have right now. If I could start a new team and hand-pick individual members, it'd turn out a hell of a lot like a Brooks surgical team. But that general - and very valid and applicable - solution doesn't fit the realities of our particular case.


I've reread this blurb a couple of times and it's apparent that I really totally failed to communicate the thoughts I have on the subject, at least in a clear way. This is fairly high on my list of past entries that I want to rewrite, edit a bit, and present more coherently. I think a lot of the hyperbole and melodrama obscures the actual points I wanted to make.
October 07, 2006 12:12 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement