Pair Programming’s Power: How Collaboration Can Rapidly Accelerate Your Success

Austin William Smith
6 min readFeb 7, 2018

14 years ago, I began to code.

3 months ago, I began to pair program nearly every day.

I’ve learned more about programming in the past 3 months than all of the previous 14 years combined.

What is Pair Programming?

If you already know the answer to this one, feel free to skip ahead to the next paragraph, but let me clear this up for any readers that may not be familiar with the phrase so we can all be on the same page. Pair programming is a software development technique where two programmers work together on one workstation, either in person or remotely via screen sharing. There are two roles, a driver and a navigator. The driver types the code at the direction of the navigator, while both simultaneously review each line as they progress. While the navigator is usually steering the direction the code will take, the driver can always suggest alternative routes or build upon the ideas the navigator introduces. The roles are switched frequently throughout the coding process, with the navigator becoming the driver, and the driver taking over as navigator. The process of pair programming is part of a technique termed agile development, but I’ll save a discussion on that for a future post.

The Dark Times: Before Pair Programming

My first introduction to programming began with HTML and building basic static websites, but it was 14 years ago, while I was in high school, when I built my first programs in QBasic and Java. As with many people who are first exposed to programming, however, I initially only flirted with it from time to time before becoming serious about learning. Over the years, I continued to play around with code, build small programs here and there, utilize some free learning resources online, and also work with database systems for jobs I had. It wasn’t until about a year ago that I became serious about becoming a software developer. I began to delve into more advanced features of topics I had gained some familiarity with before like HTML, CSS, Bootstrap, Sass, and jQuery, but also really began studying JavaScript more in depth and the principles and techniques of software engineering. This last part was an important one that many beginners skip over. No matter how well you may know a programming language, without a solid foundation in the best practices and principles of how to write code, you will always be lacking a vital part of the skill set that makes a good developer.

In early 2017, I began investigating software programs to apply to and discovered Viking Code School’s full time immersive program. I went through the highly selective application and interview process (they accepted less than 1% of applicants), all while completing a heavy dose of prep work that would get me ready for the intensive daily course that was to come. After being accepted, my enthusiasm and confidence was high, but it soon wavered as the start date for the course grew closer and I still felt I did not have a thorough understanding of all the prep. I would spend hours trying to figure out a particular error in my code, scouring Stack Overflow and other online resources. I continued to make steady progress at what I felt was a good pace, but looking back now, it was a snail’s crawl compared to what was to come.

A New Dawn: Pair Programming. Every. Single. Day. (well, almost)

Before Viking’s program began, we had the ability to start communicating with fellow students in our cohort as well as previous graduates and the instructors. It was when I began utilizing these contacts and having person to person interactions that my learning really accelerated. Our cohort for the program was 10 people, including myself. When class began, we gathered five days a week, every week. Daily classes included lectures with instructors, exams, and discussions. By far, however, the meat of the course was pair programming.

Every day, for about 10 hours, each of my classmates and I would be paired with a partner and assigned a program to be built that focused on the new technologies that we had read about during hours of reading and studying the night before. We took turns switching between driver and navigator through cycles called Pomodoro or tomato timers. The cycles would last for 25 minutes each and after a series of several cycles a short break would occur. After only one week of following this daily process, I felt like the speed at which I was learning had increased tremendously. After 3 months of this, I have evolved alongside my classmates into a full stack developer, having consumed a breadth of new knowledge I couldn’t have conceived of at the start. In just that short time, we learned how to program on both the frontend and the backend, studying technologies and languages such as JavaScript, Node, Express, React, Redux, SQL, PostgreSQL, Sequelize, MongoDB, Mongoose, Jasmine, jQuery, HTML, CSS, Bootstrap, and Git. We covered test driven development, agile methodologies, and the principles, techniques, and best practices of software engineering.

What makes collaboration so effective for learning?

Working alongside others breaks down barriers that block us when we are working independently. No matter how hard you may work at something, sometimes you just can’t see the solution or understand the process. Having a second pair of eyes on your code or talking through the steps on how to reach a desired outcome can make all the difference.

Cooperating with a team or a partner on a project contributes to the three most vital qualities that make us who we are and who we will become: knowledge, experiences, and the influence of others. Working closely with others combines and intensifies the way in which we acquire all three of these elements.

As the Viking program comes to a conclusion, I realize I want to continue to connect with other developers and work in teams to build applications and keep learning. While there are wonderful existing online communities like FreeCodeCamp that provide an excellent way to organize, I want to bring together a smaller group of developers that have reached beyond the beginner stage of their learning, particularly recent graduates of bootcamps or university programs, and have a similar interest in working remotely as teams. Coder Bastion is my solution.

Coder Bastion is a new community of software developers who collaborate on projects and help each other learn new coding languages and skills. The community’s logo is a reference to the bastion or star fortress, a strong fortification built between the late 15th and early 19th centuries during the age of gunpowder when cannons dominated warfare. A bastion is an institution or place that strongly defends or upholds particular principles, attitudes, or activities. Coder Bastion will have its own publication here on Medium where members can contribute articles featuring their projects and challenges they have encountered. The group is open to any software developers, including graduates and current students of coding bootcamps or university computer science, software development, or software engineering programs.

Read more here about how knowledge, experiences, and the influence of others make us who we are.

Fall 2018 Update: While Coder Bastion successfully brought together some diverse software developers, the organization has shut down in favor of integrating with other existing coding communities. Pair programming continues to be one of the most beneficial ways in which I broaden my knowledge.

--

--