I design and develop
software applications
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
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
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.
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.