What Does it Mean to Demand Technical Excellence?
Ten years after the Agile Manifesto was signed into being, the original authors got back together to review the progress made in the last decade. It was Jeff Sutherland who said, “Demanding technical excellence is a top priority for the next ten years.”
Join the DZone community and get the full member experience.Join For Free
But what is technical excellence? Given the state of the software industry and the lack of maintainability that most software’s produced with, I think it’s fair to assume that most of us don’t really know what “technical excellence” means when it’s applied to software.
Given that over 80% of the cost of software happens after its initial release, I would propose that a key aspect of technical excellence is being able to deliver software that is maintainable. I’ve asked developers what they do to increase the maintainability of their code, and often got back blank stares.
Maintainability of software is not a subject that is discussed in any depth in computer science curriculums or even in professional software development circles. As an industry, we’re just starting to become aware of the importance of writing maintainable software.
The nine practices I propose in my book, Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software, support the creation of maintainable software. When not only adopted but understood, these nine practices help us rapidly build maintainable software.
I propose that the core of maintainable software comes from practice five: Create CLEAN Code.
CLEAN is my acronym for five key code qualities that support maintainability: Cohesive, Loosely coupled, Encapsulated, Assertive, and Non-redundant. These certainly aren’t the only qualities we can look at, but they represent a set of code qualities that are easiest for most people to recognize and understand. I won’t go into detail of each of these qualities here, since I cover them in depth in my book, but though these qualities seem simple, almost trivial, we find that when they aren’t present in code, that code becomes difficult to work with and extend.
By paying attention to code quality and building testable behaviors, we can build software that is better adapted to the needs of the user and that’s easier to work with in the future.
Published at DZone with permission of David Bernstein, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.