How to Select the Optimal Agile Framework

How to Select the Optimal Agile Framework

Agile is a far superior method of software development that is now being widely deployed in both startups and large corporations. The Agile Manifesto and Agile Principles ensure that incremental iterations, collaborative face-to-face communications, and customer substantiated quality are all addressed. With much more experience under their belts, software engineers can now focus on using even more advanced development methodologies, such as scrum, lean, and kanban. However, the team needs to determine the best methodology to implement within the agile framework, given the nature of the project. Each project is unique and may require components or characteristics from multiple approaches, depending on factors such as skill levels, company culture, and tools being deployed.

AGILE

 

 

 

 

 

 

Agile is a set of values, not practices, as defined in the Agile Manifesto. Agile development methods break the tasks into small increments with minimal planning and administration (gold plating). Iterations are short time frames (timeboxes) that typically last from one to four weeks. Each iteration involves a cross-functional team working on all functions including: planning, requirements, design, coding, unit testing?, and? acceptance testing. At the end of each iteration, stakeholders and the customer representative review progress and re-evaluate priorities in order to ensure alignment with customer needs and company goals. Agile development teams usually conduct a daily standup meeting, normally in the morning. In this brief session, team members report to each other what they did the previous day toward the team's sprint goal, what they intend to do today toward the team's sprint goal, and any roadblocks or impediments that can be identified. Specific tools and techniques, such as continuous integration, automated unit testing, pair programming, test driven development (TDD), design patterns, domain-driven design, and code refactoring are frequently used to improve quality and enhance project agility. Agile promotes a large number of productivity measures through the project or product lifecycle including:

  • Teamwork.
  • Adaptive Planning.
  • Evolutionary Development.
  • Early Delivery.
  • Continuous Improvement.
  • Change Adaptability.

 

SCRUM

 

 

 

 

 

Scrum is the most common and widely used agile software development methodology for managing product development. Scrum incorporates elements of a flexible product development strategy where the development team works as a unit to quickly get products to market. Scrum enables teams to self-organize by encouraging physical co-location, close online collaboration, and daily face-to-face communication among all team members. A key principle of scrum is its recognition that during a project, the customers can change their minds concerning requirements. Maximizing the team's ability to deliver quickly and respond to emerging requirements is prioritized. ?Scrum? is an iterative and prescriptive process for? building software within the agile framework. Development teams plan and commit to completing a certain amount of work in a short time period called a sprint. At the end of the sprint, the team reviews the work with a product owner (customer representative). The scrum team then holds a retrospective to analyze processes and procedures during the sprint and to determine what can be improved during the next iteration. Scrum’s rigid structure includes a daily standup, planning, review, and retrospective. These meetings are excellent touch points for periodic checkpoints with work that is taking place and reviewing progress with stakeholders. The retrospective is the most important meeting since it enables teams to focus on continuous improvement (Kaizen).

 

 

 

 

 

Scrum is a series of miniature projects wrapped up into sprint iterations and is a push-based system rather a pull-based one. Scrum includes three core roles that are key to the project moving forward successfully: development team, scrum master, and product owner. The development team is composed of 3-9 cross-functional & self-organized individuals who create a product increment. The scrum master ensures that the scrum process is followed as intended and acts as a buffer between the team and distracting influences. The product owner serves as the voice of the customer and is accountable for meeting stakeholder requirements. Artifacts in scrum include the following:

  • Product Backlog.
  • Sprint Backlog.
  • Product Increment.
  • Sprint Burndown Chart.
  • Release Burndown Chart.

 

LEAN

 

 

 

 

 

 

