This is going to be a pretty straightforward list of what tech related reading I did this year. It doesn’t include hundreds of blog posts and forum discussion. I’ll break it into two categories, things worth reading, and things not worth reading. Hopefully this will save you some time. I’ll also toss in a some notes or thoughts about a book where it seems reasonable.
First and foremost I joined the Association for Computing Machinery this year on the suggestion of a coworker. They have an incredible collection of papers that are worth the price of admissions. Plus they have a reasonable code of ethics that makes a good starting place for developing your own code of ethics. By all this I mean... if you are inclined to read academic papers joining is a pretty solid decision.
A Philosophy of Software Design by John Ousterhout
This one is fine. It has some good stuff. It has some silly stuff. But the discussion about API first design, and appropriately sizing your modules provides a good framework.
It Doesn’t Have to Be Crazy at Work by Jason Fried and David Heinemeier Hansson
Another fine one. It feels self righteous and preachy. Almost put this on the not worth it list, but if you read it and think, "dang my company is nothing like this" you might want to start looking for a better company. There are reasons not to be exactly like what they outline (like not choosing the same business model as they have), but your company shouldn’t be the exact opposite of all the things that they have written. And it’s worth seeing a contrasting view.
Verbal Judo, Second Edition: The Gentle Art of Persuasion by George Thompson
So far this has been fantastic. Great book on communicating effectively and verbally defusing situations that are tense.
Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers by Alexander Osterwalder
Excellent Book on developing business models.
Radical Candor by Kim Scott
If you want to get better at being a team member or team leader read this one. Excellent book.
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann
Read this book. It’s incredibly heavy at times. Totally worth it though. If you want to understand the tradeoffs and decisions that must be made in data intensive applications, there is no substitute. Excellent read. But be ready for a lot of intense theory. Really can’t recommend this one highly enough. Read it. Read it now.
Guidelines for Adopting Frontend Architectures and Patterns in Microservices-Based Systems by Holger Harms, Collin Rogowski, and Luigi Lo Iacono
An excellent paper outlining how various FE architectures play with microservices. Tradeoffs and advantages of each one. (Available in ACM)
This paper proposes some really interesting ideas for creating fully functional web components backed by serverless functions. Makes for an interesting potential architecture for the future. (Available in ACM)
These books did not live up to the hype... I most likely did not finish reading them, and leave them here as a warning to you. Hopefully saving you some cash and some time.
Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software by David Scott Bernstein
This book is terrible. Not worth it.
Your Code as a Crime Scene: Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs (The Pragmatic Programmers) by Adam Tornhill
This one has a few good parts but you can pretty much skip it. Read the Microsoft papers on bug generation causes and prevention and you will be better off than having read this book. (seriously Microsoft has done a ton of academic research on the root cause of common bugs and how to prevent them)