As many peoples have a limited vision of the Agile software development approach that is synonym of the practice of Scrum, it is good to see a book dedicated to the programming side of Agile. The book wants to present the “trim tabs of software development”. Trim tabs are structures on airplanes and ships that reduce the amount of energy needed to control the flaps on an airplane or the rudder of a ship. The first part of the book is focused on coding and testing and the second part discusses how to handle the software design activity with an Agile perspective.
Essential Skills for the Agile Developer is a book oriented towards practice with a multi-language approach in code examples. It answers the question many software developers have after taking initial Agile or Scrum training, “OK, how do I write code now that we are building our software in iterations?” You will find in this book provides more than a dozen proven practices that help developers improve their Agile coding practices and make their code more easily changeable and maintainable in Scrum projects. I have particularly appreciated the design part that provides guidelines to navigate between the dangers of either overdesign or not design enough. I will recommend this book to every software developers who want to write good code that is easy to test and easy to change, whether they operate in an Agile context or not.
Reference: “Essential Skills for the Agile Developer – A Guide to Better Programming and Design”, Alan Shalloway, Scott Bain, Ken Pugh and Amir Kolsky, Addison-Wesley
Good practices should, ideally, be things you can do all the time and can promote across the team as something that should always be done. This is possible only if they are very low cost – essentially free – to do.
Testability and Code Quality. Why is this useful? We suggest it’s because testability is highly correlated to the code qualities we want to manifest, in particular, loose coupling, strong cohesion, and no redundancy. […] We’ve often summed it up by saying, “Gee, I wish they had thought of how this code was going to be tested while they were writing it!”
The Gang of Four recommends that you should “design to interfaces, not implementations.” Many patterns, such as the Adapter, Façade, Strategy, and Proxy deal with interfaces. Martin Fowler repeats this in his recommendation of separating the specification perspective (the interface) from the implementation perspective. Interfaces are the key to making decoupled designs that simplify testing and promote maintainability.
People often think of design patterns as a kind of design up front. One needs to remember that the design patterns came into vogue when that was mostly how you did things. However, if you explore the thought process under the patterns, you can apply that thought process to agile development just as well as you can when you are doing a big design up front—perhaps better, because the lessons of patterns tell us what to be looking at, not so much what to do.