Books every software engineer should read

Books every software engineer should read

I'm willing to bet money one of these books will help you grow.

Introduction

I don't agree with every sentence in every book. I remain open-minded. I take the good and leave the bad. If I disagree with something, it makes me think, and potentially learn more than I agree with.

Looking at my shelf of books I have read, these are the ones that stick out. Books I benefitted from and would have recommended to my younger self. If you're doing web development like I am, then every book will help you.

I'll share the books and sentences that come to mind.

The books

Clean Code

A book that made me write better code. After reading this book, for the first time, I started following the single-responsibility principle.

The Pragmatic Programmer

A book that inspired me to take ownership of my career and broaden my skill set.

The Software Craftsman

A book that taught me software craftsmanship and what professionalism in software engineering is.

Pragmatic Thinking & Learning

This book made me understand why I get solutions in the shower. It's a book that taught me why I must form habits that trigger my right brain.

Lean Software Development

A book I think every software engineering team should read. The Lean principles are amazing:

  1. Eliminate waste

  2. Amplify learning

  3. Decide as late as possible

  4. Deliver as fast as possible

  5. Empower the team - people with the knowledge make the decisions

  6. Build integrity in - integrity is not just quality, it's also adaptability to change

  7. See the whole - don't optimize pieces at the expense of the whole (put all metrics one level above the area you want to optimize)

Modern Software Engineering

This is the first book that made me understand what software engineering is. It opened my mind and made me question the practices I follow religiously.

From Chaos to Successful Distributed Agile Teams

I loved this book. I was looking for a book on remote work. This is the book for teams that want to become agile remotely.

Learning Domain-Driven Design

Finally, a book that can explain Domain-Driven Design. I guess it's because the author himself struggled to learn it. This book is a gem. Everyone should read it.

A Web for Everyone

A must-read for anyone who wants to build user experiences accessible to everyone.

Inclusive Design Patterns

The best book I have read on accessibility. It teaches you accessible patterns, from design to code.

Don't Make Me Think

A book I need to re-read, the best design book that's out there.

Clean Agile

A book that made me understand what agile means. All misconceptions I had got demystified.

The Effective Engineer

This book made me understand that working more hours won't make me have more impact. Of course, it can, but there is no direct correlation.

Engineers Survival Guide

I wish this had been the first book I read. I could've avoided many mistakes if I had read this book.

Code Complete

The bible for writing good software.

Refactoring: Improving the Design of Existing Code

The second edition was terrific. It contained JavaScript examples. I enjoyed the book. It also dove into refactoring when there are no tests in place.

The Clean Coder

It taught me the behavior of a professional software engineer—both soft and hard skills.

Staff Engineer: Leadership beyond the management track

This book was outstanding. The author interviews people who are now staff engineers. My biggest takeaway was to tell your manager what you want, not what you think they want to hear. A book I strongly recommend for anyone who wants to go beyond being a Senior engineer.

Extreme Programming Explained: Embrace Change

A book that's dear to my heart, it taught me software engineering is a social activity. Teams can improve significantly by changing the ways they work. Not just how the team collaborates, but how it works with the customers.

Conclusion

Books contain amazing knowledge. Some have hidden gems. You're missing out on good stuff if you aren't reading.