July 21st, 2014 by inflectra
Extreme Programming (XP) is one of the more popular Agile Development methodologies, and for very good reason. It advocates short, rapid iterations, constant customer contribution and frequent testing. But let us consider the foundation of Extreme Programming, which is to identify all the positive aspects of software programming techniques and take them to their extreme; the idea being that you can’t have too much of a good thing. For example, if tests help find defects, why not test all the time?
If we consider Agile methods generally, (not XP specifically) to also be a combination of good ideas, XP would tell us to take those ideas to their extreme; could we do that and create “Extreme Agile Programming (EAP)”? Or would we be trying to swallow our own tail? Let’s consider some Agile principles and find out.
Agile processes embrace incremental and/or iterative development. If a software product is being built up incrementally the only way to increase the ‘incremental-ness’ would be to increase the number of iterations. So, can we take iterative development to the extreme? Increasing the number of iterations would require each of the iterations to be shorter and thus the tasks would need to be smaller. However, tasks can only be so small before they achieve too little to warrant the supporting effort that makes an iteration work. With two to four weeks being the recommended iteration length for most Agile methods, this lower limit of effort to gain benefit has probably been met and so incremental and iterative development have already reached their extreme.
Next we have early and frequent testing. The earliest that testing could be performed would be right after the code is written: before that there is nothing to test. However, the tests can be written before the code and then the code written to pass the test – a sort of reverse-time approach. This is called test-first (or test-driven) development and it is already part of XP. So, testing early is already as extreme as it can sensibly be without use of a TARDIS. How about testing frequently? Agile methods require that software is regression tested as part of each iteration, which is how often the code base is modified. To run any system level or integration tests more often would be to run the same tests against the same codebase which would not make much sense. But, individual code elements can change multiple times during an iteration and so unit tests could sensibly be performed multiple times per iteration, in fact with each change. Not surprisingly, this is just what XP advocates.
How about customer or stakeholder involvement? The most extreme expression of this would be to have the stakeholder constantly involved, meaning all the time. And again, Agile methods already require this, in some form or other.
Can we make the Agile requirements process more extreme? In most, (but not all) methods claiming to be Agile, requirements are expressed at a high level in some kind of user-story form and only evolved into something more definitive as they are selected for the next iteration. Is this already at the extreme or can we take it further? Could the requirements be defined to a lesser degree than is currently the practice? This would probably mean doing no work at all before to understand the customer’s problem before coding begins. While this may have appeared to be the case in some projects, I am sure it was never intentional because to not understand the problem space at all would be to start a project with no idea what is being built; the ultimate black box project!
So, if we still need some degree of user stories to have an idea of the problem space, would it be possible instead, to evolve those ‘sketches’ of the problem later in the process than we do in Agile projects now? In most Agile methods, requirements refinement is wrapped up in the design activities or test creation in the test-driven method, so we couldn’t do it much later without making it part of the coding process which would require the stakeholder to sit with the software engineer as she actually writes the code, (another form of customer involvement to the extreme.) However, this is clearly impractical unless only one software engineer is working at a time, or there is one customer for every software engineer. The requirements process is seemingly as extreme as it can be.
We can conclude from these considerations, with a fair degree of confidence, that extreme programming principles cannot generally be applied to Agile processes because they are already as extreme as they can be and still remain workable. While some of the actual XP practices, such as pair-programming, may not be part of all Agile methods, the basic XP principle of good ideas taken to their extreme already exists in most Agile processes.
You may also be interested in:
Scrum and Kanban - Siblings or Cousins?
Agile Techniques in Maintenance Environments
Agile is Nothing New
Documenting Requirements in Agile Projects
Agile Extreme Programming XP Test-First Requirements Iterative Incremental
Ask an Inflectra expert:
And if you have any questions, please email or call us at +1 (202) 558-6885
SpiraTest combines test management, requirements traceability & bug-tracking
SpiraTeam brings your teams together, managing the entire application lifecycle
SpiraPlan lets you manage your programs and portfolio of projects like never before
Orchestrates your automated regression testing, functional, load and performance
The ultimate test automation platform for web, mobile, and desktop applications
The help desk system, designed specifically for software support teams
Cloud hosted, secure source code management - Git and Subversion
Exploratory testing capture tool that automatically records your testing activity
Let us deal with the IT pain so you don't have to. Or use on-premise if you prefer.
Our customers work in every industry imaginable. From financial services to healthcare and biotech to government and defense and more, we work with our customers to address their specific needs.
Our products do not enforce a methodology on you, instead they let you work your way. Whether you work in agile development, Scrum, XP, Kanban and Lean, Waterfall, hybrid, or Scaled Agile Inflectra can help.
If you want to learn more about application delivery, testing, and more take a look at our whitepapers, videos, background papers, blog, and presentations.
Our suite of Accelerators speed up your deployment and adoption of our products, increasing your return on investment and reducing the cost of ownership.
We collaborate with a wide range of organizations to bring our customers a range of services (including load testing, training, and consulting), complimentary technologies, and specialized tools for specific industries.
Learn how different organizations have benefited from using Inflectra products to manage their software testing and application develooment.
Outstanding support is the foundation of our company. We make support a priority over all other work. Take a look at our support policy.
Discover great tips, discussions, and technical solutions from fellow customers and Inflectra's technical experts.
If you can't find the answer you're looking for, please get in touch with us: over email, phone, or online.
We are constantly creating new videos to help customers learn about our products, including through in depth webinars, all freely available along with a wide selection of presentations.
We provide a number of resources to help customers learn how to get the most out of our products, with free online resources, virtual classrooms, and face to face.
Read about Inflectra, our manifesto, and values. Meet our incredible customers who are building awesome things, and our leadership team that are committed to building a great company.
The Inflectra Blog contains articles on all aspects of the software lifecycle.
In addition we have whitepapers,
background articles, videos and
presentations to help get you started.
Events are a big part of our awesome customer service. They are a chance to learn more about us, our products, and how to level up your skills with our tools.
We partner with educational institutions and individuals all over the world. We are also a great place to work and encourage you to explore joining our team.
Please contact us with your questions, feedback, comments, or suggestions. We'll get back to you as soon as possible.
When you need additional assistance (be it training, consulting, or integration services) our global certified solution provider partner network is ready to help.
At Inflectra, we are fully committed to provide our customers with the very best products and customer service. Check out some of our recent awards.
We want to help developers extend and customize our tools to fit in with their needs. We provide robust APIs, sample code, and open source projects.