One of the most unique aspects of how the Epicodus classroom works is that our students practice pair programming, where two people use the same computer at the same time. One person drives, controlling the keyboard and mouse, and the other person watches and talks. Typically, students are pairing with a different partner each day.

Why is this practice beneficial? We’ve found that there are several reasons why pair programming can be more effective than soloing:

Programming is less about writing massive amounts of code and more about solving difficult problems. When two people solve a problem together, they often come up with better solutions, more quickly than each working alone.

Usually, each person in a pair will have different sets of knowledge and different strengths. Pairing allows you to learn from each other.

When you work alone, you’re often tempted to take shortcuts that will come back to haunt you - such as writing code without tests. When pairing, you can hold each other accountable to writing high quality code.

When you watch somebody else code, it’s easier for you to see their mistake and catch their bugs than for them to see their own.

You don’t check your email, social networks, news, text messages, and so on when you’re pairing; as a result, you’re much more productive.

Even though pairing has many advantages, it can still be frustrating. You’ll usually be working with someone who is either more or less experienced than you, and you’ll often feel like you’re slowing down your pair, or they’re slowing you down. You might want to explore how something works, while your pair wants to focus on actually finishing the project at hand. Or, you’ll run into a nasty bug, and you’ll have different ideas about the right way to try to fix it.

Every day at Epicodus, before students start programming, we ask pairs to check in with each other. The pairs discuss what each of their personal goals is for the day or the lesson, they share their strengths and weaknesses (both in programming and in pairing), and they talk about what they need for a happy and safe work environment. At the end of the day, the pairs ask each other for feedback on how the day went.

Pairing is challenging because each student is bringing a different set of experiences, interests, and backgrounds into the classroom, not to mention different communication and learning styles. In the long run, embracing those differences helps to enhance learning capacity and problem solving skills, creating more well-rounded programmers.