Stupid Human Programming
Talk on software development.








Subscribe to "Stupid Human Programming" in Radio UserLand.

Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.


Sunday, August 14, 2005
 

Ritual as the Basis for Project Harmony in a "Means" Vs "Ends" World

"In rites at large, it is always better to be too simple rather than too lavish.
In funeral rites, it is more important to have the real sentiment of sorrow
than minute attention to observances."

-- Confucius in the Analects

I was struck recently by the similarity of the role of ritual in Confucian philosophy and the role of ritual in Agile projects. The system of thought put forth by Confucius tries to create a world where people can live together in harmony without resorting to uncivilized behaviour. You think I am stretching here? We'll see...

Confucius was motivated by his times. He lived in what was called the Warring States Period. Battling warlords made life difficult for your average person. For simplicity, this era will play the waterfall methodology "big process up front" role in my analogy :-)

Deeply concerned about creating a better world in which to live, Confucius proposed ritual as a key civilizing influence. So does Agile.

What you say? We are programmers, we don't need no stinkin' rituals! Hold on now. Don't get your editor in undo mode.

Let's consider just what ritual is: ritual can be thought of as respect for the the deepest sense of proper way of doing things.

Isn't that a fine Agile principle?

On a project you could could consider ritual the pattern of disciplined behavior which governs each moment in the life of a project.

Now does that sound bad?

Without the bonding of ritual there isn't order. Why? Because people learn proper relationships through ritual. Ritual promotes harmony by showing everyone how they should act and interact without using a heavy hand. He who governs best governs least. Using ritual everything just sort of happens and fits together. In a world where everyone is looking to kill each other you can see how you might want ritual to coordinate social situations. Modern software projects aren't so different at their base.

Ritual is all around us.

Shaking hands is a ritual. You know when it is done badly or done without enthusiasm. Shaking hands is automatic in social situations. Someone who doesn't shake hands would seem rude. Without the ritual of shaking hands however we would be confused about how to greet each other. It's not the shaking of hands that is important, what is important is we know how to greet each other in a harmonious way.

Tipping is a ritual. Parking is a ritual. Driving in traffic is governed by ritual. Saying god bless you to a sneeze is part of ritual. Violating most of these rituals is not the same as breaking a law. You don't have to tip. You don't have to say god bless you when someone sneezes.

You don't have to shake hands. You can sneak into a parking space even if someone was there before you. You can cut someone off in traffic. But when you violate these rituals you are making it harder for people to live and work together.

Yet slavishly following an etiquette book would seem weird as well. Ritual is the wrapper on chaos. You can go cowboy in your process. You can go bondage and discipline too. Ritual provides a middle way by showing people how to act without having to have a centralized coordinator. This is Agile path as well.

Ritual is not just the unthinking adherence to form we see on so many projects. Confucius is quite clear that for rituals to work they must come from genuine feeling and awareness. Only then will they work. Social engineers are the masters of inauthentic ritual. So are politicians. Both can cause enormous damage.

Rituals are all over the place in Agile. Look at the many practices of XP. Scrum, for example, requires morning meetings that say how long they should be, who should attend, who can talk, and what questions are to be asked. And so on. I won't go into details, they are there for everyone to read.

If a project adopted both Scrum and XP you would see how most of your working life would become governed by ritual. That's not a bad thing. To the contrary, it's the backbone and the strength of the approaches. The rituals of an Agile methodology tell everyone how all the parts of a project interact and relate, they define right relationships, they define right roles, they define right practice, and they define their harmonious interaction.

Having interviewed hundreds of people I can say very few people have any idea at all of how to develop software in a team. Disaster is almost inevitable when you toss all these people together onto a project. Most people are lost without the well defined rituals of an Agile project.

Ritual exists in waterfall projects too, but waterfall is mainly about ends and not means. An Agile project is mainly about means, not ends.

What do I mean by that?

Means versus ends has been a running theme through philosophy for thousands of years. Do the ends justify the means? As long as you attain your end goal do the means you use to get it really matter? Or should you never use immoral means, regardless of the ends? Both can be easy positions to take. The messy middle, however, is where most of us live.

In software means vs ends is more a matter of methodology. We think of waterfall projects as heavy on process. A heavy process seems seems like means, but it's not. A waterfall project tries to guarantee an end, defined by a specification, by trying to define everything up front. It's the end that matters and the actual means of producing the software are secondary. The thought is if you are rigourous enough then you can think of everything and that guarantees attaining the end.

If you've been on a project you know exactly how concentrating on ends happens. Countless times I've heard from a manager something very similar to the following: we need to deliver in 3 months. I want to know how we are going to get there. How many resources do we need? What can go wrong? How are we going to handle every contigency? We can't scew this up. The future of the company is resting on it. What's our plan?

Fear drives the need to be certain about guaranteeing an end. The only way most people can think of to reach an end is by up front planning.

Decades ago W. Edwards Deming, the Sage King of quality, had a different vision. Deming taught:
* Quality is conformance to process rather than conformance to specification.
* Cease dependence on quality control to achieve quality, instead focus on quality assurance throughout the lifecycle.

This is the approach Agile follows. If you use the right means, then the result will be correct. You don't have to focus on the ends. Do the right things in the right way with the right people and the result will be what you want. You don't have to plan for every eventually up front. You can adapt and problem solve as you go.

Confucius also thought like Deming. Confucius wanted a civilized society. He didn't advocate passing a law saying "be civilized." He knew that would not work. To reach his desired end he concentrated on means. Confucius advocated standardizing the means through which a society interacted, that is its rituals, knowing that would almost invisibly produce a civilized society. There would be no heavy hand forcing people to be civilized. It would naturally happen through the weight of tradition.

Confucius was very agile, in his own way.



comment[]

8:58:07 PM    



Click here to visit the Radio UserLand website. © Copyright 2006 todd hoff.
Last update: 7/11/2006; 12:43:33 PM.
August 2005
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
Jul   Sep