Agile has become today’s dominant software development paradigm, but agile methods remain difficult to measure and improve. Essential Skills for the Agile Developer fills this gap from the bottom up, teaching proven techniques for assessing and optimizing both individual and team agile practices.
Written by four principals of Net Objectives--one of the world’s leading agile training and consulting firms--this book reflects their unsurpassed experience helping organizations transition to agile. It focuses on the specific actions and insights that can deliver the greatest design and programming improvements with economical investment.
The authors reveal key factors associated with successful agile projects and offer practical ways to measure them. Through actual examples, they address principles, attitudes, habits, technical practices, and design considerations--and above all, show how to bring all these together to deliver higher-value software. Using the authors’ techniques, managers and teams can optimize the whole organization and the whole product across its entire lifecycle.
Essential Skills for the Agile Developer shows how to
Perform programming by intention
Separate use from construction
Consider testability before writing code
Avoid over- and under-design
Succeed with Acceptance Test Driven Development (ATDD)
Minimize complexity and rework
Use encapsulation more effectively and systematically
Know when and how to use inheritance
Prepare for change more successfully
Perform continuous integration more successfully
Master powerful best practices for design and refactoring
Review By: C. David Moye 04/19/2012
Essential Skills for the Software Developer is part of the Net Objectives Lean-Agile Series and seems primarily to be an accompaniment to one of the many courses taught by the Net Objectives group. This is not meant to disparage the book in any way. In fact, it is a fantastic distillation of several important modern concepts related to software engineering.
There are three main sections in the book. The first covers what the authors refer to as “trim tabs.” This is a reference to the small but essential elements on ship rudders and airline flaps that aid the larger steering elements. The idea is that individual programmers can act as trim tabs, making subtle changes to the structure of a large system that greatly impact the overall design. These trim tabs include such foundational concepts as intentional programming, encapsulation, and interface-oriented design. Each topic is given an excellent treatment and even the most refined software developer will deepen his understanding of the topics by reading through them. The second major section of the book discusses designing to the proper level of complexity and the technique of continuous integration, and the third section presents readers with techniques to improve their software design approaches.
For me, the meat of the matter is in the first and second sections. Specifically, I find that by following the core concepts of intentional design and having the right attitude toward your design, you will derive more success from your work. On those topics, the book does a wonderful job initiating the novice and also helping to smooth away rough edges on the more experienced developers.
If you are a software developer, I suggest that you pick up this book and give it a read. You will find that the overall quality of the work product that you deliver will improve—both immediately and, more importantly, over time as maintenance occurs. If you are a software development manager, you should consider picking the book up for your lead developer and asking what he or she thinks of it. My guess is that you'll be placing an order for a few more copies pretty quickly!
This book, like many others in the series, deserves a place on your shelf. Like others before it, including Emergent Design and Lean-Agile Software Development, it will be well thumbed, and your software projects will be better for it.