Pair Programing
This week of GSoC 2019 Pharo project was about learning useful coding practices and styles such as pair programing, writing easy-to-use documentation and learning about Iceberg tool - to work with git repositories.
Paired Programming is a software development technique in which two programmers switch between writing and reviewing the code while solving the problem at hand. It is this frequent role switching that allows for creation of a number of diverse and unique solutions.
Pair programming has many advantages over individual programming:
- increasing the productivity by minimizing distractions
- allowing for early detection of (possible) mistakes as they are made
- effectively expands the necessary skill set and experience needed to solve a problem
- great educational tool for beginners to transfer good coding and design practices that would otherwise take notably more time to master.
- contributes to more efficient working hours
- contributes to significant increase in the design quality of the program
Nevertheless, pair programming also has a few drawbacks (compared to individual programming) like increasing the overall project cost and the total number of man-hours (amount of work done by an average programmer in one hour) needed to deliver a finished product .
The pair of programmers usually work together at one workstation, but it is also possible for the two programmers to work remotely via a shared desktop or some other tool. This is known as virtual or distributed pair programming.
During this week I reviewed Pharo and started preparing for the GSoC Coding period. I went over some relevant parts from “Learning Object-Oriented Programming, Design with TDD in Pharo”, and had a few pair programming sessions with Nina Medić where we implemented some examples from the book. This was very useful for me as it helped me quickly review some relevant topics, as well as identify some potential problems, i.e. setting up and using the Iceberg tool. I found useful tutorial about using Iceberg on Pharo wiki.
I also had a pair programming session with Stéphane Eggermont and Stéphane Ducasse where I learned a lot new things about how to use a baseline and how to depend on a project. Also we talked about how to write good documentation that can help users get up to speed with project, using executable comments and precise sentences. It was very useful to me to see how experienced Pharo developers interact with the system, what their workflow is like and what do when they encounter an error.
We also talked about my project and about using Project Boards on GitHub to log my actions and project progress. It was a fun week.