While they each have their own benefits and drawbacks, Agile frameworks have been growing in popularity by leaps and bounds lately. In this article, we are going to explore Agile and why it is being increasingly adopted and adapted by software developers worldwide.
Agile is not so much a methodology as a set of values and principles. Many Agile frameworks such as Scrum and XP were developed in the 90’s as a substitute for overly planned, micromanaged, and heavily documented methods of software development that existed then. These and other such “lighter” frameworks collectively came to be known as Agile methods.
Market research shows that large projects fail oftener than small projects and that nearly half of the initially planned features do NOT make it to the final product. Agile with its emphasis on continuous delivery and interweaving constant client feedback as an integral part of the process, has proven very effective in overcoming these hurdles. Agile is emerging as the obvious choice for a lot of projects because of its adaptability to changing market requirements, focus on delivery rather than documentation, and emphasis on team collaboration, especially in an industry as dynamic as software.
Agile principles can be applied to almost any project across diverse industries. However, it really comes into its own when applied to:
projects which are iterative and incremental;
projects requiring a high degree of flexibility;
complex projects with an element of uncertainty; or
There are various frameworks within Agile – Scrum, Kanban, XP, DSDM, Crystal Clear, and OpenUP, to name a few. Scrum and Kanban are two of the most popular ones, especially when it comes to software development. Scrum is considered ideal for larger, complex projects and also when most of the requirements are known or decided. Kanban is largely preferred for smaller, more experimental projects with a larger proportion of variables and changing requirements. However, like most agile methodologies, they can both be adapted to a diverse range of projects.
The main objective of Scrum is to continuously ship value to customers through fixed length iterations called sprints. The principles behind Scrum can be put to different uses such as HR, design, marketing, etc. However, Scrum as a framework is highly favored as a model for software development.
…large, complex projects.
…when the product is required to adapt to changing market conditions.
…when some of the project requirements are not clear at the beginning of the project.
The product is built in series of iterations called Sprints. This allows larger projects to be broken down into manageable chunks.
Continuous value is delivered to customer at regular intervals.
Since sprint goals and tasks are decided at the start of a sprint, the project remains flexible and able to implement changes based on feedback from users/product owner.
Reduced risks and costs because of short iterations.
Regular progress is measured through milestones, which is good for team morale.
Product Backlog: A list of all the tasks identified with the project. It is dynamic and maintained by the Product Owner.
Sprint: The short time period, generally but not necessarily around two weeks, in which an increment of work is created and delivered, if approved by the Product Owner. Every few weeks, the team decides which of the tasks from the backlog will be worked on it a Sprint.
Increment: Increment or Sprint Goal is the specific objective that has been set for the sprint.
Ceremonies: Hallmark of Scrum. Key ceremonies are Sprint Planning (deciding goals for the sprint), Daily Scrum (super-quick daily team meeting), Sprint Reviews (informal demo session with the Product Owner), and Sprint Retrospectives (team talks about and documents the sprint and how it went).
Roles: People are at the center of this framework. Scrum usually consists of these roles:
Product Owner (represents the client’s wishes)
Scrum Master (in charge of the Scrum process)
Scrum team (can vary widely but is usually 5 to 7 in size, collaborative, and self-organizing)
Kanban is a Japanese word meaning billboard or card. The Kanban system was came to be widely used after Toyota adopted it in 1940s for their manufacturing process. Originally developed for managing supermarket inventory, it has since been effectively put to use in diverse industries and purposes such as architecture, healthcare, and personal time management, to name a few.
Kanban is a popular agile model for software development, especially for small, experimental projects where requirements are unclear or where the project has a large number of unpredictable variables. Because of its flexibility, adaptability, transparency as well as the capacity to leverage the entire team strength, it is the ideal framework for continuous delivery.
…teams that are required to deliver continuously.
…projects with constantly changing demands/requirements.
…where tasks of different sizes have to be handled by the team.
…teams that have members with overlapping areas of expertise.
Shortened cycle times.
Full transparency. Work items are visualized on a board allowing all team members access to the status of each task.
Avoids bottlenecks by putting limits on tasks that can be worked on at any one point in time.
Project progress is the entire team’s responsibility.
Kanban Board: Tasks are placed on the To-Do list by the project leader in the order of priority. The To-Do list is dynamic and the task on the top is the highest priority. The board has columns such as To-Do, In Progress (one or more columns) and Completed.
Kanban Cards: Each card contains all the relevant information about a single task. The cards are moved from column to column based on the status of the task.
WIP Limit: There is a limit on the number of tasks that can be in the “In Progress” columns at any given point in time. This prevents the team from starting a new task until the tasks that are clogging up the board are “Completed.”
No Team Roles: In a typical Kanban framework, there are no defined team roles. The entire team pitches in to clear bottlenecks when WIP limits are exceeded. Tasks are handled in the order of priority decided by the product owner.
We have discussed which project types work best with each of the two frameworks. However, the solution you choose does not have to be “by the book.” The whole point of Agile is a working method that is flexible, light, and perfectly suited to the demands of a project.
As such, hybrid models are increasingly being chosen by software developers. Features of two or more Agile frameworks can be blended to create a framework that is unique to each project. Kanban teams may choose to have daily standup meetings. Scrum teams may consider using the Kanban board for better transparency.
The important thing to remember is that any new framework you choose to implement, whether it is classic Scrum or Kanban, or a hybrid of the two, is subject to continuous change and improvement.
Agile frameworks were developed as a substitute for the overly document, micromanaged, and “heavy” methods of working that were criticized for wasting too much time on documentation. The purpose of Agile methodology is to be light, adaptable, and focused on delivery. Scrum and Kanban, two of the most popular Agile frameworks, are used across industries. Their unique features make each of them more suited to certain types of projects than others. However, variations of both – Scrum and Kanban – as well as frameworks that are a hybrid of the two are increasingly being chosen to fulfill the diverse requirements that vary from project to project.
We believe that adhering to any one model too rigidly defies the Agile principles. The important thing is to make the thought process Agile.