Why Use Agile Delivery?
Agile provides multiple opportunities for stakeholder and team engagement – before, during, and after each Sprint. By involving the client in every step of the project, there is a high degree of collaboration between the client and project team, providing more opportunities for the team to truly understand the client’s vision. Delivering working software early and frequently increases stakeholders’ trust in the team’s ability to deliver high-quality working software and encourages them to be more deeply engaged in the project.
An Agile approach provides a unique opportunity for clients to be involved throughout the project, from prioritizing features to iteration planning and review sessions to frequent software builds containing new features. However, this also requires clients to understand that they are seeing a work in progress in exchange for this added benefit of transparency.
By using time-boxed, fixed schedule Sprints of 1-4 weeks, new features are delivered quickly and frequently, with a high level of predictability. This also provides the opportunity to release or beta test the software earlier than planned if there is sufficient business value.
Because each Sprint is a fixed duration, the cost is predictable and limited to the amount of work that can be performed by the team in the fixed-schedule time box. Combined with the estimates provided to the client prior to each Sprint, the client can more readily understand the approximate cost of each feature, which improves decision making about the priority of features and the need for additional iterations.
While the team needs to stay focused on delivering an agreed-to subset of the product’s features during each iteration, there is an opportunity to constantly refine and reprioritize the overall product backlog. New or changed backlog items can be planned for the next iteration, providing the opportunity to introduce changes within a few weeks.
By allowing the client to determine the priority of features, the team understands what’s most important to the client’s business, and can deliver the features that provide the most business value.
Agile commonly uses user stories with business-focused acceptance criteria to define product features. By focusing features on the needs of real users, each feature incrementally delivers value, not just an IT component. This also provides the opportunity to beta test software after each Sprint, gaining valuable feedback early in the project and providing the ability to make changes as needed.
By breaking down the project into manageable units, the project team can focus on high-quality development, testing, and collaboration. Also, by producing frequent builds and conducting testing and reviews during each iteration, quality is improved by finding and fixing defects quickly and identifying expectation mismatches early.
Scrum Development Teams
Scrum Development TeamsAt Toughlex we work in Scrum Development Teams. Scrum is a subset of Agile. It is a lightweight process framework for agile development, and the most widely-used one. Scrum Development Team is a self-organizing, cross-functional team of people who are at the core of the Scrum development team structure. It is the team that is responsible for building the actual product increment and meeting the sprint goal. The success of Scrum largely depends on how successful the development team is. What are they responsibilities?
This is what the development team would spend their majority of time on. Once the Sprint planning meeting finishes, the team gets a Sprint backlog and a Sprint goal that they need to work. The development team self organizes themselves, and collectively decide how they will plan and manage this work. It includes designing, building, integrating, and testing the sprint backlog items to create a potentially shippable product.
One of the critical strengths of the Scrum model is its agility and ability to adapt daily. The Scrum team participates in the daily scrum meeting, where they collectively inspect the progress towards meeting the sprint goal. Based on the growth, they adapt the plan for the day. It allows them to ensure there are no surprises towards the end of the Sprint.
While a significant focus of the development team is to complete the sprint backlog, they still need to spend some time on backlog refinement. The product owner is primarily responsible for backlog management. However, the development team assists him in refining, estimating, and prioritizing the backlog items.
At the start of each Sprint, the development team participates in the Sprint Planning meeting, along with the product owner. The Development team helps the product owner in defining the goal of the Sprint. They also determine how much work they can do realistically to meet the Sprint goal. It is usually done by allocating story points to each story and comparing it with how much story point the development team has historically achieved in a Sprint. If the development team has any questions on the requirement, they will clarify that with the product owner.
At the end of each Sprint, the development team has two opportunities to Inspect and Adapt – Sprint Review and Sprint Retrospective.
The Agile Iteration Workflow
The Agile Iteration WorkflowMultiple iterations will take place during the Agile software development lifecycle and each follows its own workflow. During an iteration, it is important that the customers and business stakeholders provide feedback to ensure that the features meet their needs.
A typical iteration process flow can be visualized as follows:
Define the requirements for the iteration based on the product backlog, sprint backlog, customer and stakeholder feedback
Design and develop software based on defined requirements
QA (Quality Assurance) testing, internal and external training, documentation development
Integrate and deliver the working iteration into production
Accept customer and stakeholder feedback and work it into the requirements of the next iteration
For the duration of the project, while additional features may be fed into the product backlog, the rest of the process is a matter of repeating the steps over and over until all of the items in the product backlog have been fulfilled. As a result, the process flow is more of a loop and not a linear process.
Scrum or Kanban?Kanban and scrum are frameworks that help teams adhere to agile principles and get stuff done.
Kanban is all about visualizing work, limiting work in progress, and maximizing efficiency. Kanban teams focus on reducing the time it takes to take a project (or user story) from start to finish. Scrum teams commit to ship working software through set intervals called sprints. Their goal is to create learning loops to quickly gather and integrate customer feedback.
Toughlex usually use a bit of both worlds as it helps adapt the process to the project and the client and not the other way around.
- Regular fixed length sprints (1-4 weeks)
- Continuous flow
- At the end of each sprint
- Continuous delivery
- Product owner, scrum master, development team
- No required roles
- Lead time, cycle time, WIP
- Teams should not make changes during the sprint.
- Change can happen at any time