I work for another company that is going to do a partial return to office. I will be looking at options for companies that offer full in person office (or 90% in person office) after things settle down. I have worked full remote for a total of 5 years of my career, and I believe working in the office is a competitive advantage. * Overhearing hallway conversations (and joining them) helps spawn invocation. * I often d…
I work 100% remote and recently have been mentoring a recent CS graduate and doing pair programming with him. Let me describe how we do it and then I'd like to hear how you think things are better in person.
We start a Slack voice call, these work reliably. Some coworkers told me the longest Slack call they have maintained was over 12 hours long, with people coming and going throughout the conversation.
After starting the voice call, I share my screen. I show him what I'm working on in IntelliJ and we talk about it. Then I use a new IntelliJ feature called code-with-me and send him a link, he clicks on it and and he is then able to edit any file in my IDE on his IDE on his computer. I'm still sharing my screen, but he might not look at it, after all, he can see and edit any part of the code on his own computer now. He can share his screen at any time if needed with 2 clicks.
I direct the conversation, but look for tasks I can pair off. There's a service I need an interface too, so I ask him to work on it. He starts reading documentation about it on his own computer with multiple large monitors. He then begins writing an interface to the service. I flip tabs over to the source file he's working on and can see where his cursor is and what he's typing in real time. I give advice, I just type out what I mean instead of trying to describe what I want him to do in the code with verbal words. This is all like Google Docs, we can bring in even more people and have 5 or 6 cursors all over the project just working independently. Everyone at their own desk where they're fully productive.
This is a real story. He finished the interface to the service, and it worked well. I still don't know all the details of what he wrote, I never had to be distracted by it, but his code has worked so far, so my trust was well placed. The whole experience was so smooth. We could sync up and talk about a single bit of code and then return to our own work, the context switching took literally seconds. I'd just say, "hey, look at this", he'd click a tab in his editor and then see what I was doing, we chat about it for 30 seconds, then he makes a 2nd click and is back to his own work. We pair programmed like this for about 3 hours. Sometimes we'd go 15 minutes without saying anything, but we were working towards the same goal, and interruptions to talk about the goal weren't distracting. I could never endure watching over someones shoulder for 3 hours.
We were maintaining a call / audio channel the entire time, I even muttered some things under my breath (just thinking out loud) and he was able to hear. I think it's the only time I've been happy and productive with pair programming.