“Oh my god, not this again!” is the username that a developer in my team once picked to signal his resistance against our switch from Subversion to Git. Although done in jest, there was substantial resistance to new ideas in that team. And I get that — letting go of something you’re used to causes uncertainty. At the same time, continuing to grow your skills is vital in a field where technologies, frameworks, and skills change so rapidly. So what do you do? How do you get other developers in your team excited about their craft?
“How do you get other developers in your team (more) excited about their craft?”
Recently, William Water and I had the pleasure to host a session about this at the XP Days Benelux 2019. William was my colleague at NowOnline, a company where we established a pretty strong developer culture. In the workshop, the 30 participants shared and developed strategies to ignite Development Teams. I will be publishing them in the coming months, as I believe each of them can help you move forward. In this post: start a book club for developers.
Gatherings of our book club at NowOnline often looked like this; people gathered in one of our meeting rooms. Or on the floor upstairs, amid the desks of the Development Teams.
- Pick a book for developers to start with. See some of my recommendations below;
- Invite people as openly as possible. Don’t require or suggest that people join. Instead, invite people based on their desire to learn how to do their current work faster, better or safer. I’ve found that it works better to have one or two intrinsically motivated members than a whole group of people who don’t really want to be there.
- Buy copies for everyone who wants to join;
- Pick a date for the first gathering (~1 hour). Do it during regular hours: developing your skills is also work. Invite people to read a number of pages that seem reasonable based on the length of the book;
- Use a simple Liberating Structure like 1–2–4-ALL to digest what each of you took from what you read. As the facilitator, you can ask guiding invitations like 1) what has become clearer for you? 2) what is unclear, confusing or surprising? 3) how could we apply this to our work? If the chapter was particularly practical and applicable, you can also use a structure like 15% Solutions to identify how people want to apply their learnings;
- Invite someone else in the group to lead the conversation the next time;
You Know It Is Working When …
- People appear again for the second edition of the book club;
- People bring others to the book club or ask if its okay if others join;
- People start suggesting new books;
- People start referencing what they read in the book in conversations with their teams;
Some of the coding standards that we developed at NowOnline (this was one of the first versions) that emerged from reading ‘Clean Code’ with our team. Although my views have shifted a bit, I still follow the majority of them.
There are many interesting books to read. But over time, I’ve had the best experiences with books that are not strongly tied to a single language. Instead of books that are about the grammar and spelling of individual languages, I prefer books that are more about style. They offer a more inclusive perspective on coding and are also more timeless. For example:
- Clean Code or Clean Coder by Robert C. Martin (I vastly prefer the first);
- The Pragmatic Programmer by Andrew Hunt and David Thomas;
- Design Patterns: Elements of Reusable Object-Oriented Software by ‘the Gang of Four’: Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. This is a very tough book, and not all patterns are still as relevant as they were in 1994, but it's foundational, to say the least;
- Head-First Design Patterns by Eric Freeman & Elisabeth Robson is a good introduction to design patterns. If only they would’ve picked a better cover :)
- Refactoring by Martin Fowler and Kent Beck is a great introduction to effective strategies for refactoring;
- The DevOps Handbook by Gene Kim, Jez Humble, Patrick Debois, and John Willis is a great way to rethink how you’re developing and releasing software, the role that automation plays and how developers can promote Agility;
- Test-Driven Development by Kent Beck is a foundational book for testing;
Obviously, there are many other titles to explore. I also recommend reading books about security and privacy-by-design, about effective debugging strategies and useful perspectives (e.g. domain-driven design, messaging, architecture).
“These books help elevate software development well beyond just writing code.”
Starting a book club for developers may seem like an incredibly simple, even obvious, strategy. But I’ve found it to be a good way to inject new norms and values into an environment that may not be used to it. In particular, these books can help developers connect with their craftsmanship as something to be proud of. These books help elevate software development well beyond just writing code. Although it may not strike a chord with every developer, I’ve seen it work many times in the past. And that includes the developer that used ‘Oh my god, not this again’ as his username. He’s grown to become an incredible developer, responsible for improving and maintaining a high-traffic web-application.