For several years now, we have been running a developer book club at work. We pick a book relevant to software development, and read a chapter a week. Every other week we meet for 30 to 45 minutes and discuss what we have read. It is quite popular and useful, so I thought I would describe how we do it, and why having a book club at work is a good idea.
At TriOptima, we keep a wiki-page where anybody can suggest books to read. When it is time to vote for a new book, we pick some of the new proposals and the older suggestions that came close to getting picked last time. Here is the most recent result:
Usually we read the whole book. But if it is really thick (like Code Complete), we pick the chapters that look most interesting and only read those. Every two weeks we then read a few chapters (around 40 to 50 pages). Sometimes it is hard to find the time to read, so it is good to keep it fairly short. I read on the train to and from work, which gives me 40 minutes of reading per day. This means that I usually finish the current assignment in a few days.
We meet every other week for 30 to 45 minutes and discuss what we have read. I have found that discussing what I have read with my colleagues add another dimension compared to just reading the book. Frequently they also turn into useful discussions on how we work.
The current book is The Effective Engineer by Edmond Lau (very good so far). Books we have read previously include:
- Building Microservices
- Effective Python
- Code Complete
- Team Geek
- The Design of Everyday Things
- Release It!
The company pays for the books, and we read in our spare time. I think this is a fair trade-off. The price of a book isn’t high in relation to the value of the knowledge you gain from reading it. And both the company and the individual gain when we learn new things.
Learn more. I think reading programming books is a great way to learn more about software development. Reading in the book club has the added benefit of getting to discuss the content with my colleagues. This is good in two ways. Firstly, when I read, I underline the parts I want to bring up for discussion later. This makes me think more about what I am reading. Secondly, the discussions themselves usually become very interesting.
Trigger discussions. The most surprising benefit of the book club has been the many interesting discussions on how we work. We are currently five development teams at work, and often the book discussions have acted as a catalyst for comparing how we do things. Example topics: how we build and deploy, coding styles, tools that we use, and how we do code reviews. We could of course discuss these topics anyway without the book club. But these discussions happen way more often in the book club meetings than at other times (like at the coffee machine).
Nudge. Sometimes it is hard to find the time to read. Having the regular meetings creates little mini-deadlines that make it just a little bit easier to get around to reading that book. I see that in myself for MOOC courses too: I often finish the ones that follow a set schedule, but (so far) I have not finished a single one that I can take at my leisure. A little nudge gets more people to actually read the book.
Good ideas to apply. Most books we have read have good ideas worth trying out. Even for ideas we would have thought of anyway, it is still useful to be reminded of them, and to discuss them together. For example, this spring we read Release It!, and it mentions the technique of using synthetic transactions to check the system. The idea is to periodically send fake transactions through the system, and verifying that they are processed correctly. This way we get much better error detection than simply checking that the server is up.
Recruiting. Almost all companies claim that they have great developers. However, it is quite hard to know if this is true or not when you consider joining. Having a book club doesn’t automatically mean that the developers are good. But on some level it at least shows that they care about the craft of programming. When I was about to join TriOptima, I remember taking it as a good sign that there was an active developer book club there (along with lunch-and-learn videos, conference attendance etc).
So far, I have really enjoyed our book club. I have read many good programming books through it. The discussions have made me learn more than I would have, had I just read the books myself. If you have experience from running or attending a developer book club, please share in the comments. And if you organize one, don’t forget to bring some fikabröd (treats) to the meetings.