Agile Encounters Unpredictability
What is Agile?
Wikipedia says “Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change.”
To understand this, we have to learn SDLC phases available here.
Aim of SDLC is to receive a complete project or product at the end of SDLC and Agile provides an improvement over traditional approaches to achieve the same result by adapting[It is an adaptive technique] to a flexible environment. We always face an unknown factor in our daily development life which we call as ‘unpredictability’. Agile is something which has been designed to encounter ‘unpredictability’.
To achieve this,agile process divides the full project into partial deliverables and follows the software development life cycle which includes requirements gathering, analysis, design , coding , testing and for each of partially implemented deliverables.After each iteration, deliverable is shared with the client and their feedback is recorded. In the next iteration, second planned deliverable is created by following the software development life cycle again and client feedback is incorporated. Same process follows till the end product is ready and customer is satisfied. We can see that Agile is a customer based approach and requires involvement from all the teams .
Agile became important because today’s environment shouts one word ‘CHANGE’. The moment requirements gets freeze, clients comes back with changes so freeze never actually happens.
Agile methodology is described as “iterative” and “incremental”. In agile, at each point, client assesses the product and provides feedback. It is like giving wings to clients so they fly and introduce anything new at any point of the SDLC. It can be best described as ‘CHANGE’ with the ‘CHANGING’ world. The biggest drawback of Agile is that there is no limit of satisfaction which can be successfully achieved.
It can easily be interpreted as an assessment tool that is introduced in regular SDLC model and can be used to decide the direction of the project.It reduces risk by removing uncertainty and creates a healthy long-term relationship with client.
Agile focuses on
- Be ready for Change
- Regular Communication and Interaction
- Finished Product with minimum documentation
Characteristics of Agile?
As always ,we believe in dividing the project into modules. Where each module can represent a working piece of software and can be shared with the customer for feedback. Once all modules are ready or integrated then it can be represented as our final product.
On each cycle of development, working piece of software is shared with the client for feedback and if some new requirement or change is introduced, same cycle is repeated again.
- Time Bound
As agile process is iterative in nature, it requires the time limits on each module with respective cycle.We set time limits between one and six weeks on each iteration and schedule them accordingly.
In Agile, we follow a tight schedule so there is always a risk of low quality and less involvement of developers so by minimizing the number of activities, these kind of risks can be avoided.
As the agile process is iterative in nature, so building Rome will take some time and happen in an incremental manner.
We have already discussed the adaptive nature of Agile. This is important in case of flexibility desired from Agile.
All the risks associated with each increment are convergent in agile process by using iterative and incremental approach.
No Project can be a success without proper communication and in case of Agile where RAD[Rapid Action Development] is expected so communication becomes really important all levels.
- People Oriented
Agile processes favor people over process and technology,plus customer satisfaction is the first priority.
What are the Agile Methodologies available?
- Lean / Kanban
- Extreme Programming (XP)
- Feature-Driven development (FDD)
- Dynamic Systems Development Method (DSDM)
The most widely used methodologies based on the agile philosophy are XP and Scrum
Extreme Programming (XP) :
Wikipedia says “As a type of agile software development, it advocates frequent “releases” in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.”
It divides the entire software development life cycle into several number of short development cycles. It welcomes and incorporates changes or requirements from the customers at any phase of the development life cycle.
There are four core values in XP ,four core values: communication, simplicity, feedback, and courage .Keeping this four values in mind,In his book Extreme Programming Explained, Kent Beck defines the 12 practices,
The Planning Game
Quickly determine the scope of the next release by combining business priorities and technical estimates. As reality overtakes the plan, update the plan.
Put a simple system into production quickly, then release new versions on a very short cycle.
Guide all development with a simple shared story of how the whole system works.
The system should be designed as simply as possible at any given moment. Extra complexity is removed as soon as it is discovered.
Programmers continually write unit tests, which must run flawlessly for development to continue. Customers write tests demonstrating the features are finished.
Programmers restructure the system without changing its behavior to remove duplication, improve communication, simplify, or add flexibility.
All production code is written with two programmers at one machine.
Anyone can change any code anywhere in the system at any time.
Integrate and build the system many times a day, every time a task is completed.
Work no more than 40 hours a week as a rule. Never work overtime a second week in a row.
Include a real, live user on the team, available full-time to answer questions.
Programmers write all code in accordance with rules emphasizing communication through the code.
These practices can not be considered as the end of XP but there are many more concepts which got evolved from these practices.
Wait for the next article!!