Introduction: A Look at Agile
You've probably been hearing more about the Agile Method of software development. A growing number of organizations are leveraging the framework to enhance and speed up development processes at a time when quality and agility are likely to be key market differentiators.
The Agile Method is an approach to project management that is designed to help development teams effectively address the moving targets and uncertainties that characterize the creation of new software applications. One of the hallmarks of Agile is that it uses incremental, iterative sequences of work that are commonly referred to as "sprints."
A sprint is the time allotted for a specific phase of a development project, and it's considered to be complete when the time period set for the phase expires. Work on that phase of the project ends, even if some team members think more effort is needed. The next phase of the project begins and runs through its designated time frame, and so on until all the phases of the project are complete.
Many of the ideas behind Agile emerged in the 1970s as alternatives to traditional approaches to project development. But the term “Agile” in the context of software development was first popularized by the “Manifesto for Agile Software Development,” created in 2001 by a group of experienced software developers who came to realize that they were practicing software development in a different manner from the classic waterfall methodology.
The manifesto documented their shared beliefs about how modern software development processes should operate, and the values and principles outlined in the manifesto were derived from and support a range of development models, such as Scrum and Kanban.
Four central tenets make up the Agile Manifesto: Individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation; and responding to change over following a plan.
While there is value in processes and tools, comprehensive documentation, contract negotiation, and following a plan, the manifesto states, there is greater value in individuals and interactions, working software, customer collaboration, and responding to change.
The manifesto includes 12 principles:
- The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity – the art of maximizing the amount of work not done—is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile Development Models
The two main development models underpinning the Agile Method are Scrum and Kanban. There's a general misconception in the market that the Agile Method and Scrum are the same thing, so it's important to understand that Scrum is actually a way of doing work within Agile.
Scrum is one of the most popular software testing methodologies, but it’s actually a framework for managing work with an emphasis on software development.
The Scrum model is designed for teams of three to nine developers who divide work into actions that can be completed within sprints, and track progress and re-plan in 15-minute meetings called daily scrums.
Coordinating the work of multiple scrum teams within larger enterprises is achieved through approaches including Large-scale Scrum (LeSS), Scaled Agile Framework (SAFe), scrum of scrums, and Scrum@Scale.
Scrum supports a flexible product development strategy in which development teams work as individual units to reach a common goal. It enables teams to self-organize by encouraging physical proximity or online collaboration of all team members, and daily face-to-face communication among all team members.
A key component of the methodology is the acknowledgement that customers will change their minds about what they want or need regarding software, and that there will be unpredictable challenges during the development process for which predictive or planned approaches are not suited.
Because of this, Scrum features an evidence-based empirical approach that accepts the idea that problems can’t be fully understood or defined upfront. It instead focuses on how to maximize a team's ability to deliver software quickly, respond to emerging requirements, and adapt to evolving changes.
The methodology differs from the Waterfall approach in that the older method includes several testing and bug fixing cycles before a product is released. Scrum is much more collaborative and iterative, and Waterfall requires lots of documentation early in the process.
Scrum typically includes a few key roles. One is the product owner, who represents a software product's stakeholders and speaks on behalf of the customer that will be using the product. Among other responsibilities, the product owner defines the product in customer-centric terms, and sets priorities based on importance.
The product owner is tasked with focusing on the business side of product development, rather than determining how a development team solves problems, and is responsible for communicating development progress to stakeholders.
Another key role is the development or delivery team, which is responsible for delivering software product increments at the end of each sprint. These teams typically consist of three to nine members who perform all the tasks needed to create the product increments, including design, development, testing, and other functions. They are self-organizing, although there might be interaction with other roles outside the team, such as with a project management officer (PMO).
A third key role is the scrum master, who facilitates Scrum and is accountable for addressing any issues that might impede the ability of the team to deliver on the product goals. A scrum master acts as a buffer between the development team and any inside or outside influences that might detract from a project and makes sure that the Scrum framework is being followed.
Among the main responsibilities of a scrum master are to:
- Help the product owner maintain product backlogs to ensure that the needed work is understood so the team can make continual progress
- Help the team determine the definition of a completed product
- Promote self-organization within the team
- Facilitate team events to ensure regular progress; and educate product stakeholders about on Scrum principles
The Kanban Method is a way to design, manage, and enhance the workflow of a development project, enabling organizations to begin with their existing workflow and make gradual improvements by visualizing the flow of work, limiting work in progress, and focus on completing the work.
The method takes its name from the use of Kanban, visual signaling mechanisms, to control work in progress. A general term for systems using the Kanban Method is flow, reflecting that work flows continuously through a system rather than being organized into distinct timeboxes, according to the Agile Alliance, a nonprofit organization that supports Agile efforts.
Kanban can be used in any knowledge work setting, the Alliance says, and is particularly applicable in situations where work arrives in an unpredictable fashion or when a team wants to deploy work as soon as it’s ready, rather than waiting for other work items.
Development teams applying Kanban embrace values such as transparency, sharing information openly using clear and straightforward language to improve the flow of business value; balance of viewpoints and capabilities to achieve effectiveness; collaboration; and a focus on internal or external customers.
Kanban is structured to address the human tendency to resist change, according to the Alliance. Practitioners need to first understand current processes as they’re actually practiced and respect existing roles, responsibilities and job titles, and agree to pursue improvement through evolutionary change.
Practices essential to managing a Kanban system include:
- Visualization using mechanisms such as a Kanban board
- Limiting work in progress to enhance the flow of work, reduce lead times, and improve quality
- Managing flow to maximize value delivery and minimize lead times
- Making policies explicit, simple, and well-defined
- Implementing feedback loops to provide evolutionary change
- Improving collaboratively and experimentally
Analyzing the Key Business Benefits
The Agile method of software development presents several compelling potential benefits for companies. These benefits fall into two main categories: Company economic framework and people perspectives.
The Agile Method changes the way work is structured, and even the way organizations think about work. It introduces a shift in the way tasks are completed, with the aim of increasing productivity throughout the development lifecycle and at the same time boosting productivity.
The method is designed to create more efficient and productive ways of working that helps teams achieve better results and higher quality products that actually meet the needs of customers. The rise in efficiency comes because teams work in shorter cycles and are less likely to veer off in the wrong direction in terms of design and development.
Rather than working from development plans that are measured in months and even years, teams are expected to produce results within weeks. That means there is faster and regular feedback from customers, and many opportunities to make mid-course corrections in order to deliver what the customer wants at virtually each stage.
By leveraging iterative planning and feedback, teams can continuously enhance products to reflect the needs of clients, and easily adapt to changing requirements throughout the process by accurately measuring and evaluating project status at every stage.
Team members can learn during each cycle, and gain knowledge as they move along with a project. Because much of Agile is a collaborative process, this knowledge can be shared among colleagues as appropriate, building up the experience of the team as a whole.
The collaboration extends to the customers who will be using the software. Although customer needs can and do change over time, having continuous feedback during the development process greatly reduces the likelihood of delivering products that are off the mark.
From a corporate results standpoint, all of this can lead to higher revenue from product sales, shorter time to market for new products and services, and increased ability to compete.
Many might argue that in today’s business environment, being agile in general is not a nice-to-have capability – it’s a must-have. Customers expect companies to be highly agile, and if they’re not they will turn to competitors that meet this need.
It’s a common sentiment that people are an organization’s most valuable assets – and it’s true.
Regardless of how much automation companies adopt as a result of advances in artificial intelligence, machine learning, robotics, and other areas, human workers are still the heart and soul of any business. They are the drivers of creativity and innovation.
The Agile method can provide benefits from a people perspective because it can lead to happier employees and team. Better team collaboration fosters more cohesion and cooperation among developers.
When workers are satisfied, there is less likelihood of conflict among team members and less turnover, which means companies don’t need to spend much of their time looking for new talent at a time when technology skills are difficult to come by.
When there is a need to expand development teams, fostering a positive work environment can make it easier to recruit people. The Agile Method can help provide a much better environment for innovation, the empowerment of teams, and the realization of creative potential. All these things are attractive to prospective employees.
The Agile Method can also lead to more satisfied customers. Because of the close collaboration between development teams and the ultimate users of the software, customers get a chance to share in the innovation and weigh in on what they think is important. As a result, there is a much greater chance they will be pleased with the finished product.
Conclusion: Why Agile Now?
The Agile Method of software development does not guarantee success. Problems can still arise in the development process. Communications among team members can be faulty. Technology tools can fail. Customers can end up being unsatisfied with products.
It’s also important to remember that with Agile it’s not a one-size-fits-all proposition. Different organizations have unique needs and challenges, both internally and externally. What works well for one enterprise might not work well for another.
But the potential benefits of Agile would seem to make the method worth considering for any company that produces software. As noted in a report on the Agile market by Transparency Market Research, “considering the rapid technological development taking place, businesses today need to be dynamic, be able to achieve faster-time-to market and at the same time reduce costs. Technology is a critical factor on which success of a business depends. This calls for IT to be innovative, reliable and adapt to changing requirements.”
Agile development “promotes a disciplined approach to processes and involves checks and adaptations at various stages of software development,” the report says. “This calls for accountability and results in encouraging the use of best engineering practices, resulting in rapid delivery of quality software and business approaches aligned with customer needs.”
With the proliferation of technology, devices, and applications, the services behind them have great importance, Transparency Market says, resulting in the IT industry needing to increasingly manage the services it provides. This, combined with the requirement to deliver more value, is likely to drive the growth of Agile development services.
As more organizations move toward digital transformation and attempt to enhance their data management capabilities, Agile will likely play an even bigger role. A report by consulting firm McKinsey & Company, “Using Agile to Accelerate Your Data Transformation,” notes that an Agile approach to data migration and management conveys a number of important benefits, not the least of which is to declutter the business-information landscape.
“Data from multiple databases, functions, and business units can be combined and accessed more easily,” the report says. “Companies can realize immediate value from the frequent release of minimally viable data-management solutions. Through the data mining made possible by the development of a comprehensive data lake, companies can also identify new business opportunities. And if business units are involved in data migration from the outset, they can seize these emerging opportunities more quickly or otherwise help the IT organization prioritize data- and digital-transformation initiatives.”
Agile is no longer just a methodology for software development or operations management, the firm says: “It is becoming a critical capability for those companies that want to manage their data more strategically and deliver seamless multichannel customer experiences – which, in this era of digitization, is every company.”
Technology and business leaders would be wise to familiarize themselves with the Agile Method, if they haven’t already. For many organizations, it represents the way work is accomplished in the age of digital transformation.