Agile’s 3 categories: Iterative, Incremental, and Evolutionary

When I’m teaching training classes or disusing with peers and clients about software development, I am always on the hunt for the type being used in their agile implementation. I initially get push back but sooner rather than later the conversation picks up and find myself talking about “3 categories of Agile” model. Amazingly, I’ve never find a company that has escaped the model and they all fit in one of the 3 categories.

The common characteristics of all 3 categories is the development process where the development team is always implementing the Agile methodology in developing software from having stand-up meetings, test/behavior driven development, code review/pair programming, User Stories, to having Kanban boards, etc. However the requirement gathering and definition process differs and in many instances still follow the waterfall methodology to certain extent. Such process defines the 3 agile categories organizations fall in: Iterative, Incremental and Evolutionary:

Many Agile leaders will see Evolutionary as the most superior category, and consider Evolutionary to be the only True Agile but this is not always the case. There are instances when the other categories are “right.”

Let me describe the three categories in more details:

Iterative


This is the most common type I find existent. In this category the development team is following the Agile methodology and performing majority of the ceremonies: stand up meetings, iteration planning, iteration review, iteration retrospective, Kanban board, code review, refactoring, continuous integration and so on. Every once a while few of these ceremonies are missed but Agile teams are doing their best to conduct them and stick to their Agile plan.

In this model, requirements arrive in a pre-packaged Business requirements document. Business analyst or product owner have gathered requirements at some point of time, compiled it in a document and stored it on the shelf for some time. Management then decided to assign it to a project manager or another analyst to deliver everything within some time frame and budget. most likely the delivery also happen in a big bang operation where application is delivered at the end of the project. In this scenario, Agile is being used as a delivery mechanism only for the development team while the product owner slices off small pieces of the application to be developed by the team in every iteration.

I refer to this model as an iterative model, due to the fact that only the development team is working in an iterative way, while the rest of the company is using the waterfall methodology. You will find this model in large corporations and companies with annual budgets where senior managers don’t understand IT and are in charge of delivery.

Incremental

The incremental category is mostly the same as the Iterative approach, with slight difference in the delivery process. The requirement document still follows the same process where it was developed and signed off prior to Agile team started development. The development team still uses the Agile methodology process. However, the customer is getting a chance to review the product as being developed and provide feedback to the development team.

At the end of every iteration, the agile team is potentially delivering pieces of the software to the customer. The customer provides feedback about what they want in the software. Sometimes additional feature or functionality is being introduced and sometimes it is about removing things that were requested. The “project” is still done in the traditional sense that everything in the document is “done.”. But now some things are crossed out and some additional stuff might be done over the requirements document.

This process is called incremental since the customers are seeing the software grows in increments and early value is being delivered.

This is the most common categories of many software development houses. However, in some environments this is seen as wrong because the requirements process is “wrong”, or because iterative deliveries must be made, or because the team aren’t delivering everything they planned to deliver per the document.

Evolutionary

The development team in this category is iterating much like in the previous categories. They are conducting the necessary ceremonies. They are participating with the customer in reviewing the delivered application and conducting reviews to enhance the process. However, the requirement process is different where there is no pre-determined document to use for the features to be developed. Work started with an idea or a goal between the team and the product owner and evolved to become the piece of software being developed.

The goal or the objective which will guide work and help inform what should be done is stated in a single sentence or a paragraph at most. Work starts with a goal.

In this model the product owner and developers brainstorm some ideas and select something to do. The product owner works with customers and stakeholders to identify the problem and its solution. In the meantime, the Agile team is working on the best idea available. Product Owner and Agile team meet periodically to discuss what they have accomplished. The product owner provide what he has identified. The Agile team shows off what they have developed. They talk even more and decide on the next step.

With product owner involving additional stakeholders and development team producing more meaningful pieces of the application, the team starts to push software out to customers to use. This delivers value and provides feedback. Team and Product owner continue iterating until the final state of the application is completed and the team gets reassigned to other work.

Evolutionary is mostly at start-ups companies. It is also a lot common in all organization. However it is called maintenance support or “bug fixes” and it is seen as something that shouldn’t exist.

What do you think?

Have you experienced the 3 categories of Agile? In which category does your organization fall in? do you agree or disagree with the points above? I would like to hear from you so please share your thoughts in the comments below.