Lean is another methodology within the agile framework, adapted from lean manufacturing techniques.  In lean, all steps not adding value to the customer are waste and must be eliminated. Value stream mapping techniques are used to identify waste. There are 7 principles of lean software development that need to be applied to adhere to lean:

  1. Eliminate Waste. Tasks that do not add value should not be performed. The business value of tasks and practices should be able to be clearly articulated. Current practices and procedures should be evaluated to ensure they comply with lean principles. Just because a practice adds value does not mean that is the correct place for the development team to start. Daily scrums are intended to help the team. If the team finds them a waste of time, a red flag can be raised. The team needs to consider whether the daily scrums are being run incorrectly. Since daily scrums are not status meeting, learning or coaching may be needed first. Other problems may arise if the project has not implemented other parts of the daily scrum (i.e. teams with shared goals, sprints with backlogs, & definitions of “Done”).
  2. Amplify Learning. Software development is a knowledge creating process. Project practices need to encourage systematic learning that enables the team to stay on track and make good decisions. Project procedures need to include mechanisms for the team to rapidly respond to this new knowledge. A number of agile practices are intended to provide the team with frequent and regular feedback from which the team can learn. Examples include demos of the product to the customer at the end of each sprint to receive the customer feedback and regular retrospectives to get the team’s feedback. Also, practices include automated tests that are run during TDD and continuous integration practices to provide rapid feedback on the integrity of the software.
  3. Decide Late. Team practices enable decisions to be deferred and clarifying details to be provided until the last possible moment. User stories are used to identify critical features. Specifics on how to implement these practices are not needed until the software build needs to take place. As part of the lean process, some application features will already be built, so stakeholders will have a better idea of what the new features will look like. Investing time in design and build early in the process before architectural details are flushed out often results in significant rework.
  4. Deliver Fast. The same just-in-time processes used in lean manufacturing can be applied to software. The faster viable code is delivered, then the better off the final product will be since speed is the absence of waste. If the end product is delivered without major defects, feedback will be received and incorporated into the next product iteration sooner. The team will be forced to learn more quickly and communicate better in order to meet tighter time demands. Speed also ensures that the current customer needs are addressed rather than old requirements.
  5. Empower The Team. The traditional role of management is reversed in lean environments. The teams self-organize, and managers learn how to support the developers. Once the managers have a better idea of the team needs, they can focus on letting the team do a good job, encourage progress, catch errors, and remove impediments. The manager should not try to interfere or micromanage the team. Team members should also be given the chance to enhance skills through training and apprenticeships. Team members should be given motivation and a higher purpose for working, along with direct access to the customer.
  6. Build Quality In. Quality needs to be addressed up front and not toward the end of the sprint or release. Team practices need to ensure that the team can build features right the first time. Rework needs to be avoided at all costs. Including exploratory testing in team practices helps to ensure that issues are identified in real-time so they can be corrected before moving onto the next task. Handing developer code over to testers for validation frequently results in rework. The number of defects keeps increasing since testers find bugs in code, and developers must go back to fix these instead of focusing on other assignments.
  7. See The Whole. The team needs to optimize for the whole instead of a subset. The team needs to focus on lean thinking to “think big, act small, fail fast, learn rapidly”. All incentives and rewards need to reflect this philosophy so that direct business value is encouraged rather than intermediate measures, such as lines of code or number of defects. Well defined relationships between team members and external vendors also help overall efforts.

 

KANBAN

Kanban is another methodology within the agile framework, where the focus is placed on just-in-time delivery without overloading team members. Similar to lean, kanban is based off the kanban manufacturing techniques that focus on efficiency. Visualization is an important component of kanban, since it allows a deeper understanding of both the work and workflow. Visualization is frequently accomplished using sticky notes on a kanban board. There are two types of kanban, The Kanban Method (LKU Kanban) and Open Kanban. 

