In our world there are hundreds and hundreds of books to learn from. Here you have my list of books that I recommend.
My esencial tech books (must-read books):
Easy read book to learn about the Design Patterns. They are necessary if you don’t want to reinvent the wheel to solve common software problems. The single biggest benefit of design patterns in my opinion is that it gives developers a common vocabulary to talk about software solutions.
A good book to learn how to refactor your big ball of mud. Refactoring is a controlled technique for improving the design of an existing code base. Its essence is applying a series of small behavior-preserving transformations, each of which “too small to be worth doing”. However the cumulative effect of each of these transformations is quite significant. By doing them in small steps you reduce the risk of introducing errors.
“In order to create good software, you have to know what that software is all about. You cannot create a banking software system unless you have a good understanding of what banking is all about, one must understand the domain of banking.”
From: Domain Driven Design by Eric Evans.
Real examples written in PHP showcasing DDD Architectural Styles, Tactical Design, and Bounded Context Integration