problem solving together

from evy's notebook

I've been regularly pair-programming on Advent of Code with a friend over the past month, which has been a fun way to practice both my technical and collaboration skills. Problem-solving alongside a peer is how I like to approach most problems -- in programming, but also things like art projects, research, activism, and self-growth. I believe that the skills I've practiced while pair-programming are often extendable to other forms of collaboration, and wanted to share some of the things I've been thinking about over the last month.

(Our setup involves us calling each other, using JetBrains Code With Me to be able to type in the same code editor, and taking turns having one of us mostly type while the other mostly watches and comments.)

pairing as a teaching tool

My friend has been teaching me a programming language called Rust as we've been pairing. I'd never programmed in Rust before, and through programming together he's taught me a lot of its concepts and best practices. Learning is much more fun for me when I'm in environments I can regularly interact with. When I can easily get my hands dirty and have my questions answered quickly, I notice that I have much more potential for curiosity. When I get stuck or make mistakes that are difficult for me to understand with my current skill level, it's nice to have someone with me to guide me to something that works. When I was first learning programming, a more senior student regularly helped me figure out why my code wasn't working, and I believe that his teaching skills were a significant part of why I ended up really enjoying programming and pursuing it as a career.

pairing as having more brain

My friend and I are both pretty good at solving programming puzzles, and together we're even better. When he's unsure what to do next, I often have an idea, and vice versa. When one of us is typing, the other might notice an error or think of a better way to organize something. We sometimes have different approaches to coding and problem solving, which sometimes leads to us writing better code or understanding a problem better.

pairing as taking turns

It's sometimes boring to be the one watching, especially when we're calling through the internet and can't read each other's body language. Some things I've found helpful are:

I definitely wouldn't have done this much coding this month, or possibly ever taken the time to learn Rust, if it weren't for my kind friend that wanted to embark on this project with me. I'm glad to have learned so much about programming and collaboration this month, and also to have deepened a friendship in the process :)