The list below comprises the books I have found to benefit me and that I now recommend to others. I’m always on the lookout for new books that will help me develop as an engineer, suggestions are welcome
Clean Code – A Handbook of Agile Software Craftsmanship Another must read that explains your responsibilities as a professional software engineer A really readable and thought provoking book, so many lessons that I wish I had been able to read about rather than learning the hard way. How to move from being an expert beginner to a craftsman. Should be compulsory reading for all software engineers
Clean Coder – A Code of Conduct for Professional Programmers A focus on what your responsibilities as a software engineer are. Again should be read by all software engineers. It helps with such useful topics as how to behave as a professional, when and how to say no, how to avoid burnout and how to deal with conflict
Clean Architecture – A Craftsman’s Guide to Software Structure and Design How to design and deliver robust flexible and reusable architectures
The Pragmatic Programmer, your journey to mastery (20th Anniversary Edition) A recent update of the classic title, still full of great tips and advice
Working Effectively With Legacy Code A practical guide on how to get a legacy codebase under control “To me, legacy code is simply code without tests.” ― Michael C. Feathers, Working Effectively with Legacy Code
Refactoring – Improving the Design of Existing Code A collection of different refactoring patterns to help improve existing code
Design Patterns The seminal work from the gang of four. There are other newer books on design patterns, but this is still well worth reading. Watch out for the Singleton Pattern though – I would now consider this an antipattern, a global in disguise.
Test Driven Development for Embedded C An excellent book that shows in detail how TDD can benefit embedded systems. I find the examples are just as relevant for those working in C++, a must read for those in the embedded industry.
Accelerate – Building and Scaling High Performance Technology Organisations A rigorous look at what high performing organizations are doing technically and in their development processes. The book provides scientific, statistical analysis of what works, I have found this to be extremely useful when trying to justify changes in the development processes at organisations.
The Scrum Guide Actually a PDF, rather than a book. Scrum is remarkably simple – read the guide! (free)
Lean from the Trenches – Managing Large Scale Projects with Kanban My current favourite lean agile book. The book is structured in two parts, the first a real world example and the second part a closer look at the techniques used.
Scrum and XP from the Trenches – How We Do Scrum (2nd Edition) Probably the best introduction to how SCRUM practically works. Extremely readable and full of practical examples of practical application of SCRUM XP principles. (Free PDF available)
Kanban and Scrum – Making the Most of Both Very practical book showing real examples of both methods, really useful when moving beyond scrum (Free PDF available)
Lean Software Development – An agile toolkit Lean thinking has been key in manufacturing organisations for decades now. This book explores how the same principles work for software development. The book shows principles for scaling agile beyond the development team. One of my favourites. Mary and Toms other books on lean are also well worth reading
Clean Agile – Back To Basics Back to the original principles behind Agile. Agile, SCRUM as originally intended is a development practice for small software teams. This book reminds us what agile is and explains principles, tools and techniques.
Agile Estimating and Planning Agile is not an excuse for not planning or estimating projects. This book provides lots of examples on how agile planning and estimating works both at the team level and scaling into large projects
Agile Retrospectives – Making Good Teams Great Retrospectives are arguably the most important of the scum ceremonies. This book is full of ideas on how to ensure that your retrospectives are effective, fresh and generate ways of improving
Effective C++ – 55 Specific Ways to Improve Your Programs and Designs Good practical advice on how to write good C++. Still relevant after the introduction of Modern C++
More Effective C++ – 35 New Ways to Improve your Programs and Designs More excellent tips. Still relevant after the introduction of Modern C++
Effective Modern C++ covers up to C++14. Modern C++ is a different language, the tips in here help to get the most from the language. I found the book harder going than the earlier ones in the series, this is probably due to how complex the language has become rather than anything else. Still it is essential to understand how to use the more modern features well.
Docker Deep Dive – Zero to Docker in a Single Book Docker is one of the key tools of software development. This book clearly covers everything you need to understand containerisation and docker in particular