« Scott Nonnenberg

From tech person to people person

2016 May 17

[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…

crab beanie baby

People Matter

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.

The Challenge

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.

The Three C’s of Communication

I’m pretty proud of this little system. It joins great company in alliteration. Maybe that will help you remember it?

1. Clarity

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.

2. Confidence

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.

3. Caring

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.

Han Solo Star Wars CCG card

Mental models for people

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.

1. Build

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:

  • What kind of person are they?
  • What do they know? What don’t they know?
  • What mindset might cause their current behavior?
  • What are they trying to achieve with X action? Generally?
  • What’s the larger context?
    • Incentives like deadlines or manager desires
    • Team attitudes and norms
    • Historical experiences

2. Refine

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.

3. Verify

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:

  • Verify specific aspects of your model: what they know, their larger context
  • Dig into their thought processes: “How did you approach X?”
  • Get more detail on something mentioned in passing: “Tell me more about X”
  • Explore their self-image: “Why did you do X?”

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:

  • Ask for recent, specific stories instead of hypotheticals
  • Ask about how they use time or money

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.

Why do all this?

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:

  • Understanding entire systems
    • How a set of teams within an organization interact with each other
    • How the overall business works
    • How your company’s overall market works
  • Predicting emergent behavior - understanding all the players well enough to model the downstream impact of a change over time.
  • Software usability - understanding the user well enough to help them achieve their goals quickly and easily.
  • Entrepreneurship - understanding potential customers well enough so you can present to them a solution to their problems that they’ll pay for.

After all, why do we develop software in the first place? For people!

Feedback Loops

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)

I won't share your email with anyone. See previous emails.


Avoid these abused words 2016 May 24

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 »


A functional distinction 2016 May 10

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 »

It's me!
Hi, I'm Scott. I've written both server and client code in many languages for many employers and clients. I've also got a bit of an unusual perspective, since I've spent time in roles outside the pure 'software developer.' You can find me on Mastodon.