A Great Quote
If you're writing code and you're not testing it, the code is wrong. I don't
care if it does the right thing, and people need to understand this. If it
works by accident, you're still wrong.
Bryan Liles - Ruby Hoedown 2008
Overcoming the Stockholm Syndrome for Agility
Back in December Chad Fowler posted on dead end jobs and the Stockholm Syndrome. The Stockholm Syndrome is "a name given to the condition wherein hostages develop positive feelings toward their captors despite being held in negative, unfavorable and even life-threatening conditions. Victims of Stockholm Syndrome will even inexplicably stay with their captors even when given the chance at freedom." Chad goes on to examine how this can happen in the workplace. You can read the entire article here.
http://chadfowler.com/2010/12/30/dead-end-jobs-are-you-suffering-from-stockholm-syndrome
Recently a colleague shared a Dilbert comic that drove home something that I had been saying for a while.

Though the Dilbert comic is funny the sad thing is that the threat of "not being a top 20% performer" or "do this or we will fire you" is something that affects way too many sotfware engineers in various organizations. Far too many of these engineers are the lower 80% of pool*. The top 20%-50% know what they are worth, get frustrated and leave. While Agile is supposed to provide a safe environment where empowered engineers can say "no", this is not really the case in these shops that are attempting to be Agile.
Right now the engineers who are empowered are the ones who know what they are worth in the open market and are not afraid to say "no". They are not afraid to say "no" to long hours on a project that was severely understaffed and given an unrealistic timeline. They say "no" to missing a scheduled vacation, professional conference, being asked to take time away form activities that keep them current/focused/productive to participate in the latest project fire drill. They say "no" to hacking together code because they take pride in their work and feel that professionalism means that you hold yourself to a certain standard of software quality**. They reject arguments that you must idiot proof designs for engineers with a low skill level (net negative producing programmers). These threats are meaningless to them because they know what is happening in the industry, and know that these threats, and the harsh words that they receive from management for doing the right thing have as much credibility as a drug addict lashing out at their counselor. For these individuals, if management follows through with the threat of firing them they will have another job, probably with a pay raise within two weeks.
Agile is all about people over process. CMM, due to it's inefficient nature has a larger tolerance for the lower performers. Agile on the other hand doesn't function unless you have 60%-70% top performers. When you put together a team of these top performers, get out of their way and let them loose it is amazing to see the innovation and velocity that comes from these teams. I have seen it first hand.
But many of the failings of Agile efforts go beyond engineers and are often are rooted in having non technical people running a technical projects. It is a recipe for failure. If you are running a software project, selling it or whatever and you do not understand the process of developing software and do not have a deep understanding of what works, what doesn't work and the current industry best practices then there is a high likelihood that your effort will either fail or produce sub-standard results ***.
One of the best frames of reference I have for this is the start up community. There are lots of business-type people who have ideas for companies that are strict technical plays. There is just one problem, they have no idea about tech. Every time I see that, I can predict the outcome of that startup. The other anti-pattern is when you have a technical team but take Angel money from someone who has no idea about tech start ups. These companies have a much higher failure rate because grossly under-qualified individuals are empowered to drive insane decisions that, in many ways are not unlike the requests/demands we get for fixed scope/fixed budget projects using antiquated/inappropriate technologies that generate lots of content for sites such as the daily WTF. The sad thing is that they create a lose-lose situation for both parties.
As we move into the next decade and beyond society has a large number of problems ranging from demographics to addressing our future energy needs. Many of these problems are going to require automation and software to solve. This is why every industry expert is pridicting that demand is going to continue to be higher than the supply for the next 20 years. The winners are going to be the ones who are able to effectively attract and use this scarce and valuable resource to solve these problems. When workers end up developing The Stockholm Syndrome it hurts the employees and the company. But more importantly it hurts society and man kind because that is one less engineer that is working on solving real problems that to improve the life of everyone.
* Look for a posting in the near future on Net Negative Producing Programmers and how they kill Agile projects.
** Bob Martin (uncle Bob) has some great articles on software craftsmanship here http://www.artima.com/weblogs/index.jsp?blogger=unclebob
*** The most dangerous are those who think they understand it but don't.