Why XP After All These Years
Many developers have taken to Scrum and Kanban over time, but does Extreme Programming still have something left to teach us?
Join the DZone community and get the full member experience.Join For Free
I have been an advocate of Extreme Programming (XP) practices for well over a decade. To me, Agile software development means more than just an agile development process, it means that our code is agile and able to respond to change easily. This doesn't happen by accident. It's a result of following good programming principles and practices that support writing modular, maintainable, and changeable code.
It's not enough to write software to make a computer do a specific task. The software that we write has to be agile. It has to be changeable without incurring a large amount of rework. It has to be safely extendable so that we're not putting our systems and our users at risk as we add new features.
Many people, even within the industry, are unaware that we have solutions to most of these problems. We have well-defined methodologies that allow us to transform existing code into designs that allow us to accommodate new features and we are able to do these things in a safe and repeatable way. In other words, software engineering can be just like any other form of engineering in terms of having standards and practices that support us.
I found that many of the practices from Extreme Programming as well as the concepts from the design patterns movement, object-oriented programming and functional programming movements, software craftsmanship movements, as well as Scrum, Kanban, and Lean Software Development movements are about addressing different aspects of software development, and together they often form whole solutions to previously intractable problems.
Our industry has come a very long way in terms of being able to build reliable systems cost-effectively but the problem is that these ideas are not common knowledge throughout the industry and so the benefits of these practices that are used by some of the top corporations in the world haven't really trickled down into the rest of the community of software development.
The whole discipline of software development is rapidly evolving and so it's important not to just keep up with the latest tools and technologies but also to keep an understanding of the fundamentals fresh and top of mind so that we understand the reasoning behind the core practices and how to do things in standardized ways so that they're straightforward to integrate with other people's code.
We're trying to build a discipline, after all. That means that the tools and techniques that we build have to work for all of us and we have to arrive at some level of consensus and agreement for what the standards and practices should be for developing software.
I think Extreme Programming offers a core set of developer disciplines that are highly valuable. I think our industry would be far better off if we paired more often and place more of an emphasis on refactoring code safely and writing good unit tests. I think these things raise the level of professionalism in our industry.
When I think about a minimum set of developer practices that really support an iterative process of software development that we do with Agile then it's clear that the practices of Extreme Programming are essential when doing Scrum.
I find test-driven development to be invaluable for writing testable code that allows me to refactor my design safely. I find that refactoring is extremely valuable for allowing me to transform code from one design to another, which often is required when adding new features to a system. This is the kind of knowledge that makes us professionals and lets us build software in a consistent way.
So, many of the ideas that are embodied in Extreme Programming are some of the most valuable ideas in software development that I've ever come across. Even over a decade and a half later, I still find that many of the ideas from Extreme Programming represent the best approaches that I found for object-oriented development.
Published at DZone with permission of David Bernstein, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.