Book clubs are amazing

At some point in November of 2019, I asked a work colleague to be my mentor. He is a CPython core contributor, he has been at Enthought for over a decade and I wanted to learn from him. I don't exactly remember why but we decided that we would start reading a book and discuss it every week. My broad goal was to get better at writing software, which is why I think we chose to read and discuss the book Clean Architecture by Robert Martin. For those of you who don't know, it's one of the classic texts on software and software architecture.

Initially, it was supposed to be just the two of us but others in the office were interested in the book as well so there were three of us when we first met to discuss the book on the 22nd of Nov 2019. We added one more person when we met a week later. I think we discussed a few chapters every week, depending on how big the chapters were or how interesting we felt they were. We didn't have a fixed deadline to finish the book so there was no need to hurry. Not all of us attended all of the sessions and in a few cases, we completely skipped a few weeks. COVID struck in March 2020 but we continued meeting online and in June of 2020, we finished the book.

After that, the four of us read Working effectively with legacy code. We only spent 2 months reading this book, mainly because we picked the things from the second half of the book that were relevant to us and only discussed those.

For the next book, the group doubled in size. We discussed Refactoring by Martin Fowler, another classic software text. Again, we only spent 2 months discussing this book because the book is mostly examples of refactorings and we picked the ones we recently used and we felt were relevant to us, in CPython land.

After that we read A philosophy of software design by John Ousterhout. This was a small book but it was the most polarising one that we had read. We added one more person to the group but like I mentioned earlier, not everyone was able to attend every session. People take holidays, people get busy working on a project with a deadline or people just need a break. We spent around two months reading and discussing this book as well, meeting almost every week

Next was Test-Driven Design by Kent Beck, another classic. We also added one more person to the group. We welcomed 2021 with this book and spent around 2 months reading and discussing it. We moved on to 7 concurrency models in 7 weeks and we added one more person to the group. We picked up Pragmatic Programmer next, another classic text. We spent around 4 months reading and discussing this text. We added two people over the course of the book. After that, we read Fundamentals of Software Architecture and Architecture Patterns with Python. Over the course of time, the reading group slowly shrunk as people moved on from the company.

Now, almost three years from when we started the reading group, we are back down to three people and we're currently reading the classic Domain-Driven Design by Eric Evans.

Over the course of the past three years, I have learnt a lot about software and software architecture. The books definitely taught me a lot about what to do and what not to do. But, more importantly, I learnt a lot more from the almost-weekly discussions we had around the chapters in the books for the past three years. I learnt from the collective wisdom of 10+ people and their lived experiences. Each of us in the reading group has a different background and it was amazing to learn from the varied understanding and interpretation of the people in the reading group. I learnt a lot more than what I would have if I had just read the book by myself and tried to incorporate my learning at work.

A simple Google search will reveal tons of book recommendations for people interested in software and software architecture. This isn't such a list. I'm not advocating for any particular book here. Instead, i'm advocating for the reading process around the books. I'm advocating for reading groups and book clubs. Start a reading group at work, if you have the energy. Join a reading group in your vicinity, if you don't have the energy to lead one. Find yourself a reading group, whether it's for software or anything else under the earth.

In rough chronological order - Mark, Joris, Kit, Frank, Ieva, Kevin, Mayank, Maxime, James, Chigozie, Peter, Petr, Wahiba - thank you for the amazing learning experience over the past three years. And here's to three more years of learning from new people and new books!

Popular posts from this blog

Farewell to Enthought

Arxiv author affiliations using Python

Elementary (particle physics), my dear Watson