Harvard Business Review, Inc., Fortune, Entrepreneur, Fast Company, Forbes. These are leading business publications whose followers may have noticed posts about the importance of “soft skills.” Skills like critical thinking, time management, problem solving, and even creativity—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 Hackbright Academy requires students to utilize pair programming as part of its hands-on learning approach, Hackbright 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). 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.
“In the workplace, it’s impossible for one engineer to understand 100 percent of their company’s codebase,” said Ashley Trinh, principle curriculum developer at Hackbright Academy. “If your code interacts with someone else’s code, it’s far more efficient to discuss your approach with that person than it is to become an expert on their code.”
Why Pair Programming Matters
So how does pair programming translate to usable soft skills? Pair programming requires coders to communicate technical ideas effectively, both during technical interviews and on the job.
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.
“Pair programming is a way to practice technical communication skills in the context of collaborating on code with another person,” said Trinh. “As an engineer, you have to be able to talk about your work and thought process. If you can’t advocate for your ideas, you won’t be able to effectively advocate for yourself in a technical interview nor in the workplace.”
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 includes a “Driver” and a “Navigator.” According to Hackbright’s education staff, Navigators check the map and Drivers steer the ship. 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. Perhaps most importantly, you’ll be switching roles, and often! A good pair programming practice is five minutes in the 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 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 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 Hackbright, these are the pair programming tools set for students to pair program in their software engineering programs:
- Use a single computer with one Driver and one Navigator.
- Read the problem out loud.
- Ask each other questions.
- Decide on a plan together.
- 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.
“Practicing a skill can be useless if you don’t do it deliberately. You’re not just pair programming, you’re also practicing how to ask the right questions, how to make sure you understand another person’s explanation of code without needing to read an actual line of code, and how to explain your ideas so another engineer understands them,” said Trinh.
Pair programming at Hackbright Academy 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.
For more information, take a look at upcoming courses and scroll down to read about Hackbright Academy’s education philosophy.
- Admissions Office (13)
- Adora Cheung (1)
- Alum (84)
- Blog (131)
- Career Services (22)
- Diversity (12)
- Engineering Advice (62)
- Hackbright Field Trips (19)
- Hackbright Mentors (20)
- Hackbright News (64)
- Homejoy (1)
- Podcast (1)
- Profiles of Engineers (96)
- Recruiting & Hiring (15)
- Resources (38)
- Student Blogs (22)
- Tech (45)
- Thought Piece (21)
- Uncategorized (44)
- Video (13)