I’ve been fortunate enough to speak at several conferences on Agile developer practices. I presented at many Scrum Gatherings both in the United States and in Europe. I’ve also presented at several of the big Agile conferences as well as the smaller technical conferences such as deliver:Agile and most recently Craft Con in Budapest.
Most of the time at these conferences, I ask the audience two questions and I’m always surprised by the answers I get. I ask how many people are doing Scrum and most of the audience raises their hands. Then I ask how many teams are doing the Extreme Programming (XP) practices and nearly all the hands go down. I usually see far less than 1% of the audience who says that they’re doing Extreme Programming. Some people looked puzzled and even asked me what Extreme Programming is.
Then I read them the last two sentences of the book description Software Development with Scrum by Ken Schwaber and Mike Beadle.
“This book shows readers how to use SCRUM, and agile software development process, to quickly and seamlessly implement XP in their shops while still producing actual software. Using SCRUM in the agile process can virtually eliminate all downtime during an XP implementation.”
So, Scrum was created to help you be more effective when doing XP and today everyone is doing Scrum and virtually no one has heard of Extreme Programming.
The original authors of the Agile Manifesto who met all those years ago in Snowbird, Utah are all software developers. Agile was created for software developers by software developers and Agile software development has always had something to do with software development.
It’s time we recognize the value of these technical practices because that’s where we get all the real benefits of Agile software development. If you apply old and outdated development techniques and you built in sprints you’re still going to end up with a poor codebase. Agility requires a focus on good technical practices and in my experience these practices are not commonly known in our industry. They’re not being taught in schools and a lot of people haven’t learned these practices well on the job.
The practices of Extreme Programming such as refactoring or test-driven development aren’t simple and aren’t easy at first but technical agility is predicated on technical excellence and if we don’t have well-written code and good automated tests then software will be very difficult to change and no matter how many processes you put in place, you’ll find that it will be very difficult for your developers to get any work done.
So, I’m an advocate of Scrum and I’m also an advocate of Extreme Programming. I’m actually quite surprised that a series of ideas and practices that have been around for nearly 2 decades is still so valuable but the creators of XP really nailed it and I think they’ve come up with a really valuable set of practices that can both accelerate quality and quantity of software being created.
The first principle of the Agile Manifesto says so much. It says, “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” In order to have continuous delivery of valuable software, we have to automate as much of the software development and the verification process as we can.
I think they were just starting to recognize that test-first development and code refactoring gives us safe and reliable ways of cleaning up existing code and therefore improving its affordability and its extensibility.
This is what the software engineering discipline is all about and like any other engineering discipline, it must have standards and practices. Most developers that I meet don’t have standardized ways of going into legacy code and cleaning it up. Understanding how to do these things safely is very important for software developers to know.
It’s not uncommon for innovative new ideas to take root in unusual ways. I’m happy that Scrum is so popular and what I want to say is don’t stop there. Scrum is the first step, so use it to help you get more out of Extreme Programming practices, the way it was intended to be used. Set up continuous integration and figure out how to build good unit tests to automatically validate your code.
Legacy code can look overwhelming but we got there one step at a time and that’s the very way to get out of it, one step at a time. Little wins add up and with a concerted effort, even the nastiest codebase can be tamed.
Previous Post: « The Agile Community
Next Post: Why XP After All These Years »