In the software industry, it is not uncommon to face a situation where your project stretches way beyond your originally planned timeline. Or you developed a product and thought you met all the requirements. But your user still says, this is not exactly what I asked for.
You conduct a review. You dig deep and find that you lacked in your planning and delivery methodology. But then you realize it is too late. The results: wastage of time, resources, dissatisfied client, distorted relationship.
How to correct this?
Here, Agile Development Methodology can come to your rescue. Using Agile, you can plug all the loose ends caused by ineffective planning by finding a mechanism to emerging requirements at regular intervals and adapting your plans accordingly.
So let’s make an attempt to understand why Agile is a perfect fit for your product.
When and why to choose Agile?
Agile provides a framework that is adaptable, gives predictable results with measurable data. A project that needs urgent deliveries and has complex requirements is asking for Agile Development Methodology for the best outcomes. Besides, faster time to market is a factor driving most of the projects. Consider these facts:
According to Forrester, Agile methodologies, especially Scrum, have become the de facto method of software development for teams big and small. “Starting around 2009, Agile moved into the mainstream of software Agile development methodologies with startling speed. The demand for Agile is so great that it has broken through many potential barriers, including ones such as compliance. As year-to-year growth of Agile adoption continues, it’s clear that a lot of teams are seeing a lot of value in Agile,” stated Tom Grant, Senior Analyst at Forrester, in one of his posts.
Leading organizations have adopted the best practices of Scrum and combined them with the practicalities of working with offshore teams in differing time-zones.
What does Agile constitute and how it works
The mainstay of Scrum is time-boxed iterations that deliver a working product at the end of each iteration which allows faster feedback from stakeholders through frequent demonstrations of running code.
However, planning is required to ensure that these iterations deliver features as per the discussed and decided priority of business requirements.
Agile Planning – Inspect and Adapt
The purpose of Agile planning is to iteratively discover an optimal solution to the overall product development. This undertakes questioning like which features are needed with which resources and in what timeline. Once the questions are raised, it further undertakes the drafting of the most suitable answers.
An agile approach to estimating and planning succeeds in finding such a solution because planning is done at different levels and re-planning occurs frequently. You start with high-level requirements that become more detailed as you learn more about the product you are building. You start with high-level architectural representations that materialize towards a detailed design as you actually begin developing while working on the product. You might think of this as rolling wave planning or progressive elaboration. The idea is that you plan based on what you know, and plan more as you learn more.
In Agile, you use three levels of planning: release planning, iteration planning, and daily planning. The release plan looks ahead for the duration of the release, typically three to six months. An iteration plan looks at only the duration of one iteration or sprint, which is typically two to four weeks. A daily plan is the result of team member commitments made to each other during the daily standup meeting.
Teamwork and Collaboration
At the core of Scrum is the concept of a team, a high-performance cross-functional team that is responsible for the execution of the scope and delivering working software.
The Agile development team coordinates with a Product Owner team who, while facing the customer, also describes the requirements to the team, typically in the form of User Stories.
The development team may include technical architects, UX designers, testers, and a scrum-master who helps coordinate tasks during the course of a sprint, i.e. an iteration of the product.
The keys to success in any process are clarity, accountability, and measurable progress.
Understanding the role of Product Owner
The Product Owner has a key role in Scrum as it requires a complex knowledge of work to analyze, elaborate, and communicate requirements. The concepts of Product Owner and Proxy Product Owner within the Agile Development Methodology add comprehensibility and objectivity in the processes. The Proxy Product Owner (PO) collaborates with the product owner to:
- Identify and provide clarity through a well-defined Product Backlog prioritized to your needs.
- Enables the team to make and meet commitments
- Demonstrate measurable progress by facilitating demonstration of integrated features
Since there is rarely enough time to do everything which is desired in a release, the product owner needs to prioritize the Product Backlog with the client. There are four primary factors to be considered when prioritizing:
- The financial value of having the features
- The cost of developing (and perhaps supporting) the new features
- The amount and significance of learning and new knowledge created by developing the features
- The amount of risk removed by developing the features
Relative weightage provides an approach for correctly assessing the benefits of implementing a feature, the cost of not implementing it, and converts the cost into a single value representing the priority of features.
Product releases are planned based on what is known to be necessary and sufficient to complete an MVP of the project. MVP or the Minimum Viable Product is the minimum set of features that will help you validate the idea of the product, without incurring the expenses of the complete product development.
Iterative and Incremental Development
The Product Backlog, a prioritized list of features containing user stories, or short business descriptions of all functionality desired in the product at a given moment, is continually updated with the changing requirements of the users.
The Product Backlog is divided into Releases, with the first release typically being the MVP. The Releases are further divided into “timeboxes” called sprints of equal duration containing User Stories from the Release Backlog distributed across them. At the end of each sprint, the project team reaches a milestone in the development and releases a build for client review. Thus by completing consecutive prioritized Sprint Backlog we accomplish a Release Backlog. And by completing the Releases Backlog we complete the entire Product Backlog.
Scrum Task Board
It is one of the most vital components of Agile planning. The team members sincerely update the task board throughout the sprint. This board prominently highlights the sprint backlog and eases up processes. One of the key advantages of a scrum task board is that the team members can precisely identify product backlog items, i.e. stories, tasks and set their timeline. The main columns included in a scrum task board are: ‘To do’, ‘In process’, ‘To verify’ and ‘Done’.
Agile technical practices
Here you focus on practicing simple design and code refactoring so that the frequent changes and short incremental builds do not break the targeted features. Here are some technical practices which are part of processes.
- Simple Design – Design just enough to solve the immediate problem while keeping the architecture scalable enough to make changes.
- Refactoring – When we remove redundancy, eliminate unused functionality, and rejuvenate obsolete designs from the code, we are refactoring. Refactoring throughout the entire project life cycle saves time and increases quality.
- Test Driven Development – Unit tests are one of the cornerstones of Agile. All code must have unit tests written. All code must pass all unit tests before it can be released.
Agile practices have revolutionized application delivery with their focus on customer value creation as well as establishing and building trust through delivery. By streamlining the processes of planning, review, and feedback, Agile strengthens your ability to deliver as per the timeline and with quality.