Agile, Scrum, Kanban – What Does It All Mean?
A process can be defined as a series of steps or actions taken to achieve an end. A software development process, for example, leads to the production of a working software package. A sequential design process like the waterfall model has been used in software development since the early times. The model originally came from the manufacturing or construction industry but was adopted by the software industry only because there was no model to follow in the early days.
So what if I’m traditional?
Winston Royce’s original waterfall model was divided in five phases: requirements, design, implementation, verification, and maintenance. An important argument in developing software with this model is that bugs found in the earlier phases are easier and less costly to fix. The later the phase bugs are found, the harder and more costly to fix they become. So it is important that before the next phase proceeds, the current phase is as close to 100 percent perfect. The less perfect, the greater the possibility that the software project will have more rework, take longer, go over budget, lead to poor quality or all of the above. The end result will definitely be a most unhappy customer.
The waterfall model is not enough
When processes are documented and steps are included to make sure they are followed, it becomes more systematic. This leads to a methodology. As time progresses, it became apparent that following the waterfall model for software development is not enough to accommodate the new challenges brought on by technology and changing user requirements. Despite the introduction of a feedback system to the waterfall model, the existing methodology does not guarantee success. More often, it guarantees the opposite. Designers and developers were looking for, experimenting with, and testing alternatives that work.
The Agile manifesto
In 2001, 17 software developers discussed and published a manifesto for a new kind of development methodology which they called agile software development. However, calling it a methodology may be incorrect since the manifesto did not specify processes. Instead, ‘Agile’ (Noun vs. adjective) promotes values and principles that are deemed more important than others. For example, they value responding to change more than following a plan. This does not mean that they will not have a plan, but will readily change it if they believe the original plan is not going to give what the customer wants.
Specifically, Agile is an idea that promotes four values, which in turn are supported by 12 principles. For instance, one principle states that Agile welcomes changing requirements, even late in development, as long as it results in the customer’s competitive advantage. This shows a notable difference with the earlier argument upon which the waterfall model is based. It is also important to note that at the level of principles, no process has still been specified.
Scrum follows Agile principles
From Agile values and principles, developers have conceptualized different methods to help implement agility in software development. Two of the signatories of the Agile Manifesto, Ken Schwaber and Jeff Sutherland, formulated Scrum. Scrum is a methodology that defines specific roles and practices to create a flexible strategy in managing projects and developing products. For example, it defines roles such as Product Owner and Scrum Master who have specific functions working with the development team. Scrum also promotes self-organizing teams, face-to-face meetings, and short iterations or sprints. These practices all follow Agile principles and support its values.
Kanban: the visual board
Another methodology that supports Agile values and principles is Kanban. It is a Japanese word that literary translates to visual board. Kanban originally was used in a Toyota manufacturing system as a means to make sure that work flow is continuous and that production is triggered by demand. Tom and Mary Poppendieck, two people who were involved with the Agile community, published a book titled Lean Software Development adapted from the lean manufacturing Toyota system. The book presented seven principles that were applicable to Agile software development. Together with the Theory of Constraints, an organizational management philosophy, the modern Kanban has become a methodology that promotes rapid delivery, empowering the team and limiting work in progress, principles that are characteristically Agile.
Change is the only constant
Agile came about because people wanted change. As changes were successfully applied, people try to repeat success by formulating processes and methods. Aside from Scrum and Kanban, other software development methodologies that follow Agile values and principles include Extreme Programming (XP), Feature Driven Development (FDD), Dynamic Systems Development Methodology (DSDM), and Crystal. These methods and processes are now being applied not only with IT projects but across sectors and industries. Agile as a mindset is now also influencing how teams are organized and how projects are managed.