Culture is a hard thing to define. It has many layers, many facets, many manifestations and two people looking at the same practices might come to different conclusions about what it implies. Rather than wade into the choppy "what is culture" waters, we thought we could let you come to your own conclusions about the engineering culture here at Spreedly with a quick peek into something we've instituted recently - an engineering book club.
Here's how it works at Spreedly: One of the engineers recommends a book, most often, but not limited to, a legit software development topic. Some recent examples include Distributed Systems for Fun and Profit and Release It!. Each week, after reading the same few chapters, we meet for an hour after lunch to discuss what we found interesting, what applies to Spreedly, anything we didn't quite get etc.
This type of internal meetup has several benefits. First, it's a no-pressure learning opportunity. You can interact with your peers and share ideas outside the normal operating environment which strengthens existing relationships and creates new ones. It also establishes the precedence that investing in yourself through continuing education is supported and even expected within the company. Couple the existence of a book club with the fact that reading for the club is encouraged during business hours and you quickly realize that the people are the priority here (much easier to say than to do).
Finally, diving into various engineering topics together allows us to take a moment to reflect on the direction of our production systems, outside the daily grind that can so often obscure this type of blue-sky thought.
As a direct result of what we've read here at Spreedly we've all taken a much more involved role in increasing the resiliency of our systems and in providing operational visibility into its various components. We now also have a shared vocabulary when discussing the growth, operation and architecture of our systems which serve as building blocks for being able to more efficiently discuss complex topics. "Network partition", ‚"circuit breaker", ‚"bulkhead" and many others are now a common part of our engineering discussions.
Hopefully this sounds like something you might want to do at your company, if you're not already. Here are some tips to get started:
- Take initiative by suggesting a book. You can offer to change the topic later if there is support for something else. Waiting for consensus can be discouraging and time consuming so pick one to get the ball rolling. Choosing fun yet relevant material can go a long way to building critical mass to get the group going.
- Figure out how supportive your organization is for the book club. It can be a benefit to your company, so they may offer to "pay" for it by allowing you to use work time for your discussions. If that doesn't work the next best option may be to schedule it during lunch.
- It's good to figure out the right pace. Perhaps shoot for one meeting per week or every other week. Break up the book into manageable chunks. It is typical for us to finish a book in 4 to 6 sessions depending on the complexity and volume of material.
- Encourage people to take notes of things they find interesting to help spark discussions. Point out any parts of the book that might be confusing or solicit questions of concepts that could use clarification. Having lively discussions will be important for maintaining the level of interest and the viability of the group.
- Consider inviting outside participants. We've attended sessions where we had people from other nearby companies drop by. It livens up the conversation and keeps you from devolving into your company's technical debt.
- If having people buy their books is a financial concern, don't forget about all the free technical content out there. There are quite a few blog series, videos and presentations online that can serve as the basis for your club.
There's quite a bit more to Spreedly engineering than our book club, but we thought a quick peek into this one aspect would give you an appreciation for what we're trying to accomplish here as we grow the team and build out our systems.