02 - Pair Programming
The other day Shivam and I were automating some invoicing operations.

I was writing a script to integrate a 3rd party service while thinking out loud. I started by writing the below snippet of code:
school_api_base = "https://school.frappe.io/api/v2"
last_month_payout = frappe.make_get_request(f"{school_api_base}/document/School Payout", params={...})
He quickly questioned my on why I have created a separate variable for the base URL? Aren’t we using it in just the next line below?
For more context, Shivam is transitioning to development (from consulting) and is almost done with CS50.
Then I explained to him the reason behind it and why in the next request we won’t have to repeat it (“DRY”), and he exclaimed “gajab!” (~ amazing). This made me realize two things:
-
I have learned so many things over time while building stuff, that seem obvious to me when I am coding these days, but might not be so obvious for the beginners.
-
How pair programming can help in conveying thought process and fast-tracking knowledge transfer!
My Pair Programming Experience
I started to think back at my time at Frappe, specially the initial few months. Pair programming sessions with Faris and debugging sessions with Aditya were the most fun and learning heavy. I could see how they made design decisions, broke down big problems, and also could ask doubts right away!
In retrospect, BWH live-streams have a similar theme, and this might be the reason people find them very helpful?
BTW wheels are in motion and I have setup a new Frappe Wiki instance for CS17 here.
Technique
One thing is for sure, Pair Programming has to be a core feature at CS17. I just don’t know at which phase of the curriculum yet.