We will be successful when we have a style that celebrates a consistent set of values that serve both human and commercial needs: communication, simplicity, feedback, and courage.
~ Kent Beck, Extreme Programming Explained (first edition, page 31)
Of all the agile values, courage is the one that doesn’t translate directly into a specific practice. Communication is enabled by sitting together in an informative workspace. Simple design and refactoring are all about simplicity. And, feedback is built into practices like TDD and retrospectives. But, courage? Which one of the practices fosters courage?
This is not a question I was asking myself. It wasn’t even on my mind until my friend from the agile community, Elisabeth Hendrickson, offered to pair program with me on one of her personal projects. The project was based in Ruby on Rails, RSpec and Cucumber – tools I'd never used but needed to learn for a new job I'd just landed.
Seems like a solid plan, right? I needed to learn these tools. And, an industry luminary was offering to give me a guided tour of one of their personal projects as an introduction. What could possibly go wrong?
Well, it turns out I have what Elisabeth delicately described as "competence issues" – as in a real, anxiety-inducing fear of being seen as incompetent – otherwise known as Imposter Syndrome. So, I was acutely aware that it was going to take some courage on my part to overcome my fear of looking like an idiot in order to just sit down next to Elisabeth in front of a keyboard.
But, it wasn’t until we were sitting there and Elisabeth was muttering on about how she couldn’t believe she was showing me the code in such a sorry state – in need of multiple refactorings – that I realized that pairing with me took as much courage from Elisabeth as pairing with her took from me.
What a revelation!
Here I was, caught up in my own head, feeling horrible thoughts about how I must look like a total idiot in front of someone I really admire. When, there she was, thinking horrible thoughts about how embarrassed she was showing her ugly code to a virtual stranger who is probably judging her harshly.
Suffice to say that the next time I sat down to pair program with someone, I was very cognizant of the courage it took to bring both of us together with the code!
Now-a-days, I am especially cognizant of what's required when there's a significant gap in experience between the two of us. I'll often admit that I'm experiencing some angst before we begin so that it gives both of us permission to not know the answer in front of each other. Makes for a much more pleasant experience.
In the end, I learned that while there's no single agile practice that fosters courage, all of them require it. And, over the years, I've learned that the best way to enable your team to be brave is to be vulnerable with them. Show them that you're unafraid. They'll follow suit.