Thursday, December 18, 2014

Becoming a Social Developer: A Guide for Introverts

I'm not an extrovert. I know that's hard to believe for anyone who's met me at a developer event. When I'm presenting, I appear to be anything but introverted (and that's probably because I love to watch people learn, so I forget about it). And in the hallway or lunch line, I'm not afraid to strike up a conversation with a stranger. But this is all a relatively recent phenomenon for me.

By nature, I'm usually a listener more than a talker; I don't usually talk to people I don't know; and I usually have meals by myself with a book.

But I broke out of that for at least one part of my life -- involvement in the developer community. It was unnerving when I started, but it got easier, and it has turned out to be incredibly rewarding.

[Update 09/2015: For more on the topic, I've put down my experiences at That Conference in a recent article. And also be sure to listen to the .NET Rocks! podcast, episode 1187: Becoming a Social Developer with Jeremy Clark. And be sure to visit the official website: Becoming a Social Developer]

[Update 06/2016: I had a chance to share this at NDC Oslo. The video is available here: NDC Oslo - Becoming a Social Developer.]

Introvert or Extrovert
First, a quick look at what we mean by being an introvert or an extrovert. This doesn't really have to do with whether someone is "shy" or "outgoing"; it has to do with where a person derives their energy.

Introverts derive their energy from inside themselves -- often through introspection and quiet activities. This also means that crowds and frenetic environments can be exhausting. I know that in large, noisy gatherings, I often have to step out of a room for a few minutes to "reset".

Extroverts derive their energy from outside themselves -- often by being around other people and involved in large social gatherings. This also means that being by oneself can result in boredom.

So, this isn't about being "shy" or "outgoing"; it's about whether you derive your energy internally or externally.

The Loner at the Conference
I was very fortunate early in my career. I worked for a company that believed in training and conferences as a way to build up the team. So, I had the opportunity as a junior developer to attend professional conferences relevant to the type of work I was doing.

Unfortunately, I wasn't comfortable talking to people I didn't know. This meant that I didn't talk to anyone between the sessions, and mealtimes were stressful. The thing I hated most was walking into a banquet room and trying to pick a good table to sit at. I didn't want to "barge in" on groups of people who obviously knew each other and were having active conversations. So, I'd usually pick a table with just a couple people who may be sitting quietly. More often than not, I found out that the people I was sitting with were from overseas, and they were talking in Swedish. (Not that there's anything wrong with Swedish; I just don't understand it, so I couldn't participate.)

I enjoyed going to the conferences because I did learn a lot. But I didn't realize at the time just how much I was missing out on by not talking to other people.

Introverts Like to Talk
Over the years, I've formed the opinion that introverts like to talk, but they are reluctant to start a conversation. Here are a couple of examples that I've seen just in my involvement in the development community.

Now, I'm going to be using the words "introverts" and "developers" rather interchangeably. This isn't to say that there aren't extroverts in the developer community -- because there are. But there is a certain part of the developer stereotype that holds true: we're generally more satisfied spending time with our computers than spending time with other people.

So, if you're an extrovert, don't be offended. You can take this as a way to better understand the introvert developers that you interact with.

Code Camp Lunch
My "aha" moment came about 5 years ago. I was attending a code camp, and this was still early in my involvement in the developer community. At lunch, I was in the middle of the crowd to get tacos. After grabbing my food, I looked around and was a bit amused by what I saw.

The lunch was at a big grassy quad on a college campus, and there were individuals dotted around the lawn. In a rather stereotypic fashion, the developers had taken their food and found quiet spots to sit down and eat. That was my first inclination, too. But with this scene before me, I changed my mind.

I found someone (who didn't look too odd), introduced myself, and asked if I could sit down with him. We started with the standard "what do you do" and went on from there.

And then an interesting thing happened: someone came up an sat down with us. Then another person. And another person. As people got comfortable, they joined in the conversation. And by the time lunch was over, there were 2 circles of about 8 people each -- and I wasn't even facing the guy that I originally sat down with. These other circles had formed around us.

And this was all because I had started a conversation with one other person.

User Group
The first time I went to a user group, I got there a bit early. There were only 2 or 3 people there, and I didn't know anybody. My natural inclination was to fade into the background -- sit down and wait for someone to talk to me. But almost immediately, I said, "Nope, not gonna do that."

I went up to someone and introduced myself. And we started talking. As more people came in, they joined in the conversation (as opposed to going and sitting alone). After a while, there were 6 of us having a good conversation.

The Realization
After seeing this happen a few times, I had the following realization:
Developers like to talk, but they don't like to start the conversation.
Here's the standard progression.
  1. A developer sees a conversation in progress and goes up to listen.
    This is a "safe" activity. You can be seen as being social without exposing yourself.
  2. After getting the feel for the conversation, the developer makes a comment.
    This is a way to "test the waters" and find out how people will respond to you.
  3. After getting comfortable, the developer opens up.
    Now you are an active part of the conversation. You may feel free to open up different topics.
This doesn't mean that things are easy for an introvert. But we can take an active role in getting this progression started.

Becoming a Social Developer
It doesn't take much to become a social developer. The steps are very simple to follow -- and they are extremely hard to do the first time.

Step 1: Introduce yourself to someone you don't know.
All you have to do is say, "Hi, I'm Jeremy" (but use your own name). And usually you don't even have to ask for the other person's name; they'll respond with their name.

Step 2: Ask a non-threatening question.
I usually start with "What do you do?" And you would not believe how many times people say, "I'm a programmer." Yep, I pretty much assumed that already.

Step 3: Ask a follow-up question.
Next is, "What kind of applications do you build -- web, desktop, mobile?"

I won't lie to you: this is going to be very difficult the first few times you do this. It's extremely uncomfortable as an introvert to put yourself out there. By starting the interaction, you open yourself up to rejection (not great if you don't have a huge amount of confidence).

But here's the good news: I've never had someone tell me to go away. There have been times when conversations have been a little awkward and fizzled out. But 9 times out of 10, I've gotten to know someone new.

It Gets Easy
The more you do this, the easier it gets. I've been doing this for about 5 years now (which really isn't that long in the grand scheme of things), and it's second-nature to me now.

Another Code Camp Lunch
About a year after I started doing this, I went to a code camp that was about 400 miles from where I live. It was a *huge* event, and I only knew a few people who were there. Because there were so many people, I knew that I probably wouldn't find anyone familiar during lunchtime.

So, after grabbing my pizza, I looked around at the folks who were already eating. I found 2 people who were sitting near each other (but not talking to each other). I introduced myself and asked if I could join them, and they said it would be fine.

I started the conversation and found out that one person was a developer manager, and the other person was a business analyst.

Here's the interesting part: as we were wrapping up lunch, a person who was sitting nearby pulled me aside. He said, "I like how you went up to people you didn't know and just started a conversation. That was really cool." That gave me a chance to share my experience with him -- how it's not part of my nature, but I've seen that it works well.

Encouraging Others to Join In
This is easy for me now. And rather than standing around in a registration area or hallway, I'm likely to start a conversation with someone nearby. And once you're comfortable with this, you can encourage other people to join in.

At a recent code camp, I was in a circle of about 3 or 4 people in the quad. Another person inched up to the circle -- the "listening" phase mentioned above. Rather than letting him just stand there and go slowly through the phases, I introduced myself and asked his name -- pulling him into the conversation. If we create a welcoming environment around us, then other developers will be more comfortable and willing to join the conversation.

I try to actively engage "lurkers" in the conversation, creating a safe environment for them to get involved. Once you're comfortable with yourself, do what you can to help others get comfortable.

The Results
I don't think I can really quantify the results of this. I know *a lot* of people in the developer community -- way more than I feel like I should know. I've had a lot of one-off conversations where I never saw the other person again. But I've also built some really good relationships.

Tracking Technologies
In addition, I get a very good feel for what's going on in the developer community. I usually ask people about what technologies they are working with, what they like about it, what doesn't work quite as advertised, and so forth. That's one of the reasons why I got into Git -- a lot of the developers that I've talked to are using it regularly and really like it.

As another example, I've been talking to quite a few folks about Angular.js. I'm not currently in the web programming world, but the technology is interesting based on what I've heard. And folks are talking about upcoming changes and how they affect current and future projects. I feel like I have  window into another part of the development world that I don't normally deal with.

The great part is that I'm no longer afraid to talk to people I don't know. For example, last year I went to an event for Pluralsight authors. There were a lot of famous people there: people who were well known book authors, who spoke at professional conferences, who made the rounds on the developer podcasts. And I wasn't shy about going up and introducing myself. I won't talk about who because I don't want to sound like I'm name dropping. But it's nice to go up to someone, introduce yourself, and then let them know how they were influential in your programming career. And some of these interactions turned into longer conversations.

A Huge Network
The same is true at the Microsoft MVP Summit. And as I've attended these events, I've become friends with a lot of people (which I wrote about last month). And now when I'm listening to a podcast, I can say, "Hey, I've talked to that person." I'm amazed at how I'm having that experience more and more as I've built my network of contacts over the years.

At the same time, I know lots of people in my local development community. In fact, when I was looking for a job, I had about a dozen people give me leads on positions that were available in their company. These are people I've never worked with, but they felt that I could be a good fit for their team based on the conversations that we've had. (And I've always thought that being a good fit for a team is more important than knowing a particular technology -- a good developer can learn a new technology. But that's a discussion for another day.)

Very Compartmentalized
As a final note, I'll say that this "talking to strangers" attitude that I've picked up has remained limited to the developer community. If I'm at social events, I'm still unlikely to talk to people I don't know. And if you're sitting next to me on an airplane, I'm unlikely to start a conversation (unless I know you, of course). There is a certain level of comfort in the developer community because we all know that we have at least one thing in common: programming.

Wrap Up
It's not easy to get started. But if you are an introvert developer, I'd recommend taking a chance. The next time you're at a user group or other developer event, introduce yourself to someone you don't know. The first time will be hard. But trust me, it gets easier.

And the results are well worth it.

Happy Coding!


  1. This is a great post and really good advice. I've been forcing myself to do the same thing over the years and it's made a big difference in my professional network. I liked your observation about looping in lurkers; that's a great point.

    An old joke I used to tell to warm up a room in my consulting days: What's the difference between an introverted developer and an extroverted developer? The extroverted developer stares at *your* shoes while they're talking to you.

    Thanks Jeremy

  2. Jeremy, I'm still like you were 5 years ago. Maybe at the next developer event (which will probably be the next MVP Summit for me), I'll try some of your suggestions ... or maybe I'll still chicken out. We'll see! ;0)

    What I typically do is hang out with Robin ... she introduces herself to anybody and everybody and I get sucked into conversations automatically!

    You're written some great tips! Thanks!

    1. It's never too late to start, Bonnie. And hanging out with other people who are a bit more outgoing is a good strategy, too. (That's how we met, wasn't it?) Next time I see you I'll ask about how many new people you've talked to in the dev community :-)