Useless software development books
15 January 2023·
Like many new to software development I was brainwashed. I was told about the famous software development books and the impact they’ve had. I was convinced that reading them was necessary for becoming a good developer.
So I ordered and tried to read two of the most famous: Design Patterns by the gang of four and Domain Driven Design by Eric Evans. I was going to be the best developer ever!
Now five years later what impact did these books have? very little.
Hard to read
The problem with these books is they’re hard to read. The concepts are revolutionary but the books themselves are way too academic.
Like any academic book, the important stuff only takes up 5% of the content. The other 95% is fluff to fill out the rest of the book.
Another problem with any book is the examples become outdated. A common example in Design Patterns is a document editor that has to work across multiple window systems. These systems include SunView by Sun Microsystems and Presentation Manager both first released in the 1980s. No new developer in 2023 will be able to relate to this problem.
If the concepts are good but the books are a struggle how do we learn about this stuff?
The advantage developers have today is the amount of online content created by other developers. There are mountains of Domain Driven Design explanations out there. They’re made by developers with all different perspectives so you’re guaranteed to find one speaking in a way you understand.
And you’re not locked into long-form text. You can learn in whatever format you like: 2-minute quick explanation videos, 60-minute conference talk videos, blog posts, stack overflow answers, or even paid courses.
You can learn however you like from whoever you like.
To show the differences between the books and the alternatives let’s look at an example.
Here’s Design Pattern’s description of the builder pattern:
“Separate the construction of a complex object from its representations so that the same construction process can create different representations.”
And here’s the definition from refactoring.guru:
“The Builder pattern suggests that you extract the object construction code out of its own class and move it to separate objects called builders.”
Both explanations make sense but refactoring.guru’s explanation uses more practical terms such as “construction code” instead of “construction process”. These terms are easier to follow and visualize so I understand the concept quicker.
Not for me
This is of course just my opinion.
As someone who’s never really been interested in learning the nitty-gritty of everything the more practical language of the alternatives just makes more sense to me. I’m sure there are other people who prefer the books 📖