November 16th, 2019 8:30am, I didn’t expect that I would be sitting in cozy Bag End to start the Global Day Of Coderetreat. But then, there I was in realm of the Middle-Earth looking forward to meet great minds of Opcito Technologies for facilitation of GDCR 2019
2500+ Developers, 140+ cities, 18 time zones and 6 continents — indeed it was not an ordinary day. Pune alone hosted 12 such events being one of the city to host largest number of events. Thanks to all the efforts by Nelkinda team Christian Hujer Siddhesh Nikude.
The introduction started with usual thought in every participant’s mind — what am I doing here on Saturday early morning leaving my cozy bed behind?
Little they knew about day ahead an introductory talk with code of conduct, four rules of simple design, pair programming, test driven development and Conway’s game of life gave them the confidence that it was not that bad idea to sacrifice the Saturday.
We respect each other and if we have questions, we ask — were the two simple rules for the whole day.
The constraints given were Test Driven Development and Pair Programming. Most of the time participants spent time in understanding the problem statement of Conway’s Game Of Life (GOL). The challenge most of the participants faced was — how all the four rules of Conway’s GOL are applied to the cells. The missing part was to understand that there exists an initial seed for the given universe and all the rules applies simultaneously.
After all coderetreat is not only about writing clean code but also about learning Requirement Engineering.
The main take away was a realization that requirement presented by Facilitator though thought to be understood by participant is not understood in it’s key aspects. Asking questions is the best idea rather than spending time discussing things which we don’t know.
It makes very little sense to struggle on your own in a territory which you don’t know. Just ask for a help without hesitation.
The additional constraint this time was that there should not be a pair with two women coders as in the first session there was so called natural tendency to pair up with same gender. IMO we should be comfortable and natural in paring up with opposite gender for programming.
Pairing up with opposite gender didn’t turn out to be a big deal with the group. That was a good sign.
Deleting the code from first session and starting fresh in the second session was not digestible to most of the participants. Collective code ownership and how to minimize the Bus factor was one of the take away from the session.
Pair Programming was still a difficult practice. Though was a pair per machine — one developer was coding and other was busy on its own figuring out the complete logic. The Driver-Navigator concept was not in place.
The Lunch Break
Delicious food by Opcito Technologies. I thoroughly enjoyed it, specially the #BhendiFry. During lunch break Sharib Jafari, facilitator of second group and myself took an opportunity to discuss on next constrains in both the groups. We also tossed idea to shuffle pairs across two groups we had formed. Aim was to get exposed to fresh ideas for participants with two different facilitators.
The first obvious constraint was not to fall asleep after such a tasty food. Of course during lunch Test Driven Development was not only the topic, we covered Taste Driven Cooking too.
Cooking is the oldest practice which teaches us not only to test the taste while we cook but also to clean up before and after the cooking, to maintain high hygiene and quality of food. This enables a cook to start next morning without previous day’s mess. So, is your code hygienic ? Do you clean often?
Almost everyone ended up using an array due to the grid in mind and finite grid somewhere back in the mind. Thus the universe had boundaries. Thus the next technical constraint we came up with was to only track live cells.
Take tiny baby steps was the take away. Besides constraint of TDD most participants tried to address big things in one go. The common patter was writing multiple tests in one go without even compiling / running it.
Pair Programming was still difficult. “I can not think if someone is sitting besides me and continuously looking at my screen.”, shared one of the participants.
Pair Programming practice is like driving a vehicle on first day in a new city. You struggle a lot to understand what are the rules, in absence of rules, specially cities like Pune.
I chose to impose use of words for methods, classes, variables only from problem statement as a constraint for the last session.
It is important that code speaks business language, ultimately that’s what pays our bills.
The learning for most of the participants was to take baby steps, ask questions when in unknown territory. Participants expressed that they experienced how TDD builds up developer confidence in their code.
It was satisfying to see all the efforts from many days with support from @Nelkinda team and host resulted in learnings and takeaways for the participants.
A bye conversation like this always puts a smile on my face…
Participant#1 — “Sir, I am very eager to apply the learnings in my work from this Monday.”
Me — “:-)”
Participant#2 — “By the way Sir, I didn’t catch your company name …”
Me — “Giesecke & Devrient”
Participant#2 — “Gise.. what?”
Me with smile of anticipation on face — “Just search on net — who developed very first SIM card, you will get it.”