The Kanban Method (LKU Kanban) is a pull system that exposes operation or process problems and stimulates collaboration to continuously improve the system. The Kanban Method has four basic principles:

  1. Start With Existing Processes. The Kanban Method does not dictate specific roles or steps. The Kanban Method leverages existing roles and processes to stimulate continuous, incremental, and evolutionary system changes. The Kanban Method is a change management method.
  2. Pursue Incremental, Evolutionary Change. The team must agree that continuous, incremental, and evolutionary change is the way to make permanent system improvements. Broad changes may seem more effective but have a higher failure rate due to resistance and fear in the organization. The Kanban Method encourages continuous, small, incremental, and evolutionary changes to the current system.
  3. Respect Existing Processes, Roles, Responsibilities, Titles. Organizations typically have some areas that perform very well and others that need improvements. The Kanban Method attempts to remove fear in order to facilitate future change by agreeing to respect current roles, responsibilities, and job titles with the goal of gaining broader support.
  4. Leadership At All Levels. Acts of leadership at all levels in the organization, from individual contributors to senior management, are encouraged.

Open Kanban incorporates both agile and lean in its core values: Respect for People, Courage, Focus on Value, Communication-Collaboration, and a Holistic or Systemic Approach to Change. The core values are reflected in 4 key practices:

  1. Visualize Workflow. Create a visual model of work and workflow. Making the work visible, along with bottlenecks and queues, instantly leads to communication and collaboration.
  2. Limit Work In Process. Limit the unfinished work in process and reduce the completion time. Problems caused by task switching and reprioritization can be reduced by limiting work in process.
  3. Focus On Flow. By using work in process limits and developing team-driven policies, the system can be optimized to improve the smooth flow of work, collect metrics to analyze flow, and identify leading indicators of future problems.
  4. Continuously Improve. Once the system is in place, the culture can focus on continuous improvement. Teams measure their effectiveness by tracking flow, quality, throughput, and lead times. Experiments and analysis can change the system to improve the team’s effectiveness.

 

SCRUMBAN

 

 

 

 

There is a final variation of kanban called scrumban. Scrumban is a mix of both scrum and kanban that is meant for continuous and unpredictable workflow in areas such as production support. Scrumban can give teams the power to adapt and change to stakeholder and production needs, without feeling overburdened by their project methodology. Scrumban is designed to remove metrics that encourage undesired outcomes. Scrumban can restore working time to the team and avoids unnecessary meetings. Scrumban can limit the team’s work in progress so that team members can finish what they start to a high standard. Scrumban can remove overhead stress for the development team, increase efficiency, and increase the overall satisfaction for the customer. In scrumban, teamwork is organized in small iterations and monitored with the help of visual boards, similar to scrum boards and kanban boards?. The tasks are then added to the board and the team completes them, each team member working on one task at a time. Instead of velocity used in scrum, a useful scrumban metric is cycle time. Cycle time is the length of time a trouble ticket takes to complete, measured from when it was first opened. Planning meetings are held to determine what tasks to complete in the next iteration. To keep iterations short, task limits are added, and a planning trigger is set in place for the team to know when to plan next. There are no predefined roles in scrumban, and the team keeps the roles they already have.

 

 

 

 

 

 

The agile framework is quite flexible and malleable, allowing companies room to tailor a version that suits the culture and needs of many product development environments. Scrum, lean, and kanban (including scrumban) all allow rapid and iterative development to take place, with each methodology providing a unique emphasis on software engineering practices. Each project or product can determine the values and processes that will enable high levels of user involvement, quick deployments, and resource efficiency while coding solutions to business objectives. The winning team will take the upfront time to truly understand how skill levels and culture influence development procedures when choosing the ideal agile path. 

 

 

 

 

 

 

 

About the Author: Doug Floyd is a digital strategist and technologist focusing on transformative growth through digital technology solutions. Doug specializes in digital technology strategy, product leadership, and program management.

Other content by Doug ...

Alexandre Nunes, PMP, CSCP, MBA

Digital Product Manager at Dell

9 年

Excellent reading, Doug Floyd, interesting to see how Agile frameworks have spread into all sizes of projects/organizations. Thanks for sharing.

回复

要查看或添加评论,请登录

Doug Floyd的更多文章

社区洞察

其他会员也浏览了