Posts Tagged ‘software architecture’

The blind men and the elephant

Tuesday, March 31st, 2009

There is a classic Indian tale about blind men and an elephant:

Once upon a time there was a certain raja who called to his servant and said, ‘Come, good fellow, go and gather together in one place all the men of Savatthi who were born blind… and show them an elephant.’ ‘Very good, sire,’ replied the servant, and he did as he was told. He said to the blind men assembled there, ‘Here is an elephant,’ and to one man he presented the head of the elephant, to another its ears, to another a tusk, to another the trunk, the foot, back, tail, and tuft of the tail, saying to each one that that was the elephant.

When the blind men had felt the elephant, the raja went to each of them and said to each, ‘Well, blind man, have you seen the elephant? Tell me, what sort of thing is an elephant?’

Thereupon the men who were presented with the head answered, ‘Sire, an elephant is like a pot.’ And the men who had observed the ear replied, ‘An elephant is like a winnowing basket.’ Those who had been presented with a tusk said it was a ploughshare. Those who knew only the trunk said it was a plough; others said the body was a grainery; the foot, a pillar; the back, a mortar; the tail, a pestle, the tuft of the tail, a brush.

Then they began to quarrel, shouting, ‘Yes it is!’ ‘No, it is not!’ ‘An elephant is not that!’ ‘Yes, it’s like that!’ and so on, till they came to blows over the matter.

This is the buddhist version — there are other versions. Buddha used this parable to make a philosophical point about the relativity of one’s perspective.

Elephantine perfectionWhen we develop software, it is important that the various members do not feel like blind men examining an elephant. While different perspectives are essential to avoid a dogmatic approach and foster creative thinking, everyone should still agree on what is actually being developed. Reconciling people’s perspectives around a common project is a good way to avoid conflict and ensure that everyone is on the same wavelength.

It is the role of software architects to bring their vision to the rest of the team but also to take everyone’s perspectives into account and include them in a common project.