[This is an adaptation of a talk I gave at the Seattle Software Craftsmanship meetup in May 2014. Direct link to screencast. Slides.]
I’ve been on both sides: made fun of as a geeky computer enthusiast, and derided as useless project management overhead. Both sides of the technical divide are frustrated and unhappy. How to bridge that gap? I’ve got some ideas for my fellow tech folks…
For the longest time, I didn’t want to deal with people. They were frustrating! I wanted just the technical problems, because I was really good with those. I was a tech person, not a people person.
Once, in college, after a group project was over, the group gave me a crab beanie baby to commemorate my attitude. It didn’t have much of an impact because I was frustrated too.
Then I graduated and started at Microsoft. As my time there progressed it became clear that I couldn’t ignore it any longer. I needed to deal better with people to do my job well, let alone be promoted! Even in Microsoft’s notoriously harsh culture, I was called out as “abrasive.” From my early-2005 mid-year review:
“Scott can still work on his communication tone to make it less abrasive”
I definitely had some work to do.
I had to break through that tech person label. I wasn’t a people person, but perhaps it isn’t innate? Perhaps it’s a skill to be learned?
It was either that or give up, so I accepted the challenge. I became a focused student of human behavior.
But you can’t learn more about people without interacting with them. So let’s start by making sure we have a good approach in place for communicating with those around us.
I’m pretty proud of this little system. It joins great company in alliteration. Maybe that will help you remember it?
First, we have to make sure that messages are received accurately in both directions. You’ll want to define terms because human language is not precise like computer languages. It’s very easy for one key misunderstood term to change the entire meaning of a statement.
Once you have the component pieces down, you can summarize with paraphrasing (or request it from your conversation partner). By trying to express the same thing with different words, you can confirm overall meaning. Now you’re on the same page. Lastly, agree on specific next steps to make sure you’ll be on the same page tomorrow.
In a business setting, this will likely involve meeting notes. I found good success by editing my initial agenda for the meeting on the projector during the meeting: real-time paraphrasing and creation of next steps. I would then send that document out as my meeting notes.
In technology we like to pride ourselves on our purity of intellect. Just the ideas, please, none of that pesky ego or emotion. But it turns out that any message loses impact if it isn’t presented with confidence. You’ll want to put authority behind your words, showing that you believe in what you’re saying, that you care.
To improve your authoritative presence, speak evenly and loudly. Use the right amount of eye contact - too much is awkward, too little makes you seem submissive. If you work on a computer a lot, you’ll probably need to work on your posture. You are likely slumped over, which makes you look sad or worried. Consider going to a massage or physical therapist. They can help you determine what needs improvement, and give you a plan of exercises.
It often helps to find someone in your community who seems authoritative to you. Figure out what works for them and some of it might just work for your too.
Lastly, and probably the most important, you need to care about your conversation partner. You need to treat them like a human with a real life, real needs. You can really scare people by being authoritative without also radiating positivity.
You can convey this with friendly facial expressions, and appropriate tones of voice for the situation. Now, I know that developers are bad actors, because I am one. So I recommend that you start on the inside to improve your outward appearance: be less judgmental. Yes, you’re frustrated. But everyone makes mistakes, even you. You can even work on judging yourself less!
To show that you care about someone, you also need to speak in their language. You can’t preach at them, you need to influence. Use words your conversation partner already understands. If they are not technical, use non-technical words. Connect to things they already care about, goals they already have. The more high-pressure the situation, the less of an opportunity you’ll have to try to bring them into your context. Go to them where they are.
You’ve tuned your mannerisms and words. Now for your overall behavior. You already know The Golden Rule. But you don’t want that. It’s really not very useful, because everyone is different! What you really want is The Platinum Rule:
“Treat others how they want to be treated.”
So simple and so powerful. But how do others want to be treated, exactly? We need to figure that out.
Now is where we can shift into student mode again. We need to treat each person as a very complex system.
Think of the most complex system you’ve ever debugged. How did you debug it? You came up with mental models, tested those models via small experiments with the system, then modified your models based on the new data collected.
You confidently approach any software system with this plan in mind, right? Let’s see if we can put a similar system in place for understanding people.
You already have working models of human behavior in your head right now.
Do you remember Star Wars: A New Hope, when Han Solo leaves with his reward after saving Princess Leia from the Death Star? And everyone gets angry with him? Do you also remember the surprise you felt when he came back to the battle at the Death Star and saved Luke from being shot down by Darth Vader?
Why did you feel surprise? It’s because you had a mental model of Han Solo’s behavior. You are led to believe that he is an anti-authority ‘rascal,’ only in it for the money. But he comes back!
In your life, as you interact with people, you build up these models naturally. I encourage you to make this explicit. Here are some factors you might consider:
Now you have more detailed models than ever before, because you’re thinking more rigorously. What next? We can’t talk to Han Solo about his intentions, but we can talk to those around us about it. You can make it a game.
Talk to your friends about characters from fiction: movies, TV shows, books. Why did character X do Y? Does that seem consistent with the situation and past behavior? Once you get more advanced, you can start thinking about the writer and their biases - why did they write it that way?
You can also do this with public or historical figures! Or people you know or know of. Just remember to keep it balanced. This is another place where it’s very easy to be judgemental.
The more variety you have in the people you talk to about your models, the better. You’ll discover your biases and the biases of others. Remember in Star Wars: Empire Strikes Back, when Leia yells out “I love you!” to Han Solo, who is just about to be frozen in carbonite? Why did Han Solo say “I know” instead of the expected “I love you” in response? Depending on who you talk to, you’ll get different responses. Some say that he’s that same selfish rascal. Others suggest that he thought he might die during the freezing, and wanted to save Leia from feeling pain.
The best way to break through biases is to gather real data. So we move from fictional characters back into the real world, where we can ask questions. With a mental model in place, try asking some questions:
The question “Why?” is hugely useful because you can continue asking it until you get the core motivations and principles.
When trying to understand customers or clients, you’ll often be presented with their idealized self-image, how they would like to be. These kinds of questions can help uncover true priorities, since they get at the physical expression of those priorities:
At this point we need to check in with the C’s of Communication. You need Clarity here, because people might use key terms very differently. You need Caring because these questions can very quickly put people on the defensive. Act like you care about them as a person to confirm that you are on their side. If you are talking about negative situations, sharing stories about your similar experiences can sometimes help.
I gave you a reason why I needed to figure all of this out at the beginning - I needed it to do my job as a Program Manager at Microsoft. This can help you in your career too, even as a programmer. You’ll work better with your team and the other teams you interact with. But it goes far beyond that:
After all, why do we develop software in the first place? For people!
Once more we come back to this very useful mechanism. The system I’ve described is a positive feedback loop: you assemble mental models, refine those models, then gather data which goes back to make the models better. Put this cycle in place and your people skills will get better with every new bit of data collected, every new situation you experience.
It worked for me! I wouldn’t say I’m a ‘people person,’ but I’m doing a whole lot better. I’d love to hear about your thoughts and experiences with some of this stuff.
Or talk about Han Solo. :0)
There are some words which warrant caution. They can instantly turn people defensive, or cause your listener to completely disregard everything you say afterwards. Why are they so bad? What can we... Read more »
I had a moment of testing/architecture clarity recently while working on a new Node.js module which works with PostgreSQL. Previous leanings and intuitions became concrete. Maybe you’re wondering... Read more »