Friday, March 5, 2010

Faces of Failure

My last post discussed what I called "Dimensions of Failure". At the end of that post, I promised I'd look into some causes of failure this time. Unlike the last post which drew heavily on knowledge I'd accumulated from other authors in addition to seeing how things played out in real life, this one will draw mostly on those real life experiences.

It really needs to be said: Most software projects do not fail for reasons related to technology (please notice the use of the qualifier "Most"). Most fail for other reasons, those reasons are either a failure to understand the real nature of the need that is driving the project in the first place, or people issues. I'm going to look more at the people aspect this time around.

These may be machines we work on, but software development is a craft. There's nothing scientific about it at all. It is not created by artists, but rather artisans. I've ceased thinking of myself as an engineer (regardless of job titles), an architect (blah), an analyst (that's a job function, not a job position), and certainly not a manager (that sound was me running screaming out of the room). I am a creator of software.

I say that because the impact of the people that you have on a project is critical to the outcome of the project. Understanding what kinds of people you have is also critical. You may have had 3 really super developers last time, this time you have 5 wet behind the ears college grads. Last time you had some real passive aggressive types, this time you have people who are willing to fight to the last over any point. Without understanding the capabilities and personalities you have, you will operate far less efficiently. When a project begins failing, the personality types of the people on that project will dictate how they contribute to that failure. Usually, the very strengths that make them an asset when things are going well also dictate how they will be a detriment when things are failing. So, what kinds of people do you have on a failing project (again, from what I've seen)?

The Hero

If you just had three more people like the Hero, you'd be successful, right? If it's hyper-critical, if it looks hard, you give it to the Hero. The Hero has probably been around the project the longest, knows exactly what to do, gets it done quickly, etc.

The problem with the Hero in failure mode is precisely the fact that everyone starts leaning on him or her. This turns into a situation where Hero can't keep up to all of the demands. The situation is further exacerbated by the Hero becoming more and more intimate with the inner workings of the application while everyone else becomes less and less intimate because you're leaning so heavily on the Hero to do anything. You need the Hero knowledge sharing, mentoring, and driving, not being isolated to "just get things done".

Needless to say, the Hero becomes a high risk for getting another job at exactly the worst possible time, or turning into the Burn Out, Lone Wolf etc. Anyway you slice it, the Hero is an asset, so really, addressing the negative aspects of the Hero consists of getting the project back on track. Of course, that may not be possible. If that's the case, guard the Hero against slipping into one of the more dangerous types.

The Martyr

Related to the Hero, and perilously close to being a Wannabe Hero is the Martyr. The Martyr wants to be a Hero, but unlike the Wannabe Hero, isn't actually out and out destructive. The problem with the Martyr is they are willing to grind themselves (any anyone else willing to join them) into the ground to get things done. They put in long hours even when not needed. They volunteer for the worst tasks. They are the ones on the plane to Chicago in January and so on. 

They are close to being the Hero, but they don't have the skills and/or knowledge of the application to quite make it to Hero status. Meanwhile, the long hours, the constant throwing themselves in front of the bus "for the team's sake" exacts a toll. Inevitably the quality  of work suffers because they are tired and if you're lucky, they turn into a Burn Out. If you're not lucky, they turn into the Wannabe Hero.

Often, building trust with the Martyr can help them to get out of the habit of killing themselves. If you can show them that they can be appreciated for doing a more normal level of work, then they'll cut it out. Sometimes, that's not enough though because this really is part of their make up. In that case, I don't have an answer for you other than to try to understand their motivations.

The Wannabe Hero

The Wannabe Hero is pure evil. The things that make someone a Wannabe Hero are not at all strengths. They are selfishness, ambition and unmerited pride personified. The Wannabe Hero is the person who appears to be a Hero, or at least a Martyr to everyone but anyone who has to get intimate with the work they do. The work they do is pure garbage, causes more problems than it solves, and yet they get credit for a "wonderful job" and "working hard". 

All to often, the reason they are "working hard" is because they are incompetent or mentally lazy. They are making mistakes and having to put in long hours to make up for it. Hang around the software business and you'll hear a story similar to this over and over again...

"I joined a new company where everyone talked about so and so and how wonderful so and so was. Whenever something broke, so and so knew just how to fix it. So and so put in long hours and was the darling of management."
"After looking at the work so and so did, I realized that all of the problems were caused by so and so. Within two weeks, I was able to straighten out almost all of the issues. Of course, I never got so much as a pat on the back for it, but I also slept at night and got weekends off."

Sometimes, you get a Wannabe Hero out of the person who was once the Hero because they got overwhelmed and pride got in the way. They couldn't keep up, but the promotions, bonuses, etc kept coming until the Peter Principle reigned supreme again. They don't know the way out without being looked on as failures, so they end up in a death spiral.

If you can catch the Wannabe Hero early enough, then you can probably provide a soft landing for them and get them out of the death spiral. Otherwise, you're going to end up having to "repurpose" them or flat out get rid of them. In short, avoid the Peter Principle, and the Wannabe Hero usually isn't an issue.

The Lone Wolf

The Lone Wolf was often a Hero at some point. Now, they are afraid of letting their work depend on anyone else, so they do it all. The main problems with the Lone Wolf is they never mentor, they want nothing to do with any kind of meeting or status reports, and after a while, no one really knows what they are doing. The Lone Wolf is a particular breed of Hero, Wannabe Hero, or Martyr in all reality. The main thing that sets them apart is the fact that they are really good at working by themselves and very bad at working with others. They kill projects because no one knows what's going on, but are relying on them anyway. Or they kill projects because they don't work with anyone else, so they only integrate their stuff at the last minute.

Force them into the light. They will either bail on you or get it together and work with the team. But, don't expect it to be overnight in many cases, so don't try to go too fast with the lightbulb. If they are a Lone Wolf because in real life they are a loner, it's going to be a slow process and you really are just looking for them to be communicative. If they are a Lone Wolf because of trust issues, work on the trust issues. If you find yourself a Lone Wolf, ask yourself why? Really, most people don't suck, and if you think you are that good, let me tell you, most of the really good people I've met are really humble as well.

The Complainer
It sucks. Whatever it is, it sucks. You know that meeting we had yesterday? It sucked. You know the team dinner we're supposed to have tomorrow night? It sucks. 

The new tools? They suck. The PCs we have? They suck. 

You get the drift. The Complainer can't see the silver lining in anything. They destroy morale so quickly that they turn everyone else into Complainers or Burn Outs. When you're particularly unlucky, the Complainer is also a Warrior, but usually they're more passive-agressive than that.

Now, I grew up in New York, so I'm legally entitled to complain. Complaining itself isn't horrible. When things are going badly, you need the cathartic effect of complaining to just air it out. Or, the person's got some other issues going on and complaining about work is 'safe'. Shoot, sometimes they're just the voice of the rest of the team and act as a safety valve. If that's the case, let them blow the steam! If it gets too much, then my advice is stop and listen to them! Sometimes, the Complainer complains constantly because they don't know how to affect change and they will calm it down if they know others are willing to listen and act. Other times, they can't deal with reality. If that's the case, put them on the hook for solving problems instead of just raising the issue and they might just learn the reason why everything isn't perfect is because there's just not enough hours in the day. Either way, this is actually a person who can be handled much of the time. 

A subset of Complainers are actually Blamers. Whereas the Complainer is frustrated in someway, the Blamer is usually either afraid of losing their job or has low self esteem. The Complainer can haul a project into the ground because they destroy everyone else's drive. The Blamer shoots the project down by causing friction and division. The Complainer can sometimes be handled easily, the Blamer usually is a lot harder to deal with. The Blamer is usually a Blamer because of a lack of trust that they won't be the first tossed under the bus when it comes along, so you need to work on that trust with them.

The Warrior

Got someone willing to fight it  out for a worthy cause? You've got a potential Warrior. The Warrior is a great asset to have when things are going well because they won't let people derail you. When things are going bad, they are also fighting to "make things better". Hey, they can remember when they stuck to their guns and it worked, so it's got to work again, right? 

The Warrior often gets to a point where they get frustrated and they fight with everyone. That's where the problem starts. They can drive a team apart quite quickly. Sometimes you get lucky though, they get everyone else pulling together because they all hate the Warrior. They also burn a ton of energy fighting and frequently sit and stew when they can't fight for whatever reason. This leads to lost productivity in lots of ways.

Really, the only way to deal with the Warrior that I know of is to come at them head on. Confront them with what they're doing and let them know you don't like it. If they listen, great. If not, you're in trouble. Otherwise, try to deal with them like a Complainer, because they probably are just a more agressive Complainer anyway.

The Pacifist

Worse than the Warrior is the Pacifist. When things are going well, the Pacifist calms people down when they are getting a bit excitable. The problem is that it's not because the Pacifist is a sworn peacemaker. The problem is the Pacifist is afraid of conflict and can't stand when there isn't peace. When it comes to Fight or Flight, they flee. Always. 

The problem is they can create a team situation where no one can air the dirty laundry. When a problem needs to be dealt with that will cause disagreement, as soon as the volume goes up, the Pacifist tries to table the discussion. The sense of repressed feeling builds until no one is talking to one another. No communication makes failure a very short road. If a project is in trouble, you need to deal with problems and sometimes, or oftentimes, there will be disagreement. If you can't get people talking, you won't solve the problems.

A manager who is a Pacifist and not a peace maker can turn a successful project into a failure just by ending every disagreement by declaring it over before everyone who has a point of view can say it. Problems are swept under the carpet and never dealt with until the backlog of problems overwhelms the team. 

Short term, the team needs to figure out how to not punch the Pacifists Fight or Flight button when in a disagreement. Some Pacifists will be able to get over their pacifism if they see the team is able to argue without imploding. Others never will. Work on calm disagreement.

The Defender

You know the Defender. They have their territory and won't let anyone else into it if they can help it. In this way, they can be a bit Lone Wolfish, but the Defender is probably willing to share their territory with someone else who they perceive as having the same project focus. Usually, the obvious place for defenders is as DBAs. Business Analysts and UI designers often can turn into Defenders as well. The short of it is that they probably have some special skill, or special understanding of an area of the application and are afraid to trust anyone with less knowledge than them. Sometimes this also just comes out of pride... They think they did a really good job in building "x" and don't want anyone else messing with their "baby".

Defenders can sometimes be dealt with by requiring anyone who needs to work in the Defender's "territory" to have their work reviewed by the Defender. If they see that it's not the end of the world, they will loosen up. If they find lots of problems, maybe they weren't so wrong!

The Burn Out

Anyone can turn into the Burn Out. You know the Burn Out. They've fought and worked hard, but got nowhere. I once heard a pastor describe burn out this way: "Working hard doesn't cause burn out. Burn out is caused by working hard and not getting anywhere." Now, the Burn Out just coasts if you're lucky. If you're not lucky, the Burn Out can't really do quality work anymore and primarily operate as a bug factory.

Usually, giving them a break from the same old grind is sufficient to snap them out of it. Vacation can help acute Burn Outs, but worn in chronic Burn Outs probably need re-tasking. Even a week of re-tasking can sometimes help dramatically. Or, shake up the project in other ways.

Overall, Burn Out is usually a condition, not a personality type. A change of pace, scenery or a breather can remedy the condition. 

All Mouth, No Ears

I've saved this one for last because unlike the rest, this is a real project killer. All Mouth and No Ears is that decision maker who has the plan and doesn't mind telling you. The problem is that they won't listen to anyone else. When contradictory evidence comes up, they raise the reality-denial-bubble and pretend it will go away.

This is a big problem when this manifests in management and stakeholders. The team can scream til they're blue in the face that the deadlines are unreasonable, but they will still find themselves committed to the same death march. In fairness, often this manifests due to the downhill nature of pressure and may not be avoidable in that instance.
A phrase to look out for is "This project is too important to fail." You are dealing with All Mouth, No Ears. In this case, they will just try throwing more people, working longer hours, etc, etc even when alternatives are presented. "This project is too important to fail" often leads to singleminded-ness. I'm here to tell you that every time I've heard that, the project failed.

What to do? Initially, fight the battle. I would not focus on just shouting about them trying to shove 10 pounds into a 5 pound sack. I would seriously recommend trying to find an alternate route or a minimum route. There may be some gold plating someone is trying to inject. Get down to essentials, and it may be achievable.

If you can't win it, then either resign yourself to taking the paychecks or get another job. Ultimately, it's their money, they can do what they want. Your responsibility is to advise. To do otherwise is unprofessional. It's well within your rights to refuse to death march, but the right way to do that is to not sabotage the project. Sometimes, you're just being nervous and things will work out. However, your resume is up to date, right?

Firing in the Dark

Now before you think I'm being a snob, I'm sure I fit into a couple of the categories above when things go bad. So do you. What is important is to realize what's happening and you can redirect the strengths of yourself and others back into a positive direction.

I once posted a comment on InfoQ  containing this little rule of thumb...

CMM and its ilk are designed to minimize harm by bad behaviors and less skilled people, whereas an Agile methodology seeks to empower its people. CMM=minimize risk, Agile=maximize productivity.

The short of it is that when you have a team you can't really trust, you need to be heavier handed. I hope that lack of trust is just that there's less experience and folks need more guidance. Otherwise, why are they still around? I don't think this means waterfall type methodologies, but I do think you need to be, umm, agile in how you approach how light or heavyweight a process you use depending on relative skill level of the team.

Above all, don't treat people like machines. Treat them as individuals and you may get lucky. Most people in development actually want to be contributors. They want to reap what they sow. Make sure they can, and you will even be able to be successful when things do fail. At the very least, being able to say you gave it your best shot is worth something. 


A last line disclaimer... I'm up way too late typing this. Some of this may not make much sense, so comment or private message me. I'm not afraid to revise. If I've offended you, I have no intention of doing so. I'm sure something I've written will hit close to the mark for some. As I said earlier, your strengths often dictate how you react when things go wrong. As such, if I am hitting close to the mark, I'm probably speaking as much to your strengths as weaknesses. We're all human. Failure is our normal state!

0 comments:

Post a Comment