Agile development methodologies have been around for a while now, and the list of them is long. It includes:
- Extreme Programming (XP): Developed by Kent Beck, Ward Cunningham, and Ron Jeffries, XP is probably the best-known lightweight methodology. With its roots in the Smalltalk community, it is a relatively complex system of practices, and Highsmith warned potential XP users to think carefully before picking and choosing among individual components.
- The New Methodology: Developed by Martin Fowler, this approach emphasizes adaptation over prediction, people over practices, with an additional emphasis on what works in the real world.
- The Crystal family of methodologies (sometimes called "the Crystals): Developed by Alistair Cockburn, who believes that different kinds of projects require different kinds of methodologies. He looks into this variation along two axes: the number of people in the project, and the consequences of errors. Each methodology fits into a different part of the grid, so a 40-person project that can lose discretionary money has a different methodology from a six-person, life-critical project.
- SCRUM: Developed by Ken Schwaber and Jeff Sutherland, this methodology focuses on the idea that defined and repeatable processes only work for defined and repeatable problems, with defined and repeatable people in defined and repeatable environments. The process divides a project into iterations (called "sprints") of 30 days. Before developers begin a sprint, they define the functionality required for it, and then leave the team to deliver it. The point is to stabilize the requirements during the sprint.
- The Dynamic System Development Method (DSDM): Developed in the UK. in the mid-1990s, DSDM has the best-supported training and documentation of any agile process in Europe, Highsmith said. Its principles include active user involvement, frequent delivery, team decision-making, integrated testing throughout the project life cycle, and reversible changes in development.
- Lean Development: Highsmith said that Bob Charette's approach was the most strategic-oriented lightweight process, and the least known. It is derived from the principles of Lean Production, Taiichi Ohno's revolutionary restructuring of the Japanese automobile manufacturing process, Highsmith said. Lean Development practices subvert traditional methodologies’ view of change as risk, to be controlled with restrictive management. This method welcomes change as an opportunity to practice "risk entrepreneurship."
- Peter Coad’s minimalist five-step approach to software engineering focuses on developing an overall model, building a features list, and planning by feature and design, with short, iterative cycles using object models of more shape than detail.
- Adaptive Software Development (ASD): Developed by Highsmith himself, at the heart of ASD are three non-linear, overlapping phases: speculation, collaboration, and learning. Highsmith views planning as a paradox in an adaptive environment, since outcomes are naturally unpredictable. In traditional planning, deviations from plans are mistakes that should be corrected. In an adaptive environment, deviations guide developers towards the correct solution.
Which agile method does Rotman recommend? “I use a mix,” he says. “I go for the principles.” ®
"I use a mix," "I go for the priciples"
Yeah, I just hack and do whatever I feel like, too. I'm so professional.
"Maintaining [the little projects] becomes mandatory, and that can entail major changes a few years down the road, changes that become costly because the initial framework was not implemented in a way that allows the new requirements to be implemented correctly."
Your post reads like a recipe for Big Up Front Design, which is the antithesis of agile. Good luck with that. People are very bad at generalising from single examples, or projecting future requirements before they can see a working product.
Code for today, keep the costs of change low through decent test coverage, add complexity only when required.
And above all else, don't let stupid people near a keyboard.
Methodology != Cure All
Using a methodology is a good idea.
Will it prevent developers from writing spaghetti code? No.