What is agile?
Agile method is a way to approach project management (in software development) by assisting teams in responding to the unpredictability of product development using incremental and iterative work sequences commonly known as sprints. This collaboration involves a self-organizing dan cross-functional teams with the end user and stakeholder. Once you implement Agile Method in product development, the team need to be ready with such things like adaptive planning, continual improvement and rapid flexible response to change. In other words, there’s no fix planning without getting feedback from the user itself.
The Agile product development process
The Agile method is believed could give a faster and more accurate usable product for end user where the product development will be broken into small increments to avoid the amount of up-front planning and design. This increments will become a list of task that needs to be done in sprints and iterations involving cross-functional team working from every aspect of product development like planning, analysis, design, coding, unit testing, and acceptance testing. By the end of the iterations, the working product will be demonstrated to the stakeholders, allowing the product to adapt to changes quickly. The iterations goal is not to create a ready-to-market product but deliver an available release (with minimal bugs) at the end of each iteration. To have a fully functional product or new feature, it sometimes needs multiple iterations. The working software is considered as the primary measure of progress in the Agile method.
To make sure everyone in the team delivers a valuable amount of work on Agile development, the working environment also plays a big role. An efficient face to face communications need to be developed in a close tight small group of a development team, included the customer representation (Product Owner in scrum). This will avoid the cycle time taken on regular development mode via phone, chat, wiki or email. The Product Owner will be responsible to answer every question asked by the development team throughout the iteration and review or even re-evaluate the priorities to ensure the alignment of customer needs and company goals.
The team should also able to have a quick daily stand up to update on their day to day progress. In a brief session, team members report to each other what they did the previous day toward their team’s iteration goal, what they intend to do today toward the goal, and any roadblocks or impediments they can see to the goal. By doing this daily stand up the product development can adapt to the changes that possibly happen during the iterations and keep their focus on the quality of the delivery.
How Agile begin?
With customer driven’s development we face nowadays, Agile could answer the need of organizations to goes way beyond software development and permits the process becoming more adaptive to cope with the volatile, uncertain and complex need of the user.
If we trace back to 1957, iterative and incremental development method already implement in evolutionary project management and adaptive software development emerging in the early 1970s.
Along the way, there are several numbers of method, frameworks evolved in software development scene during the 1990s. There’s rapid application development (RAD), unified process (UP), dynamic system development method (DSDM), extreme programming (XP) and scrum. Although they started early, they are now collectively referred to as agile software development method.
Not until 2001 when seventeen software developers finally published Agile Manifesto at a meeting in Snowbird, Utah after discussing lightweight development method. Among the participant of this event are Kent Beck, Ward Cunningham, Dave Thomas, Jeff Sutherland, Ken Schwaber, Jim Highsmith, Alistair Cockburn, and Robert C. Martin.
Based on their combined experience of developing software and helping others do that, the seventeen signatories to the manifesto proclaimed that they value:
Individuals and Interactions over processes and tools
Working Software over comprehensive documentation
Customer Collaboration over contract negotiation
Responding to Change over following a plan
Along with those value, the Manifesto for Agile Software Development is based on twelve principles:
- Customer satisfaction by early and continuous delivery of valuable software.
- Welcome changing requirements, even in late development.
- Deliver working software frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the primary measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective and adjusts accordingly
Who is implementing Agile?
The experiment initially started with single teams and expanded to a group of teams in a more large scale organization. One of the organizations that build their product based on Agile principles and values today is Spotify. They started with scrum for their first initial product and as the platform grows, they prove that agile could tackle the need of their user. It’s good that their first platform builds on scrum where everything is planned and define, so they didn’t lose focus on what they tried to achieve and present to the public. But once the user and team grow significantly, the pivot to Agile development method really help them to understand more about their user and rapidly provide the right product to their market. Spotify shows a great example of how to grow a product with the approach that can satisfy both stakeholder and end user using the Agile method.
The following video will give you a better explanation of how they drop scrum and jump into Agile.
With all the benefit and values that Agile has, the practices can still be inefficient in large organizations and certain types of developments. Some still consider agile as too extreme, so they adopt a more hybrid approach by mixing agile and plan-driven approaches such as DSDM and scrum without sacrificing the fundamental principles.