Mayowa Olufeko

Mayowa Olufeko

I design and develop
software applications



Pair Programming Is The Best

Teamwork really does make the dream work. This week has been a good refresher on programming concepts, as well as an amazing introduction to some new concepts.

I pair programmed with 3 different engineers this week, and to say it was beneficial is an understatement. I had no idea people programmed in pairs, and now I’ve had the experience of coding alongside a teammate, I’ll certainly hold fond the benefits I’ve reaped.

If you’re unfamiliar with pair programming, what happens is two people work together to complete a software engineering program. The two people each take a role of navigator and driver. The driver is the person who writes all the code, using their logic to solve/complete the problem. The navigator is the person who uses their problem solving skills to understand exactly what the problem is, before disseminating instructions to the driver.

Passing Tests

pair-prograaming-driver

Why I like Pair Programming

Lower workload

Solving problems when programming is said to be the hardest part of it all, with the actual coding not being difficult. What I like about pair programming is that it gives you an opportunity to focus on either part of the design/develop sprints in the software development lifecycles.

Your sole focus is on design and solving the problem when you are a navigator. Sometimes, the extra layer of writing out the code can take away from the algorithmic thinking and problem solving aspect of software engineering. Navigating provides a good break from this.

With driving, being able to write out the code and getting the correct syntax and no errors is good so that the program actually works. Being able to focus solely on driving reduces your chance of making syntax, reference, or even type errors. Having a navigator also provides another cool benefit - you get to see a different way of solving a problem. Being a good driver, I would wait from instructions of the navigator - and become amazed when they don’t solve the problem the same way as me! Pair programming develops patience, because there is always more than one ways to solve a problem; how each programmer gets there gives you another perspective.

Navigating

pair-programming-navigator

Deeper Understanding

This is really an extension of the benefits of a lower workload. With diriving and navigating, the ability to focus increases because you have half the tasks required in the process of designing the logic of the programme and then writing the program error free.

For me, when I was navigating, when I wasn’t thinking about writing out the solution, it allowed me to enter rubber duck debbuging mode fill throttle. The conversations I had with myself helped me to understand how I think of code, and also how to explain myself to correctly communicate my logic/problem solving to my partner in a way that will help them understand what algorithms and data structures are in need of use.

With driving, the focus on writing the code helped to improve my ability to translate what my navigator was saying and translate it correct, efficient code. Driving means you are being led by the navigator. When you are not thinking about navigating, driving can sometimes feel like you’re not going anywhere, but once you start to complete the logic given to you by your navigator you begin to see how they are trying to solve the problem and once you complete the drive and run the programme, seeing the tests pass feels like magic.

Highest Code Quality

The lower workload, combined with each person gaining a deeper understanding of software engineering principles, provides the perfect training ground for great code quality. Principles such as DRY can be properly executed by the driver with oversight from the navigator. And with oversight from the driver, the navigators algorithmic thinking is correctly interpreted. Having 2 software engineers working on this makes the codebase easier to maintain, as a pair of eyes and brains have actively created this program. Yes!

Because the code qualiy is higher, so is the skills of the developers who have gone through the pair-programming process. The actual process of design and developing efficient code can be a very independent process. Inroducting pair programming spruces up the creative thinking of the engineers through teamwork, communication, and engineering skills. This soft-skills hard-skills upgrade is always seen after a pair programming session.