Los Techies : Blogs about software and anything tech!

Qualities that Undergird Agile/XP Development


 

The six core values of XP, as elucidated by Kent Beck in Extreme Programming Explained, 2nd Edition), provide a strong backdrop for the principles and practices he exposits in the book. But while preparing an introduction to XP/Agile for my colleagues this week, I became intrigued by something that had been lingering in my subconscious. I kept feeling like something more fundamental was necessary for me to understand in order to be able to fully explain the philosophical underpinnings of XP in a way that would make sense to my audience.

While reflecting on what I was feeling, I remembered something AgileJoe said was one of the primary qualities he looked for in a developer: humility. Then I remembered that Kent Beck says “the key to XP is integrity” (p. 159) and that integrity is defined as acting in harmony with one’s values.

As part of the Tae Kwon Do training my son and I went through, we had to memorize something called "The Five Tenets", one of which was humility. The illustration provided to us showed someone kicking high on a dummy target and feeling very proud of himself; then someone came along who could kick higher. The lesson was that no matter how good you are someone else will eventually come along who is better. Be proud of accomplishments to date, but maintain a mentor’s heart and a teachable spirit.

As well, I recall reading about how the Jewish sages teach that even great masters can learn from the most novice of students if the master remains attentive to the gifts and opportunities each student offers.

This was feeling good, so I continued down that mental pathway and set about trying to put together the "best of all possible worlds" list of qualities and attitudes that support the values XP espouses. Among a host of other things, I felt that Agile/XP development means:

  • Taking personal responsibility for continuous self-improvement ;
  • Appreciating and encouraging the unique talents of each team member;
  • Assuming our teammates are doing their best, unless proven otherwise;
  • Holding each other accountable for demonstrating XP’s core values;
  • Holding each other accountable for adhering to the principles and practices agreed to by the team;
  • Understanding when a team member is weak in a given area and providing support for their own self-improvement;
  • Being slow to judge and quick to encourage;

As a result of this line of reasoning, I began to feel that the two most important qualities of a good Agile developer are integrity and humility. Taking a look at each of the above (feel free to add more, as I’m sure I have not thought of them all), it is easy to see how some require integrity, some humility, some both.

Practicing these things in a team setting, fosters a safe, non-judgmental environment. And in a safe environment, principles and practices that align with XP core values have an opportunity to flourish. Without these, true collaboration is not possible and in the end, everyone suffers.

But, this cannot happen by prescription. On my last team, one of the team leaders once talked about more rules when he didn’t feel developers were switching pairs frequently enough. This caused resentment among some team members who felt like they were the best at determining when it was appropriate to switch pairing partners. That’s a tough situation. In the end, if humility and integrity are practiced, core XP values begin surfacing and situations like these are resolved and the team moves on.

In my humble opinion, people who don't practice these things in their own professional lives stifle Agile/XP development. You can't talk Agile then criticize someone coldly when they ask a question; or talk badly about them behind their back.

The values, principles and practices of XP require changes in us, many of which fly in the face of traditional development practices and office political settings. XP requires an environment in which communication and feedback occur unhindered, in which failure is understood and utilized for ultimate success, in which improvement is a natural process and opportunity abounds. These and other XP principles and practices require the cultivation of an environment that is safe for all members of the team.

If individual team members nurture these basic attitudes of humility and integrity in their own hearts and minds, fear (and the silence and self-defensiveness it engenders in team members) is minimized. This helps till the soil and provide fertile ground in which collaboration and innovation have a place to take root.

 

[Originally posted 12/1/2008 at http://agilecruz.blogspot.com]

Kick It on DotNetKicks.com
Posted Feb 10 2009, 07:11 AM by Chris Taylor

Comments

Dew Drop - February 11, 2009 | Alvin Ashcraft's Morning Dew wrote Dew Drop - February 11, 2009 | Alvin Ashcraft's Morning Dew
on 02-11-2009 8:48 AM

Pingback from  Dew Drop - February 11, 2009 | Alvin Ashcraft's Morning Dew

Daniel Teng wrote 关于“敏捷以及极限编程所需要的品质”
on 02-14-2009 11:59 PM

Add a Comment

(required)  
(optional)
(required)  
Remember Me?

Enter the numbers above:
Copyright Los Techies 2008, 2009. All rights reserved.
Powered by Community Server (Commercial Edition), by Telligent Systems