Building Connections and Friendships through Pair Programming with Ben Holmen
Welcome back to the Laravel community spotlight. With me today is Ben Holman, who created a brand new thing called, pair parasping para pyramid. And, so we just wanna talk about some pair programming and, different things that Ben's working on. So, Ben, you know, welcome to the show. Let's Thanks, sir.
Eric Barnes:Let you introduce yourself for anybody that may not know you.
Ben Holmen:Yeah. Absolutely. I am a Laravel programmer. I am currently at Zillow and a new position there. I've also been working as a CTO in previous roles and just been all over the PHP ecosystem for the last, oh, 2 decades or so.
Ben Holmen:And I'm super excited to be talking about the pyramid scheme today.
Eric Barnes:That's awesome. And if you've never met Ben in real life, he might be the one of the tallest Laravel developers in existence. I'm not sure if he is the tallest, but he's he's quite tall.
Ben Holmen:There are few taller. There are.
Eric Barnes:He dwarfs dwarfs me in size. So you created this new thing, and, it was actually one of the previous episodes we did here on this show where somebody somebody mentioned it. And I was like, that's pretty sweet. And, so it's called, pair scheme.
Ben Holmen:Yeah. Pyramid scheme. Alright. Yes. And we have Joe Tannenbaum to thank for that name.
Ben Holmen:He he coined it. The man has a talent for, naming things.
Eric Barnes:I love that. So so just give us the basic overview on what this is.
Ben Holmen:Yeah. So I think most people are familiar with pair programming, and they've probably done maybe some of it with their colleagues. Although I've been surprised at the number of people I've found that haven't paired before. But the the default mode is you have teammates and you pair program on your shared code base where everyone knows most of what you need to know about that code base. And I've done a lot of that myself.
Ben Holmen:I've spent hours and hours each week pair programming with my teammates and found it to be really productive. I'm a huge proponent of pairing specifically with your team and I had the idea of pairing with strangers and seeing if that would work, if you could replicate some of the benefits of pairing with people who you've never met before, who have no familiarity with your code base. And I approached it just as an experiment. What would happen if I tried to pair with with strangers? And I was inspired by this or I was inspired by trying it once and that went great.
Ben Holmen:I reached out to Joe who named the scheme. He mentioned pairing on Twitter and said I've never paired before. And at the time I paired a ton and I felt like I could help him get over that hump to get from 0 to 1 on this, which is a big step. So I just sent him a friendly message on Twitter and said, hey. I'd be down to pair any time.
Ben Holmen:And he took a chance on me. I took a chance on him, and we had a great time together. And it totally worked. We paired on something. I think we have something terminal related like text formatting in in the terminal.
Ben Holmen:And that was something both of us were interested in, but it wasn't like our company shared code base, which is what I was familiar with. And it went great and we became friends. We turned like an Internet, like, friendly on Twitter sort of relationship into a real friendship through that process. And so I knew it could be done with Joe anyhow. And so I decided to run an experiment of what if I just put my calendar out on Twitter and see how people respond?
Ben Holmen:Just have random people show up. I know nothing about them. They know nothing about me. How does that work? And so it's an experiment in a few ways.
Ben Holmen:The first is, does it continue to work with strangers in general or was Joe an exception to the rule? And then does it work to pair on like coming into a cold based code? Cold, excuse me. No prior knowledge of the code base, no domain specific knowledge, maybe not even understanding the stack. I certainly got into some stacks that I'd never seen before and it was a success in each both of those areas.
Ben Holmen:Had a great time with everyone who showed up and we were able to solve problems and work through things even in the worst case scenarios where you didn't really understand even the language or the framework that you were dropped into. I still found that it was useful time to to work through programming projects together.
Eric Barnes:It's amazing. I I I'm sort of sort of blown away that it just kinda worked instantly. It was
Ben Holmen:Me too. It went much better than I expected.
Eric Barnes:So so, like, I have actually never pair programmed in my entire life. So me and Joe are very similar there. Mhmm. Let's say I wanna do it and, you know, I put my calendar link out there. Do I as the one that wants somebody to pair with me, do I just do I need to have, like, a sort of an overview of what we're gonna do that day?
Ben Holmen:Or is
Eric Barnes:it just, like, look at my code and be, like, tell me why this sucks and I'll be doing better?
Ben Holmen:Oh, man. You brought up a few great themes there. Let's talk about how to like, what to expect in a pairing program session with with a stranger or at least what I found to be successful. So I spend the first maybe 5 to 10 minutes just getting to know someone, like, where are you in the world? What is your community like?
Ben Holmen:What kind of projects do you typically work on? Just a little bit of getting to know someone, just small talk. And I think most people can survive 5 to 10 minutes of small talk, even 1 on 1. But then you get to pivot the whole conversation to let's work on something together, which for those of us who are introverted is a that's how it works. Right?
Ben Holmen:Because now you're not talking at someone. You are working on a problem in parallel together, which I think is a lot easier for most people to just jump into something and then you can go for hours at that pace. So I typically do an hour and a half, 90 minutes of pairing, which gives you about 80 minutes to actually like set up what you're working on, get into it a bit and get make some progress there. So I like to have a couple of things that I think might be good pairing things and I just kind of put them on my to do list. Like I know I'm going to be pairing with this person in a couple of days.
Ben Holmen:Oh, that might be a good thing to work on. And then we kick it off with here's what I have. What do you have going today? And then choose which one seems like the most productive thing to spend time on. And it's definitely not intended to impress.
Ben Holmen:Like, I don't want people coming into this feeling like they have to prove like they're this rock star programmer. Like they work on only the coolest projects. There's a lot of I've spent a lot of time working on pretty mundane projects, and that's cool. Like, that's what we do as programmers. We spend a lot of time in the mundane and even our pairing sessions can be mundane.
Ben Holmen:So I want to remove a little bit of that pressure to, like, have only the coolest stuff on your list. Like that's not going to happen every time. So you come in with what you think would work well. You talk about it with your pairing partner and then you choose one thing to get started on. And ideally it's something you can start and get to a good conclusion.
Ben Holmen:It doesn't have to be done, but you want to, like, have solved something in what the hour that's remaining there. And so that's something to keep in mind as you're planning your things. You don't want to be like I'm gonna refactor this entire part of my app. There's no way you're going to get through that in an hour and a half. But you could pick one part of it or you could pick an architectural conversation where you won't write any code but you'll get a lot of feedback about a large body of work.
Ben Holmen:But focus on something that you can get to a satisfying conclusion on, in 90 minutes. And I want to talk about how you get started too because you touched so that's like what to expect in a good pairing session with a stranger. You gave me, like, 3 different things I have to hit.
Eric Barnes:Yeah. Yeah. I I kinda jumped ahead a little bit. But, wait. Before we get started
Ben Holmen:Okay. Okay.
Eric Barnes:Well, this is actually part of getting started with my next question. So it's gonna lead into that. So again, never paired. I wanna pair. I'll throw my calendar out there.
Eric Barnes:Whatever. Mhmm. What apps do you need? Mhmm. Or what do you need to learn before you pair?
Eric Barnes:And then how to get started, like you said. So take us through, basically, you know, from from nothing into starting our 1st pairing session.
Ben Holmen:Yeah. So your infrastructure besides your regular, like, coding setup, your editor, your browser, whatever your regular tooling is, I just find the most success with Zoom. You could also use like Google Meet, which I think is free for non commercial use. Pop is free. Basically any screen sharing tool.
Ben Holmen:Tuple, I paired with a few people over Tuple, which is great. It does need a license, but any screen sharing app is sufficient. And I should have mentioned this earlier, but what you should expect is one person is going to be the driver. So the driver will be the person who's sharing their screen and the other person has some freedom to go off and explore ideas a little bit, spend a couple of minutes digging through the docs, doing a little research maybe, or just sitting there and giving feedback as as things pop up in the session. But it's definitely collaborative.
Ben Holmen:It's not just silently saying they're watching someone code. You're having a conversation about the code as you work through it.
Eric Barnes:That's awesome. And, you know, as far as, like, when you jump in, I know you said you you just sort of you're driving. They're they're watching. They're kinda, you know, taking it all in and then maybe giving some feedback as they watch you, you know, program and code. Is there anything if you are the one watching, is there anything the watchers should be sort of, aware of that they should do to make this higher quality for the driver?
Ben Holmen:That's a good question. I think your role there is to kind of force the driver to explain what they're doing a bit, which results in higher quality code. So I'd recommend asking good questions and not being afraid to speak up, to ask why they're doing something or have you thought about another approach. That's totally acceptable. And that's, like, what drives the value in pairing is what if, basically.
Ben Holmen:Tell me a little bit more about that part of your app.
Eric Barnes:Yes. Yes. I could see that being hugely beneficial. You know, there's been times in my programming life where, you know, where you're trying to fix add this feature, fix this bug and you're like Mhmm. I just I just can't get it.
Eric Barnes:And then it's like 3 days later, you're like, laying in bed and you're like, oh, I got it. But if I would've had somebody with me
Ben Holmen:If you could be that guy.
Eric Barnes:I knew we could've got it in 5 minutes. You know? Well, that's awesome. So so, and now, like, as far as I know you went through kind of the steps on getting started with this, but how do you find people? Like, is it like, let's just say, like, you know, I don't really have a lot of programming friends.
Eric Barnes:Maybe I'm brand new to programming. How am I gonna find people that would actually be willing to pair with me?
Ben Holmen:Right. This is probably the part where you have to put yourself out there the most. Like, the easiest part is once you get 10 minutes into that pairing session, it's downhill from there, basically. But getting that appointment on your calendar is probably the part that's most uncomfortable for your average person. And so I have some suggestions for you.
Ben Holmen:The first is I would set up a cal.com or calendly link and make it easy for someone to book your time. Remove any obstacles so you can send someone a link and they can easily get get on your calendar. And I would set that up to once or twice a week, whatever your availability is. Make sure that if you get an email saying Eric Barnes has booked time with you, you don't say, oh, no. I wasn't ready for that.
Ben Holmen:You want that to be a good event to see someone show up on your calendar. So make sure that it fits with your schedule, fits with your availability. And then be warm and welcoming. You want to present a really positive image to people as you're reaching out on Twitter or sending an email. You want them to feel like this is a friendly person.
Ben Holmen:They'd be easy to get along with. So maybe go a little over the top with like being warm and engaging. You are trying to build a connection from scratch here. I would recommend that you reach out to people that you see on Twitter that you think you would vibe with, even if you don't know them. Talk about what you're working on on Twitter and invite other people to join in.
Ben Holmen:Say, I'm trying this little idea. It's a prototype. I don't know what I'll do with it, but I'd love to pair with someone. Here's my link if you want to jump in on that. But you might have to be the one to take the first step.
Ben Holmen:You might have to respond like I did to Joe. Like, hey, I'd love to pair with you sometime. Do you wanna take a chance? And you can reference the scheme now. That's the beauty of it.
Ben Holmen:So I've had quite a few people pair with me. Dozens of people have paired with me, But it is deliberately not the pair with Ben scheme. This is the pair with scheme. We're trying to grow this so that the next generations of programmers are going to be pairing with each other. Nothing makes me happier than seeing someone mention the project or the idea and say, hey, I just paired with so and so.
Ben Holmen:Thanks, Ben Holden for that. That's like it's like sending your kids off to college or something. It feels great. So I wanna see more and more of that. So this is my permission to say, hey, I wanna join the scheme or scheme with me or something like this is an existing thing people pair with each other.
Ben Holmen:Will you participate in that thing with me? And let's grow it together.
Eric Barnes:I love that. So do you have, do you already have, like, a website dedicated to this yet? Or it's just the sort of the idea you're fleshing out in your your you know? I'm thinking of, the, it was really big in, like, the, like, to do item space. Remember you had the, the was it the bullet meth I don't know.
Eric Barnes:You had all these methods at one point Mhmm. For, like, getting things, yeah, getting things done. I guess that was Oh, yeah. The the paradigm.
Ben Holmen:Right in the name. Yep.
Eric Barnes:So yes. Uh-uh. You know? And and for that, you would just go to a website, and it was like, here's the steps to getting things done. Right.
Eric Barnes:You know, are you thinking of, like, sort of building something like that to, make it easy just like a one stop shop? This is what I should kinda this is my checklist to get started.
Ben Holmen:Yeah. I've thought about doing that, but just as I was thinking about doing it, Mitchell, did it himself and he created a website called Laramates, which is definitely in that space. And his goal, is to connect people with other Laravel programmers, mostly Laravel programmers I believe, who are interested in pairing and he's working on making it easy to set up an appointment there. In the meantime, he has a directory of people atlairamates.com. 100 of developers I think have registered there.
Ben Holmen:And his approach is including like what are you, what are you proficient in? What are you experienced in? So if you are working on like a live wire bug or something specific, you could go look for which Laravel programmers are interested in pairing and have live wire experience. So I just said, Hey, great Mitchell. So glad you did that.
Ben Holmen:Run with it, man. And I don't have any plans to create my own structure around it. I mostly want to just promote the idea and just have I'd love to see the community latch onto the idea of you can just pair with people and it's great.
Eric Barnes:Yeah. It feels it feels like a big, like a really good community project. Meaning, like, you know, we go to Lyricons. We meet other people. But this is so more it's much more personal in 1 on 1, and you do build those friendships that you're never gonna you can't have that friendship just on random tweets and Mhmm.
Eric Barnes:Social media and stuff. So it it definitely feels like it builds a bigger,
Ben Holmen:a much deeper, deeper connection. I've made basically everyone I've paired with has become a friend through this process, which is fantastic. It takes that Twitter interaction to an actual friendship. And I think that's so valuable for us. We are looking for connection, especially in our field with so many of us working remote.
Ben Holmen:We see each other once a year tops probably. And how much, like, if you attended Laracon or you've attended an event in the past, how much would you have preferred to build a connection where you've actually, like, sat on a Zoom call and programmed with someone versus you spent 3 minutes trying to get to know them a little bit at the conference and they seemed interesting, But you might not have a chance to make that connection again. This is a chance to solidify that and really build your network of people who you care about and who care about you.
Eric Barnes:Yes. That's that's that's a 100% true. You know, speaking of, like, Lyricans, I'm I'm, I've been called a Pikachu because I run around and talk to everybody. And, you're
Ben Holmen:excellent at that, Eric.
Eric Barnes:And, but the same way, it's it's like I talk to everybody for 3 minutes, and then I'll see him again in a year. And it's like then it's like it's hard to remember the names. You remember I for me, personally, I remember the faces, but I don't have a a deep connection. But, you know, I would love to have a deep connection with everybody. I mean, it's just so hard to because there's not enough time over 2 days, and and this just feels like something that's gonna be great for the community, you know, as as if you embrace it.
Eric Barnes:Of course, this leads to something maybe negative. What happens or have you ever had a bad pairing session?
Ben Holmen:I love that question. I've had no shows. We'll just take those out. I haven't had that many no shows. Maybe 10% of my appointments have no showed.
Ben Holmen:And I haven't had any duds. I gotta be honest. I've done this, like, I've done it dozens of times, and there have been some standout positive interactions, but I haven't had anywhere. I'm like, I gotta get off this call. I'm gonna end this early.
Ben Holmen:I haven't had any of those, which I'm kind of surprised by, and I am encouraged by, just the quality of the people who have showed up.
Eric Barnes:That's that's really sweet. Yeah. Which I get I guess too, it's sort of the psychology behind it. You know, we we have this deep shared passion for this thing. You know?
Eric Barnes:It's kinda like 2 people that love sports getting together, and they can surely talk for sports for an hour and a half with no problems. Mhmm. So I assume it takes a lot of that weirdness out of it because we everybody's has the same passion, and we're like, you know, we wanna we wanna help each other.
Ben Holmen:You have common ground and you immediately get into practicing the craft, like, 10 minutes into it. And so you're immediately doing something that you feel fairly confident about doing.
Eric Barnes:Yes. For sure. And, so and to to sort of go back to getting the schedules, I know you said there was a few apps you were recommending for getting your calendar out there. Mhmm. Do you what was the names that you mentioned again?
Ben Holmen:I like cal.com, And then Calendly is another common one. You can also set up with Google Calendar. It's there are many competitors in the space. But basically, anything where you can share a link that says book my time and it will for example, my cal.com is set up so it will show up on my calendar. It already creates a Zoom link and puts that in the shared invite so everyone knows what they're doing.
Ben Holmen:And I also set up some preliminary questions for like what's your Twitter handle so I can get a sense of what you're working on. Do you have anything you wanna work on or any notes for me? Just to have a little context for what we're getting into together.
Eric Barnes:I love that. Next question. Have you ever considered live streaming the pairing session?
Ben Holmen:Do you wanna be the first one, Eric? Should we do it?
Eric Barnes:I don't know.
Ben Holmen:I have thought about it. I thought about live streaming because I do it. Like, I'm comfortable coding in front of people. But I honestly feel like I'd have, like, 3 people show up. And I don't know, man.
Ben Holmen:I don't know. I don't really want to invest the time in building a streaming audience that doesn't really check boxes for me. But I have puzzled over it, and it would be an interesting twist on it for sure. As far as doing it with another another person, I've thought about extending those invitations, but haven't given it a shot. If you're if you're watching this or listening to this and you do live stream already, I would be happy to jump on because I'm very curious about the dynamic of 2 people coding and live streaming together.
Ben Holmen:So let's give it a shot. If you're if you're set up to do that, I'll I'll be your guest.
Eric Barnes:Love that. Well, I was just thinking the the only benefit to a live stream would be if you did have people watching and they could sort of comment in, you know, with the Mhmm. You know, with the comments and be like, oh, hey. Here's like a 3rd or 4th or 5th idea. But then, of course, then it's probably just overwhelming because you have way too much, that information coming in.
Ben Holmen:Parcel of that feedback. I don't know how they do it. But you would have the second person, like, kind of monitoring the chat a bit, which might keep you in your in your flow a little bit more. True.
Eric Barnes:Yes. I don't know. That's interesting. I I I think that probably would not be ideal for if you are just getting started. You know, it's more of private.
Ben Holmen:That's not a 0 to 1 situation.
Eric Barnes:Yeah. Learning learning as you go, basically. So this is awesome about, you know, pairing and everything. So did I miss anything that, you know, you think is really important that be brought up about Pyramid?
Ben Holmen:I just I haven't seen you on my calendar yet, Eric. That's the only thing I'm missing.
Eric Barnes:It's I would I would love to do it. I'm a have to find some feature that I'm I'm about to work on and and do that. Alright. Let's do it. It's wild.
Eric Barnes:I run a site for developers, and I spend almost no time coding. It's all
Ben Holmen:You're out there building the community, man.
Eric Barnes:It's all content, baby. You know? It's like, that's all I'm doing. Content. Content.
Eric Barnes:Content. But, but that would be fun to do. Yes. I'll definitely wanna wanna do this and give this a try. So to find out more, what go to your website.
Eric Barnes:I think you have a a blog post on this.
Ben Holmen:I do. Yeah. I since I'm promoting it pretty heavily, you can just go to benholman.com, and it's right there on my home page.
Eric Barnes:Perfect. And we will have all this in the show notes as well. I want to thank you, Ben, for coming and joining us for this, episode. And, you know, if if you haven't pair programmed, definitely go out, give this a re give this a try because I think I think you'll love it, especially if if Ben's recommended it. He's he's a great guy.
Eric Barnes:He he knows what's he knows what's good.
Ben Holmen:Thanks, Eric. Thanks for having me. I appreciate it. Come join the scheme with me.