Reading
I have compiled this list primarily to remind myself of great books I have read that can also help the people I am mentoring. I think it might be useful for others as well. The books are not in any particular order.
The Staff Engineer’s Path
Great book that I plan to use for mentees who want to ‘level up’. Clear explanation of what is expected of seniors and the roles of staff.
Main topics
Leadership, Expectations for senior+ roles, Project management
Most useful chapters
Three maps, Finite time, You’re A Role Model Now (Sorry)
Tidy First?
Small book that can be read in a single afternoon. First part is about refactoring, second half is much more about business and if we should really clean up, why and when. I would recommend the first part to juniors instead of clean code (really, please do not recommend clean code…). The second part is good if you feel a bit more philosophical, but in the context of mentoring I do not see many occasions to really recommend it. Still, the second part is a maximum of 2 hours reading, so I would not skip it myself.
Main topics
Code quality, refactoring
Most useful chapters
first half of the book
Fundamentals of Software Architecture
When I wanted to learn more about architecture I started with this book and I think I was really lucky. It is a great introduction, starting with what architecture is, how it can help software, what tools architects use… The second part of the book is an overview of different architectural styles where the concepts from the first part of the book are put into practice.
Main topics
Architecture
Most useful chapters
Architectural thinking, Modularity, Second half as a reference to have at hand
Good strategy / bad strategy
This book is more business-oriented than code-oriented. But even for developers, understanding the reasoning behind business decisions (or the lack of reasoning) is very important. I would recommend it to someone who is struggling to understand business decisions, or the reasons why the big rewrite was rejected by the client.
Main topics
business, strategy, big picture
Most useful chapters
Bad strategy, Why so much bad strategy, Proximate objectives, Inertia and Entropy
The DevOps handbook
Classic DevOps book and still the best overview of DevOps you can read. Anyone who runs their own software should read this.
Main topics
DevOps, improvement of existing systems, Operations
Most useful chapters
Part I - three ways, Enable fast and reliable automated testing, Automate and enable low risk deployments
A philosophy of software design
If you have junior and want to push his understanding of coding a bit further, I would recommend this. It goes deeper than best practices and talks about concepts and what makes good code good. I red this one a long time ago (so no recommended chapters - sorry) but the memory of reading this is that the world of software engineering expanded right as I was reading.
main topics
abstraction, modularisation, code quality
An Elegant Puzzle
This book is about management. As with Good Strategy/Bad Strategy, I think it is good for developers to have a better understanding of management for their own good. This book is written for developers moving into management roles and a lot of the lessons covered are useful event if your dream is to sit uninterrupted building new features. Big advantage of the book is that it is very practical, it does not cover too much theory but gives clear specific advice.
Main topics
leadership, tech strategy, management
Most useful chapters
Product management - exploration, selection, validation, Visions and Strategies, Kill your heroes
The Software Engineer’s Guidebook
I did not like this book as much as others on the list, but it is still worth mentioning. Mainly because this book covers a lot of topics. Great to quickly refer someone to other materials or to get an overview of something.
Missing books
In this list I have included books that are also good, but are either too technology specific or not universal enough. Some of them I am currently reading but have not finished, so they have not made the list.
- Designing Data-Intensive Applications - distributed systems
- Working Effectively with Legacy Code - best practices
- Phoenix project - novel about devOps, it is not as bad as I thought it would be
- Building evolutionary architectures - more in depth look at architecture
- Mastering Emacs - emacs :)
- Typescript in 50 lessons - typescript
- Software architecture the hard parts - architecture
- Grokking algorithms - algorithms