Blog‎ > ‎1. Scrum‎ > ‎

1.Predictive and Adaptive Lifecycle


Introduction to Agile

When one thinks about project development methodologies, the first thing that comes to our mind are the methodologies described in PMBOK guide or Prince2 Manual. Therefore a question always arises in our minds, is another methodology really required?

The answer to this question lies in the fact that over the last 10-15 years the world of people working in the Knowledge Environment has changed drastically. People working in the Knowledge environments such as Information Technology (IT), Engineering, Teaching, Scientists, Lawyers, Doctors often need to work differently than the conventional Manufacturing environments. The key in the Knowledge environment lies in Communicating, Collaborating, Adapting to provide maximum value, since everyone in the Knowledge world is special – they have something unique and they have something more to contribute than following orders routinely. This is the thought process which has evolved the development methodologies in the recent past in the Knowledge based environments.

Development methods exist on a continuum from adaptive to predictive. Agile methods lie on the adaptive side of this continuum. One key of adaptive development methods is a “Rolling Wave” approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change. Adaptive methods focus on adapting quickly to changing realities. An adaptive team changes as per needs of the project. An adaptive team will have difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method will be about what will happen on that date. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost.

Predictive methods, in contrast, focus on analysing and planning the future in detail and cater for known risks. In the extremes, a predictive team can report exactly what features and tasks are planned for the entire length of the development process. Predictive methods rely on effective early phase analysis and if this goes very wrong, the project may have difficulty changing direction. Predictive teams will often institute a Change Control Board to ensure that only the most valuable changes are considered.

Characteristics of Agile Software Development Methodologies

Agile software development is a group of software development methods 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. It is a conceptual framework that promotes foreseen tight interactions throughout the development cycle.

The Agile Manifesto introduced the term in 2001. Since then, the Agile Movement, with all its values, principles, methods, practices, tools, champions and practitioners, philosophies and cultures, has significantly changed the landscape of the modern software engineering and commercial software development in the Internet era.

There are many specific agile development methods. Most promote development, teamwork, collaboration, and process adaptability throughout the life-cycle of the project.

Some of the common features of Agile are as below

Iterative, incremental and evolutionary

Agile methods break tasks into small increments with minimal planning and do not directly involve long-term planning. Iterations are short time frames (timeboxes) that typically last from one to four weeks. Each iteration involves a cross-functional team working in all functions: planning, requirements analysis, design, coding, unit testing, and acceptance testing. At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly. An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration. Multiple iterations might be required to release a product or new features. Kaizen is the Japanese management philosophy of continuous improvement and uses Small increments for delivering continuous improvements.

Efficient and face-to-face communication

No matter what development disciplines are required, each agile team will contain a customer representative, e.g. Product Owner in Scrum. This person is appointed by stakeholders to act on their behalf and makes a personal commitment to being available for developers to answer mid-iteration questions. At the end of each iteration, stakeholders and the customer representative review progress and re-evaluate priorities with a view to optimizing the return on investment (ROI) and ensuring alignment with customer needs and company goals.

In agile software development, an information radiator is a (normally large) physical display located prominently in an office, where passers-by can see it. It presents an up-to-date summary of the status of a software project or other product.

Very short feedback loop and adaptation cycle

A common characteristic of agile development are meetings such as daily status meetings and Iteration Review meetings. We will learn about the details of the meetings later in the book, however, it is important to note that Agile teams meet frequently to discuss and get feedback from stakeholders. This enables a very short feedback loop which helps in Adaptation (change) just in case the Stakeholder expectations don’t match with what is delivered. Thru the regular feedback loop, the teams internally also discuss and solve impediments quickly so that the project is brought back on track literally on a daily basis.

Quality and Technical Excellence focus

Maintaining technical excellence is one of the key requirements of Agile Methodologies. Specific tools and techniques, such as continuous integration, automated unit testing, pair programming, test-driven development, design patterns, domain-driven design, code refactoring and other techniques are often used to improve quality and enhance project agility.


Sample Scrum Agile Video by Amit Kulkarni

 Sample Training Video by Sateesh Kamat

 

Amit Kulkarni conducting Planning Poker Estimation Exercise

 

EPMC - Project Foundational Concepts by Sateesh Kamat

Other Topics