Writing great software requires a lot of communication, and not just the client-to-server variety; person-to-person communication is crucial in a well-performing team. While it's easy to focus exclusively on improving our ability to communicate through the code we write, it's important to remember that building software is a communal experience: developers work with customers, testers, product owners, and other developers.
Here are some techniques and articles I use to reflect upon and improve my own communication skills:
Debugging Conversations. If you've had a conversation that took an unexpected turn for the worse, author and psychotherapist Virginia Satir devised a model that might help. J.B. Rainsberger describes this model and how to apply it to understand communications gone awry in his article "Don't Let Miscommunication Spiral Out of Control."
Giving and Receiving Feedback. If someone on your team is doing something that bothers you, they might not even know they're doing it - or don't know that it bothers you. By giving honest and direct feedback, you can let your colleague know that they've done something that bothers you and ask for them to change their behavior. DeEtta Jones Young has written an article about giving feedback for managers, though I find the steps very applicable to one-on-one peer feedback. And giving feedback is not always as bad as we think it will be, as Naomi Karten points out in her article "LOUD and Clear."
Saying 'No' Without Destroying The Relationship. At some point you'll disagree with someone, whether it's a teammate, manager, or customer. Yet so often those disagreements can lead a conversation to a dead end, leaving everyone frustrated. William Ury has written a book entitled "The Power of a Positive No" which provides a formula for saying 'No' that avoids dead ends and hurt feelings.
I've learned a lot about improving my communication skills by reading and practicing. One workshop that helped me was Esther Derby's and Diana Larsen's "The Secrets of Agile Teamwork", which they offer periodically.
What are your favorite resources and techniques for better communication?
Lets Hang!