Software development project management methodologies fall into the styles of “Predictive”, “Iterative”, and “Adapative.” Sometimes you will hear Agile being called Iterative, and sometimes being called Adaptive…but which is it? What do these categories mean and how do they differ?
Lets first get Predictive out of the way, because we know Agile isn’t Predictive. Waterfall is the standard type of Predictive project management methodology. In it a project manager (or a team of PMs if the project is large enough) puts together a massive “plan of plans” known as the “Project Management Plan” that contains plans for all aspects of the project; various things like how will the project communication, schedule, budget, check quality, deal with risks, etc. The project manager(s) then use those plans to predict everything that could happen in the project. They are (suppose to be) so methodical, planned, and well organized (sometimes to a fault) that everything is accounted for. This includes doing so much research to nail down the project’s scope to the point where it won’t ever change. This includes figuring out any type of risk (i.e. an event that could impact the project) and preparing plans for dealing with them.
Over time project managers realized that planning out huge monolithic projects didn’t work very well. So they started breaking those projects up into smaller projects and iterated the project phases until the entire thing was done. While one part was being worked on, the next would be in the planning phase, and so forth. This is Iterative project management and the idea behind it is that you can adjust the next iteration to make up for the problems of the first.
Did you notice that the Iterative strategy still attempts to fully plan out the project? It has to have some large overarching plan to know where to break up the smaller stages. It may adapt to changes better than a monolithic predictive,but there is still planning activities, attempts to nail down scope, resistance to changes, etc.
Adaptive project management strategies break that pattern. They admit that change will happen and to keep the planning loose enough to move as needed. This does not mean there is a lack of planning, but rather understanding the nature of their plans. It focuses not on when things release, but rather the monitoring of the project and quickly adjusting as needed. This is different from Iterative because within an iteration you are not supposed to change, instead changing course after the iteration has finished.
This leads us back to the question at hand; is Agile Iterative or Adaptive? Surprise, it is neither! Muhahahaha! More seriously though, Agile is neither because it is a philosophy or mindset rather than a methodology (an entire post on it Here). On a side note, an Adaptive style is different from being adaptive, just like being agile is different from using Agile. With enough foresight and planning, Predictive styles can still be both adaptive and agile, but will never be Adaptive or Agile.
Agile doesn’t state when to release or how to monitor the project, but rather gives us principles on how to view the methodology we are working with. For example, on delivering Agile states, “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software” and “Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.” Don’t get hung up on the word “deliver.” A delivery is a milestone, but not always a release. I’ve run teams where the delivery is a demo of the developer’s progress.
“See I stood up a database, designed the schema, and made the CRUD. Here you see I can run an insert statement, then run a select statement, and I get back data! That is my demo for ticket AXT-2385.”
On the other hand methodologies like Scrum, Kanban, XP, and others do fit into the three main styles. Currently the most popular methodology, Scrum is Iterative as each sprint is initiated (backlog grooming meeting and through the continuation of the project) planned (sprint planning meeting), executed (the work), and closed (sprint review); running the full project lifecycle each time. Importantly it is not adaptive because it is considered bad if you change around the work in the middle of the sprint. Often when you hear people say “Agile is Iterative” they are conflating it with Scrum or Feature-driven development (also iterative, but less popular).
Another thing to remember is that Scrum is not itself Agile; Scrum came first and can be run very waterfall-ish, although I don’t recommend it unless you know what you are doing. By its very nature Scrum cannot truly be predictive, but you can add much of the waterfall planning and flavor. I once ran Scrum in a distinctly non-Agile way by getting a full scope list at the start, doing all of the research and story point estimating on the tickets up front, planning which tickets of each feature will go into which sprints, and then following the rest of the Scrum processes iteratively delivering sets of code. The sprint planning meetings were used to double check our initial plans and adjust as needed. It worked rather well at the time and we only switched away from that methodology due to other problems.
A lot of the Lean types of methodologies (Kanban being the biggest example), and some pure Agile ones like XP (Extreme Programming) are more Adaptive in their style. Yes, Lean is also not Agile, but many who use Kanban run it using the Agile philosophy more than the Lean philosophy (and they are extremely similar).
So in the end, it is good to know how the methodologies you are considering (or using) run, and pick the one that works best for your team while using what Agile can teach about project management.