Full description not available
O**L
Essential Reading
I bought this book for myself after watching Dave Farley's YouTube channel. I've now bought a second copy for the office library and I'm suggesting that everyone in my development team reads it. For me, this is pure gold. Yes, you can get some of the info online - what can't you get online these days? - but this book consolidates many of the crucial principles of software design into a coherent guide to, hopefully, convince more developers that you can set yourself up for good (or at least better!) design and there is a tangible payoff if you do.If you do what I normally do and read the best, and the worst, reviews for a product before buying, you'll see comments about this book being repetitive, lacking actionable advice and lacking examples.Are the concepts in this book repeated - sometimes, yes. Ideas like separation of concerns and testability crop up throughout the book. There's a reason for that. The are fundamental to achieving good design (which is where this book is trying to take us) and if that means some of those points need to be hammered home a little bit harder, so be it.Lacking actionable advice? I don't get this criticism at all. The book is literally a guide on what you should strive to do to make better quality software. Make your designs testable. Achieve that with tools like TDD and CD for fast feedback. In the process you will achieve coherent design, separation of concerns and practice the correct degree of coupling. All of this is actionable - you many need to read more deeply into those concepts to apply them, but that's on the negative reviewer, not the author.Lacking examples? There isn't a LOT of code, but where it's helpful to illustrate a point more clearly there are examples, and I liked the fact that the author mixes up languages to show that none of this stuff is dependent upon the IDE, OS, or language du jour - these all come and go, but the good practice that this book advocates isn't a "fashionable" thing. It's just "good". My hunch is that this criticism comes from those with little actual experience, looking to be spoon fed the Fred Brooks' magic (silver) bullet. Hard luck guys - developing good quality software takes some effort, and that effort comes in the form of lots of learning, before you've writing your first lines of code.Having tried to be a better software engineer throughout my career, I've found that things don't always work out first time, or second, or third, but the more you practise good practice, the more effective it becomes. This book has reinforced the ideas I'm encouraging in our team and added clarity around areas that I had an intuitive feeling for, but not the experience to back up that feeling.This is a GREAT book. Buy it, read it, practise the techniques Dave Farley advocates. We all owe that to the profession.
C**N
Very good insights
Important lessons that helped me a lot. Every one how seek in being a better software engineer should read it.
A**R
It was exactly what my nephew wanted and was very happy.
I bought it as a present to my nephew and he was very happy.
S**E
A definition of Software Engineering to take us beyond "craft"
Modern Software Engineering is a useful re-definition of the basis of how we work in professional software settings. We've been looking for a foundation metaphor for some time. Software Craftsmanship was step in this direction, but there was something missing from the craft metaphor.Dave Farley gives us the new baseline for software development in this title, linking together a bunch of fundamental elements and using them to redraw the importance of Software Engineering.The book defines what this means (and just as importantly, what this doesn't mean) and provides the key concepts to move us past all the stuff we tried that helped us get to where we are today.With this book, we can launch ourselves into the new research-backed era of software delivery and provide software that creates real value.Some reviews call for more concrete advice, but that's already available in "Continuous Delivery" and "Continuous Delivery Pipelines". The role of Modern Software Engineering is to set a standard for how we approach the work (not the specific practices as these have already been published).
R**T
Worthy of the title
I think this book is worthy of its title. It sets out to define an engineering approach to software development and I think it succeeds. The book distills a huge number of important concepts in software development in a very cohesive and accessible way, while remaining paradigm-agnostic.Farley posits that there are two main focuses in software engineering. The first is learning. The second is managing complexity. Learning essentially refers to the iterative, agile approach to building software. Managing complexity is how we retain our ability to change and iterate software without our systems becoming big balls of mud. Iteration, feedback, incrementalism, experimentation and empiricism are linked to our ability to learn; modularity, cohesion, separation of concerns, abstraction and loose coupling are linked to our ability to manage complexity.Drawing from Accelerate, Farley puts forward stability and throughput as the two basic measures of an effective software engineering team. These measures provide further justification for the tools and techniques that he describes for optimising learning and managing complexity.
P**H
Both obvious and tedious, but not obvious to many I've been told
For classically trained software engineers there's very little new. If you're read Fred Brooks you've read this book - and that collection of essays had been written some time ago. Old seems to be the new New. More generous view would be that the author make crucial point around how one goes practicing software engineering ... still glad I've read it. It provided us with a common reference among several colleagues.
P**.
bit dissapointing
bit underwhelming content
Trustpilot
1 day ago
1 month ago