facundo reviewed Modern Software Engineering by David Farley
Review of 'Modern Software Engineering' on 'Goodreads'
2 stars
The one useful contribution of this book is in its first two chapters, where the author states his intention to reclaim the "engineering" part of software engineering, compares it with science and craft and proposes that an engineering approach is possible and even necessary for software development.
The rest of the book was supposed to support those intentions but was a disappointment. Despite the title, the ideas presented here (modularity, abstraction, separation of concerns) aren't particularly modern; the techniques insisted upon (XP, TDD, continuous delivery, domain-driven design) are also 15-20 years old . This isn't a problem in itself, but the book doesn't present these techniques as effectively as their canonical sources (or Wikipedia, for that matter), is not a good summary of them and doesn't make a convincing argument about why they achieve the goals introduced at the beginning of the book. The content remains vague and anecdotal, and …
The one useful contribution of this book is in its first two chapters, where the author states his intention to reclaim the "engineering" part of software engineering, compares it with science and craft and proposes that an engineering approach is possible and even necessary for software development.
The rest of the book was supposed to support those intentions but was a disappointment. Despite the title, the ideas presented here (modularity, abstraction, separation of concerns) aren't particularly modern; the techniques insisted upon (XP, TDD, continuous delivery, domain-driven design) are also 15-20 years old . This isn't a problem in itself, but the book doesn't present these techniques as effectively as their canonical sources (or Wikipedia, for that matter), is not a good summary of them and doesn't make a convincing argument about why they achieve the goals introduced at the beginning of the book. The content remains vague and anecdotal, and closely related topics feel stretched to fill several chapters (empiricism/"being experimental", modularity/information hiding/cohesion/separation of concerns).
Instead of this book, I recommend [b: A Philosophy of Software Design|39996759|A Philosophy of Software Design|John Ousterhout|https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1531857377l/39996759.SX50.jpg|61938796], [b: The Pragmatic Programmer|4099|The Pragmatic Programmer From Journeyman to Master|Andy Hunt|https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1401432508l/4099.SX50.jpg|7809], [b: Fundamentals of Software Architecture|44144493|Fundamentals of Software Architecture An Engineering Approach|Mark Richards|https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1580813753l/44144493.SX50.jpg|68652888] and [b: The Manager's Path|33369254|The Manager's Path A Guide for Tech Leaders Navigating Growth and Change|Camille Fournier|https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1484107737l/33369254.SY75.jpg|54111007], all of which present truly contemporary takes on the different aspects of the discipline. There may be room for a book that consolidates all of them into one coherent whole, and helps to raise the bar from craftsmanship to engineering, but [b: Modern Software Engineering|57345270|Modern Software Engineering Doing What Works to Build Better Software Faster|David Farley|https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1633733111l/57345270.SX50.jpg|89753499] isn't it.