Great software engineers are skilled at more than just coding. In fact, at Codesmith, we know that technical and non-technical communication skills, perseverance through challenges, and problem solving ability are just as crucial as programming knowledge in the path to becoming a successful software engineer.
So, how can aspiring engineers practice and hone these vital skills? Enter pair programming.
While we know that pair programming is an indispensable exercise for current and aspiring software engineers, we also know it can seem daunting or intimidating to work through code with a stranger. We spoke with two Codesmith alums, Leilani Hernandez and Alessandro Battellino, to learn about their experiences with pair programming, discover how the practice supported their growth as software engineers, and dispel any fears new developers may have about the practice.
Pair programming is an exercise that strengthens your ability to problem solve and technically communicate while building with code. During pair programming, a group of two splits up into two roles – driver and navigator – to solve a programming challenge. The “driver” is the person actually writing the code, while the “navigator” is the person vocalizing the solution.
Acting as the navigator helps coders improve their problem solving and technical communication skills. While, acting as the driver helps coders hone their ability to understand technical verbiage and write accurate code.
Leilani Hernandez (left) is a recent Codesmith graduate of the West Coast Remote Immersive and a current Codesmith Engineering Fellow. Prior to Codesmith, Leilani was a non-profit professional in the youth development space.
Alessandro Battellino (right) is a recent Codesmith graduate of the East Coast Remote Immersive and a current Codesmith Engineering Fellow. Prior to Codesmith, Alessandro was working in the financial and consulting industries.
Leilani: The first time I participated in pair programming was when I took Codesmith’s Javascript for Beginners program. I was so nervous, and I clumsily tried to talk my way through what now seems like very simple bits of code.
Alessandro: The first time I participated in a pair programming session was in a workshop hosted by Codesmith!
Leilani: Pair Programming has really brought new light to the importance of communication. You need clear communication to describe solutions to your programming partner. You need to be an active listener to be able to capture ideas from your partner and translate them to code. And, you need to be able to communicate your questions or needs for clarification.
Alessandro: The lessons we learn from participating in pair programming sessions are numerous, and, personally, they’ve been not only helpful in programming environments but also in different areas of my life. Beyond technical benefits, pair programming has taught me the importance of being an empathetic engineer – as the word suggests, the capacity to empathize or understand the feelings and motivations of other engineers. After being introduced to this concept, I now look for and strive to promote it among my team members whenever I can.
Leilani: I’ve grown a lot in my ability to technically communicate, read and understand large amounts of code, and partner with others in the process.
Alessandro: I’ve seen an exponential growth of my interpersonal skills and teamwork during code reviews and team projects. During pair programming sessions, I also notice that I can now adapt to my partner’s coding and working style more easily, and communicate my ideas more effectively.
Leilani: Pair programming provides many benefits for engineers. Engineers will write better code having had additional eyes on it as it was developed. They also get the benefit of learning from their colleagues and getting to share what they know with others. In addition to the technical benefits, engineers will improve their communication and interpersonal skills as they get to work with different colleagues.
Alessandro: Pair programming brings many benefits to both developers and their employers, from better interpersonal skills to higher code quality. On the technical side, this practice can be a great learning opportunity for engineers as they can be introduced to new concepts and syntax as well as a way to practice and improve their technical communication.
In case someone has better mastery of a topic, this is also a great chance to mentor and train other engineers – which I personally see as one of the most fulfilling coding experiences since you get to help your partners while solidifying core concepts. And, lastly, pair programming teaches engineers the importance of adaptability – recognizing that every interaction will be different depending on each partner’s character and level of knowledge. Appropriately adapting to those variables is key to a successful and productive session.
Leilani: Pair programming unavoidably includes the risk of making mistakes and being confused or stumped in front of another person. It can feel scary and very vulnerable at the beginning. The beauty of it is that the other person is also likely feeling that! Remember that pairing gives you a chance to laugh off mistakes, ask good questions, and learn (either from your partner or as you work through it together).
Alessandro: Feeling nervous about joining a pair programming session is totally normal – I used to feel that way all the time at the beginning and sometimes I still do. Before attending a session, ask yourself “what’s the worst that could happen?” Do you think you’re going to look or say something dumb? Are you afraid of getting stuck on a problem and not being able to figure it out? Sooner or later, these are things that are going to happen, but should they stop you from participating and reaping the benefits of these sessions? Absolutely not!
Even the most skilled engineers feel nervous and go through moments of self-doubt during code reviews and pair programming sessions. Keep in mind that the benefits you’ll get by participating in pair programming are substantial, and even if any of those things happen, this is your chance to see them as learning opportunities and opportunities to get better every time.
Leilani: Pair programming has been a great entry point to getting to know others in my cohort. It’s a chance to get to know how they like to work and to understand their approach to different problems as you either laugh or struggle together. As I’ve worked with more folks, I’ve also been encouraged by the amount of passion and drive from everyone around me - it’s been a great motivator during some of the tough points in the curriculum.
Alessandro: Pair programming is a great way to network and build stronger bonds with colleagues and fellow engineers, and Codesmith does an excellent job at providing numerous opportunities to practice throughout the program. In my own experience, pair programming has allowed me to meet and connect with incredibly interesting engineers which, in turn, helps me build and stay engaged with the community.
Pair programming is a vital aspect of Codesmith’s immersive experience. To help our community prepare for the immersive and develop the technical communication and problem solving skills necessary for a career in software engineering, Codesmith offers several avenues to start pair programming.
We look forward to welcoming you to the Codesmith community!