Wikimedia Engineering Productivity Team/Book club

The Release Engineering Team would like to have a semi-regular "book club" to read and discuss interesting books and/or other long-form writings.

Already Read

 * Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jez Humble and David Farley
 * Notes
 * Software Testing Anti-Patterns
 * Notes
 * Google: How to do a code review
 * Notes
 * What nobody tells you about documentation
 * Notes
 * Bugs & Priority
 * Developing a shared understanding of priorities of tasks
 * Notes

Books

 * How to Take Smart Notes. Based around a note-taking / research method developed by Niklas Luhmann, the "Zettelkasten" that's been a trendy topic in productivity-nerd circles lately. It's a short book, but there are also chapter excerpts available that might be suited to a group read.
 * DevOps Handbook
 * Getting Things Done: The Art of Stress-Free Productivity by David Allen
 * The Getting Things Done (GTD) system as explained by its inventor. Not about software. Learning GTD might be one of the most useful things you've learned.
 * The Healthy Programmer: Get Fit, Feel Better, and Keep Coding by Joe Kutner
 * Marketed towards programmers but useful for office workers in general. We will need our bodies working fine long after we're retired. The book explains how to stay healthy (long term) even when your job includes sitting for many hours a day.
 * The Kubernetes Book
 * Hands-on introduction to K8s. Could do with some copy-editing.
 * Threat Modeling: Designing for Security
 * Being prepared for security threats, systematically.
 * Mastering The Requirements Process: Getting Requirements Right
 * The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks
 * The classic book on software and computer system development, and management of said development.
 * Systemantics / The Systems Bible by John Gall
 * "A complex system that works is invariably found to have evolved from a simple system that worked."
 * Unix: A History and a Memoir by Brian Kernighan
 * This is just out, so I haven't read it yet, but Kernighan was a participant in the history and the (co)author of work like The Unix Programming Environment and The C Programming Language.
 * Continuous Delivery with Spinnaker
 * GitOps and Kubernetes "accelerate application development without compromising on security, easily roll back infrastructure changes, and seamlessly introduce new team members to your automation process."
 * Building Secure & Reliable Systems by Google SRE engineers. Free download from https://landing.google.com/sre/books/
 * Accelerate: Building and Scaling High-Performing Technology Organizations by Nicole Forsgren, Jez Humble, and Gene Kim
 * note: CPT is reading this in Q4 of FY20

Articles/Essays

 * The Cathedral and the Bazaar
 * We should probably also read something that critiques this
 * Free Software Needs Free Tools
 * Video of a talk on the subject from 2018
 * Our software dependency problem by Russ Cox
 * Software reuse is finally here, and it's creating problems (see also NPM, go get, pip, bundler, etc)
 * Against Software Development
 * Work on something that matters, if only to you
 * Reflections on Trusting Trust by Ken Thompson
 * Turing award lecture that can be summarized as you can't trust Ken Thompson anyone :)
 * The Real Reason Fans Hate the Last Season of Game of Thrones by Zeynep Tufekci
 * (MAJOR SPOILERS.) About writing and thinking through a sociological vs. psychological lens.
 * Engineering the public: Big data, surveillance and computational politics by Zeynep Tufekci
 * "[...] the rise of big data, the shift away from demographics to individualized targeting, the opacity and power of computational modeling, the use of persuasive behavioral science, digital media enabling dynamic real-time experimentation, and the growth of new power brokers who own the data or social media environments."
 * The epistemology of software quality by Hillel Wayne
 * "Studies show that human factors most influence the quality of our work. So why do we put so much stake in technical solutions?"
 * Do-nothing scripting: the key to gradual automation by Dan Slimmon (SRE at Hashicorp) This is a really short article but the practice that it's promoting is something I think we should be utilizing and I'd like to discuss it.
 * Zero Downtime Release:Disruption-free Load Balancing of a Multi-Billion User Website by a bunch of Facebook engineers. Quote from the abstract: "Zero Downtime Releaseis a collection of mecha-nisms used at Facebook to shield the end-users from any disruptions,preserve the cluster capacity and robustness of the infrastructure"
 * Testing Firefox more efficiently with machine learning
 * How to run fewer tests (to make CI faster and cost less) without compromising on quality.
 * The Test Diamond
 * A take on the test pyramid.
 * Microservices — architecture nihilism in minimalism's clothes
 * Recommended reading from Dan Andreescu, I (Greg) haven't read it yet so I won't summarize :)
 * Being Glue
 * Also a 28 minute video.
 * Via the StatusCode newsletter
 * Their blurb: "If you’re a software engineer who spends most of your time in meetings, talking to users, asking questions, and generally joining things together rather than writing code, you may be doing a lot of ‘glue work.’"
 * OAuth 2.0 protocol
 * The OAuth 2.0 Authorization Framework

Videos
(Which are not books)


 * GitHub Actions - Now with built-in CI/CD! Live from GitHub HQ
 * Github actions: the coming standard I imagine for CI/CD
 * Past, Present and Future of Empirical Software Engineering: A Q&A with Greg Wilson
 * From September 2020, Q&A with Greg Wilson (no Wikipedia page) about software engineering based on actual science and evidence, instead of what sounds good.