Adapted from the Hackbright Academy post.
Have you heard of soft skills? Followers of leading business publications such as Fortune, Inc., Forbes, Harvard Business Review, Entrepreneur, and Fast Company, may have noticed posts about the importance of soft skills. They include critical thinking, time management, problem solving, and even creativity. And they are all boxes that programmers have to check.
Other skills, like emotional intelligence, interpersonal communications, collaboration, and teamwork, also appear to rise to the top. These may seem less intuitive for aspiring coders, but they are important soft skills to present when interviewing for software engineering and developer positions. Pair programming can help cultivate these soft skills, which begs the question: what is pair programming? Since Devmountain requires students to utilize pair programming as part of its hands-on learning approach, Devmountain staff can help answer that question:
The Practice of Pair Programming
Pair programming (or just “pairing”) is the practice of coding with a partner developer, one person typing at a time. The most dedicated paired programmers use only one computer, with one developer “driving” (aka typing) and the other developer observing. While that approach might initially sound time-consuming, resource-intensive, even intimidating, successful pair programming can be more efficient because two coders working together often motivates better problem solving while reducing bugs and errors in the code.
The shorthand of pair programming is that one person comes up with the algorithm to solve the problem and the other produces the syntax (more on this later). The pair work together to come up with a plan before the typing begins. Working alone, coders have to come up with both simultaneously. It’s not that the latter isn’t possible, but professional developers at all levels may well find themselves working on massive systems with highly consequential code. In that light, communication, collaboration, knowledge-sharing, and teamwork start to sound like minimum job requirements.
Why Pair Programming Matters
So how does pair programming translate to usable soft skills? Pair programming requires coders to communicate technical ideas effectively.
It’s not just about coders talking to other coders, either.
While a team of engineers may most commonly interact with each other, often engineers are pulled into client-facing meetings to discuss their work or asked to explain their code to users. Depending on the organization’s structure, engineers or developers may be part of an account team regularly interacting with clients. In short, everyone’s work is improved when code can be explained and justified.
“Learning to pair program is a skill our students learn that is vital to making them industry-ready,” said Adam Kent, education staffing supervisor at Devmountain. “When students code alone they often make small mistakes that can cost them precious time when simply adding another pair of eyes helps them prevent or correct those simple mistakes. Our students, and their future employers, know what a time-saver this industry standard can be.”
How Is Pair Programming Used?
To understand pair programming, it’s important to understand the methodology where it is deployed: Agile. Agile software development relies on collaboration among clients, developers, and testers from the beginning of the project. Software is subsequently developed in short iterations so that continual feedback can be received.
According to the Agile Alliance, a key differentiator of Agile is its “focus on the people doing the work and how they work together. Solutions evolve through collaboration between self-organizing cross-functional teams.” Polished communication is essential for a lot of people of differing backgrounds and technical ability to work together successfully across multiple iterations of a project. Coders may encounter Agile frameworks like Scrum, Extreme Programming, and Feature-Driven Development. Pair programming is one of many tools within Agile frameworks used to get work done to deliver the project and satisfy the customer.
Indeed, customer satisfaction is the highest priority of the Agile Manifesto, but if you’re new to pair programming it’s worth reading through all 12 Principles for inspiration on the power of effective teamwork and collaboration, even if the team you ultimately join is not using Agile. It is, after all, one of several development methodologies you can try.
How to Pair Program
The pair programming relationship commonly comprises a Driver and a Navigator. It sounds a little like a Maverick- and Goose-type of pairing—a U.S. Navy pilot and radar intercept officer. Sure, make it fun and fire up the Top Gun “Anthem,” if it helps break the ice and create a functional and communicative workflow. After all, a primary tenet of pair programming is that “silence is deadly.”
Indeed, according to Devmountain’s education staff, Navigators check the map and Drivers steer the ship (or jet?). What does that mean in practice?
The Driver translates the Navigator’s idea into code, focuses on writing correct syntax (that is, the set of rules that define what the various combinations of symbols mean), and asks clarifying questions.
Meanwhile, the Navigator provides the plan of action, tells the driver what to write (at a high level), and keeps an eye out for any blindspots and potential pitfalls in the code.
In one of the many ways pair programming is unlike Top Gun, you’ll be switching roles, and often! A good pair programming practice is five minutes in a role generating two to three lines of code before switching.
And it’s completely okay if you’re slower or faster than your pair or if you’re generally more quiet or introverted versus more assertive or extroverted. The most important thing is to be solution-oriented. Be patient with each other. Differences in professional work styles and experience can present an extraordinary opportunity to either learn quickly on the job or to solidify your knowledge through teaching. And pair programming should be a safe space to either practice speaking up or looking for queues to step back. All ideas are valuable and both sides of the pair should ask questions frequently throughout the pairing session as well as reflect on success and challenges afterward. You might ask, “Can we slow down? I would like to read more about this first” Or, “I didn’t get that. Could you explain it?” Or on the other side, “How’s this going? Do you want to take a break?” From there, the process involves just a few repeatable steps and tips.
At Devmountain, these are the pair programming tools set for students to pair program in their coding bootcamps:
- Use a single computer with one Driver and one Navigator.
- Read the problem out loud.
- Ask each other questions.
- Decide on a plan together.
- Remember that silence is deadly.
- Take lots of breaks at the same time, even more than you normally would.
- Set ground rules for when to get help.
But that said, pair programming is a skill that comes with practice. Because it can feel foreign or push you out of your comfort zone, pair programming is difficult to master, but it’s well worth the effort you’ll put in to develop a relationship of trust with your partner developer and create better code.
Pair programming at Devmountain bootcamps helps build your resume and portfolio because students learn by building, and at the end of the program, you can have a polished portfolio with real applications—and those growing soft skills—that can help you stand out.