I would say that I read these book some years after than I should. I had the lucky to work with a lot of good people in my career that always pushed for code quality and reading this book was good to consolidate and reinforce what I’ve had learn.
“Leave the campground cleaner than you found it” is a statement to always remember when coding. If everyone thought like this I’m pretty sure that you codebase would be better to work in a daily basis. Write clean code is a kind of lifestyle and read this book is like the manual to follow to live in this way.
You will learn why naming is so important when coding and how to write good variable and function names, avoiding unnecessary comments that pollute your code. Why be consistent with formatting can improve your codebase, reducing the silly discussions between developers about which formatting is better.
The book also shows a little bit of solid and how it impacts the readability (train wrecks per example) and how to avoid it (it was a very good approach, considering that sometimes the letters from SOLID, except the S are hard to understand).
There are also some discussions about emerging design, unit tests and concurrency. In the end of the book you can find a good index of bad smells that can appear into your code and how to handle it.
The conclusion is that if you are a beginner developer you will learn a lot through this book, and as an experienced developer you will consolidate your skills and master it to be easier to pass the knowledge ahead to who is still starting.