Last week my boss gave me a new software development project, to be completed in three months from now.
I asked if the requirements are finalized? He said, yeah, to some extent, but some more will come during this period. I was both surprised & confused about how is it possible and asked him the same again. He reverted that client is still developing the requirements, but doesn’t want to wait till they are completed, and added, why don’t you use agile & scrum methodologies for this project? I have heard these generally help in these kinds of projects.
So my questions to readers, have you also faced a similar kind of situation and stuck with the waterfall model to run projects with changing requirements and crunch timelines? If YES, then as my friend above, you also need to learn about Agile & Scrum.
Now you must be wondering how to start with Agile? What are Agile & Scrum? How are they different and yet similar?
To understand these, a small introduction on why Agile came into existence.
For decades developers were using the Waterfall model which has different phases being Requirement gathering, Design, Coding, Testing, and then finally Deploying. Usually, one phase has to be signed-off before another starts. The biggest con of this way of working is that by the time the product hits the market, either the market or the requirement changes. Also, to incorporate these changes, we need to start again from the first phase, which results in delayed product delivery.
Over a period of seeing a large number of software projects failing, many thought leaders developed alternative ways of working. These ways were build to facilitate change with ease. Some of these thought leaders came together in 2001 to look for better alternatives and created ways of working, which takes frequent feedback from the customers. They agreed to four values and twelve principles for supporting software development. This agreement later became famous as the agile manifesto. So Agile can be seen as using the process of doing development, which adheres to values and principles as agreed in The Agile Manifesto.
But before the agile manifesto came into existence, many other development processes were in existence, one of which is popular nowadays is Scrum. Scrum was created in 1995 by Jeff Sutherland and Ken Schwaber. Scrum was based on “New New Product Development Game, Harward Business Review 1986″. Scrum stands on the foundation of transparency, inspection, and adaption. So when your client is not clear what he wants, you tell him, this is what I am working on in the next two weeks, and we will learn from the result. I see values agreed in the agile manifesto gives teams way of thinking and behaving, Scrum extends that into a framework which facilitates the development process. The Scrum is well captured in the Scrum Guide. I see Scrum guide as a facilitation guide for doing software development. Scrum is one of the approaches of applying agile thinking; there are many others like DSDM, XP, Crystal, Kanban, SAFe, and many others.
Agile can be perceived basis following attributes:
- Faster Time to Market: Agile approaches promotes prioritizing the requirements and creating the small-batch size of the value, which can be delivered to a customer in a shorter period. This approach helps going faster to the market with useful features.
- Iterative and Incremental Development: In the Agile based process, products are developed Iteratively and Incrementally. An Iterative approach ensures that things can be changed fast based on feedback and learning. An Incremental approach ensures that features can be put to use as well. The product features will get deployed incrementally.
- Adaptive Planning: As the requirement changes to cater to the changing market, planning can’t be done in advance. The agile approaches promote just in time planning. Initially, the team sets the direction and refine based on learning coming from execution.
- Collaborative teams: The agile approaches are made to ensure that the development team responds to change and apply creativity. This is only possible when the team loves what they do; the agile teams are self-organizing and cross functional.
Scrum follows all the above characteristics of agile approaches. Scrum provides a framework for developing complex products and systems. Here work is broken down into small features, and then the scrum team plans a part of work which they can deliver in timeboxed iteration, which is called Sprint. The teams pick one consistent sprint duration for their development, usually 2 to 4 weeks . The complete development cycle is completed in one sprint.
To know more about scrum, here is 10 min video on Scrum
- The agile manifesto communicates values and principles, which improves product development. Scrum is a framework for complex product development based on agile values and principles, and Scrum also provides Practices and roles for doing development.
- The manifesto tells how to think; scrum tells how to think and act
How do you see these two things related to each other? Please share your views in the comment area.