Communication is hard, especially in the software industry that has, for whatever, reason preferred introverts for decades. That stereotype is slowly eroding, but it doesn’t change the fact that many very talented and introverted coders find themselves in positions where they must communicate a great deal in order to be effective.
1) Getting Requirements from the Customer
This is an exhausting process for many people. If your customer could just tell you what they want, then you’d be good. Here. Build this. Done.
It never works that way. The non-coder doesn’t know what is possible, or easy, or hard. They rarely have come to the best possible solution to their problem. As a coder, you have to poke and pry with lots of questions to discover what the real need or problem is, and then suggest technical solutions and estimate their costs until you find a match.
It’s exhausting. Even for me, who constantly finds himself 50/50 on the Introvert-Extrovert spectrum. After a couple hours of story planning, I want to crawl into a dark hole and not come out for a week.
What is more socially taxing than having someone sitting next to you, constantly disrupting your thought processes? When you are pairing, you can’t just write the code that you know you need to write. You first have to convince some other dope sitting next to you, who has their own ideas of what to do and how to do it. A well-tuned pair can out-code and find better, cleaner solutions than any two people working on their own, but goodness! When I’ve sparred for more than five hours in one day with another person who just can’t seem to read my mind and agree with me all the time, I am done.
There are plenty of coder jobs out there where someone hands down a flawed but rigid set of software requirements that are divided up and handed out to individual coders who work in isolation on their bit of the solution.
While perhaps comfortable, those jobs never satisfied me. They never let me be both creative and technical, both thinking and making. The software that comes out of such teams is usually a pile of crap anyway. Who wants to ship crap all day?
This is not the life of a Software Crafter. We have a double identity to fulfill. We must not only create the simple technical solutions, but we also must communicate clearly with both our fellow coders and our stakeholders. Here are some suggestions for successfully managing the stress that might come from so much communication.
Know from where your energy comes. How do you recharge? Maybe it’s reading, exercising, or napping. If communication is draining for you, find your place to retreat and go there when you need to.
Take breaks. Nobody can pair all day long. Break your pairing up with ping-pong or snack breaks. Set a timer and place your breaks strategically.
Get good at asking questions. Here’s a great secret. If you ask a good question, then you don’t have to talk anymore! Especially when you are digging into requirements with a customer, focus your limited external energy on asking a good question, not trying to fill the dead air with your own ramblings. Good questions are open-ended, but specific enough to elicit good responses. “Why” questions go a lot further than “what” or “how.”
Claim your own time. Don’t let project pressures or deadlines keep you from your recovery time. If you are exhausted from a lot of interaction, you simply won’t be any good to anyone until you rest and recharge. Cut off your workday and build in the times to take care of yourself.
Get to know yourself better. Make the investment in some coaching or therapy, and get to know yourself. Understand where your energy comes from and what your tendencies are. A good psychologist can give you a set of tools that will help you manage your energy and organize your psyche. I use internal family systems and highly recommend it.
Some people are naturally wired and draw their energy from communicating with others. If this is not you, you can still be a world-class Software Crafter. You just have to learn the communication skills like you learn any other technical skill. Make an investment, manage your energy, and you can be entirely successful.