I was never good at making friends, even with people in the same line of work as me.

The only way I made friends in the software industry was very obliquely: by contributing to open-source for months and years. Eventually, after interacting with dozens or hundreds of people in public forums, I would have an occasional email conversation with someone and/or meet up by accident at a conference.

But what if you don’t have that much time? What if you want to have a nice conversation with a stranger immediately? That is, to “convert” someone who you haven’t interacted with at all before to someone you can call a very new friend, in one go.


The most important thing is not the words you say, but the mindset behind the words. What is your “model” for that initial conversation? What are you expecting to happen?

Your model could be adversarial - “A conversation is a competition to see which person is the smartest”. Most programmers have some level of imposter syndrome. They secretly think they’re not very good, which makes them anxious about talking to strangers. “What if they find out that I’m a fraud?” they might think.

Another model you could have is transactional: “A conversation is an exchange of useful information and/or a sales pitch”. This attitude may be fine in a strictly professional setting, but we’re talking about geniune friendships.

The “correct” belief is something like egoless curiosity: “This person probably has something to teach me. I just need to figure out what.”

When I say “teach”, I don’t mean it in the strict pedagogical sense (i.e. I didn’t know functional programming before, so they helped me understand it). I mean it in a broader sense: seeing a new perspective on a certain topic or even on life in general.

I would argue that these fuzzier learnings are actually more valuable than purely academic knowledge.

What to talk about

We probably shouldn’t be talking about our deepest hopes or fears with someone we just met. But we do want to go beyond mere small talk. A safe middle ground would be some intellectual subject. We’re all nerds, so we like to dive deep into different areas anyway.

It just needs to be something that at least one of you is either actively investigating or has explored in the past. If neither of you knows anything about the subject, then it’ll be a pretty short conversation:

  • Gee, $TrendyFramework seems cool.
  • Yep, it’s the hot new thing.

If both of you have some knowledge about the topic, at about the same level, you can talk shop: favorite watering holes, things you’re currently struggling to grok etc.

If one of you is clearly much more experienced, the more junior person can ask them directly for their thoughts, tips on what to learn next, etc. Or the more experienced person can ask the junior what they’re having trouble with, for example.

Starting the conversation

Just ask them what they’re currently interested in. Is there a new programming language they’re learning? Are they hacking on a side-project? Maybe they’re reading about something completely unrelated to tech?

As soon as you hear something that piques your interest, you can either share some of your own thinking on the topic or ask a follow-up question: How did they come to that topic? Any interesting insights they’ve gained so far? What aspect are they currently stuck on?

Hopefully, by this point, you’ve already got the conversation flowing. As you talk, there will be more and more adjacent topics that you can branch out into.

The trick is to maintain that curiosity and open-mindedness. If the other person says something you don’t necessarily agree with, that’s just an opportunity to learn more about a different perspective.

The scary thing about a conversation is that you can’t predict exactly how it will go. That’s also the exciting part.

Good luck!