I believe respect is one of the corner stones of agile teams. In my mind agile software development was always first and foremost about people – the practices and processes we use now are secondary and less important. It is all about how you deal with people, how you treat them, how well you are able to collaborate etc. Even technology must take a back seat considering that any non-trivial piece of software these days will be built by a team of people (rather than just one individual) and even the coolest technology in the world will not be able to make up the deficit when the people in the team are unable to work together. It therefore should come as no surprise that 2 out of the 4 points in the Agile Manifesto are centered around people:
- Individuals and interactions over processes and tools
- Customer collaboration over contract negotiation
There has been a tremendous amount of literature written about how to get people to work well in teams. When a company/projects can get it right – astonishing results have been achieved, but despite all the studies and guidelines on the subject, to this day the elusive factor that makes a team click is more often than not pure chance (with elements of premeditation, but chance nevertheless). Which leads me back to where I started – respect.
I am not saying that respect is the single factor that will make people succeed when they work together, but it is certainly a major component.
Respecting Those You Work With
Can you respect absolutely everyone you work with? It is a tough question and if we’re honest with ourselves, the answer will have to be no. We respect certain qualities and attributes, these are the qualities that are important to us. When others exhibit those qualities, we are likely to esteem them more highly than the people who lack the attributes that we admire. But, just because a person may not be someone we can innately respect, that does not mean that they should be treated disrespectfully or dismissively or that their opinions are less valid. You potentially interact with all sorts of people on a day to day basis:
- team mates
- members of other teams you deal with
- business people (customers, stakeholders)
- marketing
- users
- etc.
Not all of these will have the same background or level of knowledge/skill – infact they may be completely unlike you in every way. But aside from the fact that they may be highly respected in their field of expertise, your interaction with them forms part of the dynamic of your whole workplace which contributes to the energy it will exude.
Have you ever walked into an office and just felt really good about the place? Everyone seems to be really happy and the whole area just feels a little brighter than it should. Well, more likely than not, people treat each other with respect and courtesy there. On the other hand, I am sure you’ve at least visited an environment where as soon as you walked in you thought to yourself, “I’d rather shoot myself than work here and if I did work here I probably would“. Guess how people treat each other there.
Of course all of this seems really fluffy and touchy-feely (flowers and peace man – groovy :)) and I am well aware of that. If you’re a hardcore analytical developer who only respects cold logic and wicked Unix skillz think of it this way, there is always a developer out there who is much more hardcore and analytical than you and whose Unix skillz are way more wicked. If you ever met that person would you like to be dismissed and marginalized by them or do you want to be treated with courtesy and respect? And now tell me, does that ‘clueless customer’ or ‘stupid marketing guy’ really deserve your disdain? You can make all the jokes you want at this point, but just remember one thing. Do you know who else works in that crappy workplace where everyone is an arrogant bastard and people treat each other with contempt and scorn – you do! Joke about that.
Respect In Teaching And Learning
Enough of the fluffy stuff here is something concrete. Most developers would agree that one of the things you want to get from your job is to be able to learn from the people you work with. Of course, in order for someone to learn, someone else will have to teach – that’s just common sense. But, nobody really has a duty teach anyone anything. They will either do it because they are extremely altruistic and enjoy teaching others or something will prompt them to share their skills and knowledge. Do you know what that something is? You guessed it – respect.
Let me share with you a little piece of wisdom that my dad shared with me a little while ago. My dad has been a tradesman ever since he got out of the army – around 30 years or so. He is very good at what he does. The way knowledge is passed on in the trades is through apprenticeships. The relationship between master and apprentice is interesting, the master can either tell the apprentice what to do or he can also explain why certain things are necessary. In the first case the apprentice learns the moves and may become a decent worker, in the second case the apprentice can set himself firmly on the road to becoming a master himself. But, the thing is, it is much easier for the master just to give directions, it takes extra effort to sit down and explain (and sometimes show) why things are necessary. So what would make the master want to take the time to order their own thoughts and to actually sit down and teach rather than just supervising? It is several things:
- when the master can see that he has the apprentice’s undivided attention – the apprentice is not distracted by other concerns when the master is sharing knowledge
- when the master can see that the apprentice is willing to follow direction – the apprentice doesn’t argue unnecessarily
- when the apprentice is willing to do something extra without being told – for example, the apprentice takes the initiative to clean up after a job is finished without being told
It has taken the master many years and/or decades of effort to gain the knowledge that they have, all they want to see is that the apprentice appreciates being taught what the master knows. The thing that the three points above have in common is that they are all signs of respect:
- showing appreciation for being taught by giving your full attention
- not being too argumentative (although asking questions and arguing to some extent can be ok)
- saving the master from doing something routine/boring
Just three little signs of respect, but they make all the difference between a person who is happy to teach you something and take the time to explain and someone who won’t really bother and just do it themselves (probably better and faster to boot).
I’ll be the first to admit that the dynamic in software is completely different than it is in the trades. There is no formal apprenticeship relationships and the line between master and apprentice can be extremely blurry, it is more often several people sharing knowledge with each other rather than one person teaching. But the basic principle of respecting the person who is willing to share the knowledge translates very well. If you don’t give your attention, if you don’t show some appreciation if you’re not willing to follow the directions at least for a little while, next time the person may not even bother sharing what they know and everyone is worse-of if that happens.
Fostering An Atmosphere Of Respect
If you were asked to give up any agile practice or ideal which one would you choose? It is tough to answer that one, but I do know one thing, I would give up all of them before I would give up the idea of respect within the team and in the workplace, because without respect all the other practices aren’t worth a whole lot.
One of the best things you can do for any software team is to foster an atmosphere of respect, not just towards other team members but towards anyone who has to deal with the team. Not only will this create an atmosphere where people will be happier, but it will also foster an environment where everyone is willing to share what they know, people are happy to collaborate, noone is afraid to bring up issues if they notice them. Everybody knows that no matter what, they will be treated with respect and courtesy. How to foster such an atmosphere is a whole other matter and I would like to come back and look at it at some point. In the meantime, I would love to hear what you think. Do you believe respect is as important for truly agile teams as I think it is, or do you think something else is more so?
Image by kkimpel