Agile Development Overview
What is Agile Software Development?
Agile is an iterative and incremental software development framework. It is based on 12 core principles and implemented through specific methods and practices. It provides a flexible product development strategy where a development team and product owner work as a unit to reach a common goal.
The process starts by creating the product vision, a high-level description of the product to be created. Next, user stories are created that describe desired functions and features. These user stories are grouped into themes and prioritized in a product backlog. An Agile trained development team is expert at breaking these user stories down into bite-sized tasks (a process called grooming) that drive day-to-day coding efforts.
A typical Agile process works in 2-week cycles called sprints. At the end of each sprint, a working piece of software is tested and delivered based on the user stories that were prioritized for that sprint. The process continues in increments of 2-week sprints until the product owner believes they have a completed the development of a minimum viable product.
Why Is Agile Better?
Agile is a powerful development tool that delivers process and efficiency benefits to the development team. With Agile, gone are the days of exhaustive requirements documents and costly, never ending change orders. Agile-based development also brings many benefits to the organization itself.
That’s because Agile helps development teams address the common issues that can negatively impact a development project. These include project scope creep, failure to meet project schedules, cost overruns, and less than optimal product quality. Using an Agile development process, development teams can mitigate or eliminate these common problems and experience many benefits:
- Improved product quality due to high-quality collaboration, development, and testing
- An emphasis on business value fostered by business stakeholder involvement and feedback during the development process
- A focus on user needs, not just technology requirements
- A collaborative, open communication, and team-oriented approach
- A flexible and responsive “change friendly” development process
- A measurable, time boxed software development process
- Quick and cost effective creation of a viable product
- Optimal cost control and development timing enabled by phased development process
With a core understanding of Agile and its’ benefits, let’s explore how Agile came to exist and what development needs it addresses.
The Evolution of Agile
The history of Agile software development began long before the creation of the 2001 Agile Manifesto which defined the core values of the Agile software development process.
In the early 1990s, as PC computing began to proliferate in the enterprise, software development faced a crisis—the time between a validated business need and a working software application was about three years.
In certain industries, the lag was far greater than three years. For example, in the aerospace and defense sectors, it could be 20 or more years before a complex system was ready for deployment.
This development lag frustrated the software development community. In response, a group of 17 software thought leaders, led by aerospace engineer John Kern, began meeting to discuss ways to create software more efficiently and quickly, without the overhead of the waterfall development method which was widely used at that time. Unlike Agile, waterfall development required that teams completed one step fully before moving to the next stage and there was no going back to a completed stage.
Waterfall methodology wasn’t he only development methodology leading up to modern Agile methodology. Like in nature, the path to Agile contained evolutionary methodologies that also included Rapid Application Development (RAD) and the Spiral development method. While RAD focused on reducing the preparation stages to quickly begin development, spiral development was an iterative process that started small and then gradually added more features and functions over time. These process iterations then led to the Scrum development methodology around 1995. Scrum development was based on the premise that smaller self-organized teams developed code based on objectives rather than specific coding assignments. In Scrum development, the path to working software was also time-boxed.
All of this eventually led to Agile development as we know it today. In 2001 the team of 17 software visionaries launched the Agile Manifesto which identified 12 core principles of the present-day Agile movement. As one might expect, evolution is a continuous process and even today new technologies and processes are evolving to further expedite the creation of software products. For now, Agile has proven to be a successful and dominant development methodology characterized by rapidly developed, high-quality software constructed by a highly responsive and iterative process.
Where Agile is Used
Is Agile Best For Big or Small Companies, Internal Teams, or External Partners?
Agile is a framework and is implemented through proven methods and practices. However, there is flexibility in the approach used. Agile teams can select which methods and practices best support their environments and the development project in progress.
The bottom line is that the Agile framework can be
customized to fit any size company, big or small, working exclusively with internal or external teams or working with an external partner that serves as an extension of the development team.
For example, large internal teams may invest more mindshare in the review and retrospective part of the process. External Agile teams can make the process easy by using tools that help clients generate user stories and feature requirements. At AndPlus, we leverage our experience to refine the methods and practices that optimize how we, as an external Agile development team, can work most efficiently and effectively with a client’s development and/or product management teams.
Listen to our CEO, Sean Mahoney sit down with Brian Geary and chat about enabling a fast start with a software project!
Agile's Key Characteristics
Agile’s many benefits are made possible by seven key characteristics:
The Agile process is iterative and starts by building the most valuable functionality required in a piece of software. With user and stakeholder feedback during the development cycle, features can be incrementally added and fine-tuned until the product owner feels it is ready to launch. The result is a product that better aligns user expectations and business objectives.
The Agile process creates time boundaries for all key events, including development. This prevents the dreaded “when will we be done” scenario. Typically, a project manager (known as the Scrum Master) will set key boundaries at the start of a project. This includes development cycles, meeting lengths, and other key interactions. Development sprints are normally 2 weeks long and meetings have defined agendas and lengths to accomplish specific objectives. With a time boxed approach progress can more accurately be measured and final delivery of a product can more accurately be projected and managed.
Focused On Minimum Marketable Features (MMFs)
MMFs (minimum marketable features) are the most important, prioritized features of an application. If these features stood alone, without any other features, you would have a completely usable piece of software. At the start of an Agile project, the product owner and development team’s objective is to focus on the MMF’s. This approach helps to prevent scope creep which can result in an expanded development time frame and/or an inflated development budget.
Continuous End User Feedback
The Agile process is a collaborative process. Open communication is part of the “DNA” of an Agile team. Agile supports frequent collaboration between the product owner, scrum master, development team, and end users and supports both verbal and written documentation in the project management system (Jira is a great tool for this). This collaboration and communication is one of the most important components for receiving continuous feedback from end users and project stakeholders. A user’s perspective is unique in providing feedback to the product owner and development team regarding product direction and what features need to be added or adjusted.
Change Requests at Any Time
Unlike other software processes (such as the Waterfall development methodology mentioned above), Agile is open to change throughout all stages of development. Instead of rewriting a requirements document or processing a change order to incorporate a change, an iterative user story is simply added to the product backlog and brought into the next development cycle (sprint). This creates a simple, responsive, and cost-effective way to be flexible and react quickly to customer needs.
Agile software development is a visual process. This helps communication among all the key roles in the project. Information should “radiate” and be readably seen and understood. This is sometimes done using Post-it notes on large planning walls and then input into an Agile project management tool. Some teams feel more comfortable putting information directly into the Agile process management tool. Either way it is easy to review the development process, see current project status, and understand the next stages of the development project.
Agile development breaks down feature requirements into small pieces known as “user stories.” Development teams assess the complexity of these stories using relative scores called “story points.” Once the team begins development and the project is tracked, data is available to measure the project velocity, which enables more precise forecasting of resource requirements and timelines. With measurable objectives project plans and development expectations can be frequently evaluated to help ensure timely completion of the development project.
Agile's Participant Roles
The Agile process has multiple defined project roles that help to ensure efficient execution and comprehensive management of a development project:
The product owner controls the direction of the product. She/he is the main decision maker and has the final say regarding what features are implemented and when they are completed. Their main responsibilities include:
- Create and evolve the product vision
- Help create, prioritize, and provide detail as needed for user stories and specific functionality
- Have in-depth knowledge of the product
- Balance input from stakeholders
- Make business decisions as presented by members of the team
The Scrum Master is the project manager in an Agile process. “Scrum” is a common method used to implement the principles of Agile development. It describes the approach and interaction of a tightly connected cross-functional team. The Scrum Master coordinates communication between the development team, product owner, and other stakeholders. Their main responsibilities include:
- Remove any blockers that the team may have
- Monitor, control, and report all activities within the process
- Navigate within the context of company culture
- Be a process expert…guide people within the process but also step out of process when deemed
The team members are the developers and designers who will be working on the project. Their role in the project is to:
- Be expert in task decomposition
- Be technically competent
- Accurately translate product vision into functional software
Stakeholders are those who have an interest in the product but are not involved in the day-to-day process. They typically help evolve the product roadmap and vision with the product owner, providing product expertise or market insight. Their main roles are:
- Answering technical or other product related questions
- Communicate release points
- Articulate product drivers to the product owner
Users’ involvement can make or break a project. Users help answer the most important question: are we building the right product? Their main roles are to:
- Provide feedback to sprint reviews and/or demos
- Provide feedback to specific questions administered by the product owner
The Agile Development Process
At AndPlus, we believe there are 6 important steps to executing an effective Agile software development project. These include:
- Step 1 – Project kickoff
- Step 2 – Product backlog
- Step 3 – Grooming
- Step 4 – Sprint backlog
- Step 5 – Sprint development cycle
- Step 6 – Sprint review and retrospective
These steps and their supporting activities described in more detail below:
Step 1: The Project Kickoff
A strong project kickoff is an important first step to Agile software development projects. A good kickoff has two components. The first is Agile training. This is critical to those who are new to Agile. The second is project readiness.
When a client partners with AndPlus to build custom software, we offer complimentary Agile training at the start of a project. These training sessions typically last from 1-3 hours and can be presented to an individual, a team of ten, or an entire organization.
During project readiness, the Scrum Master creates a common language, approach, and understanding between the development team and product team. Items covered include roles, communication process, schedule and logistics, tools required, and asset lists including logins and other operational information.
Step 2: Product Backlog
The key event to create the product backlog is the release planning meeting. This is a highly interactive meeting often lasting 2-4 hours. The objectives are to develop the product vision, create and prioritize user stories and themes, and to develop the minimum marketable feature (MMF) line and a corresponding release plan.
Develop A Product Vision
Following the project kickoff, a product vision is completed. The product vision is a high-level description of the product to be created. It provides an overarching goal that guides everyone involved in the development effort. The product vision should fit a simple 7-question format. An example is shown below:
- For: «target customer»
- Who: «needs»
- The: «product name»
- Is a: «product category»
- That: «product benefit, reason to buy»
- Unlike: «competitors»
- Our product: «differentiation or value proposition»
A complete and comprehensive product vision provides a clear description of what is to be achieved enabling all team members to understand business objectives, user needs, and key functionality to be created. While seemingly a simple task to complete, a well-constructed product vision takes some effort and goes a long way toward informing team members, gaining consensus of the project’s objectives, and aligning other aspects of the development effort.
Create User Stories and Product Backlog
A user story is the core building block of the Agile software development process. It is a plain English description of a piece of the desired functionality. It helps focus the team on user needs and features (in user language) instead of writing highly detailed technical requirements.
Typically, there are many user stories that make-up a development project. Agile user stories normally follow a specific format: as a (“role”), I want to (“function”), so that (“desired goal”). Most importantly, this approach opens up a series of conversations about desired functionality within a piece of software allowing the teams to quickly gain consensus before development commences.
Once all user stories are created by the product owner and team, they are organized into themes (related areas of functionality) and placed in the product backlog. The product backlog is then prioritized by highest value item and serves as a repository for all of the development tasks needed for a development project.
Develop the Minimum Marketable Feature (MMF) And Release Plans
The MMF is the collection of user stories that, when completed by the development team, represents the minimum acceptable product that people would use or buy. With the MMF list created, project teams can more effectively avoid scope creep and its negative project impacts.
Release planning gives the team a common vision about what needs to be achieved, and more importantly, when it needs to happen. It helps the team and product owner have a single vision regarding prioritization and helps guide the team when development trade-offs need to be considered.
Step 3: Grooming
Grooming is an open discussion between the development team and product owner. User stories are discussed to help the team gain a better understanding of the functionality that is needed to fulfill a story.
During the grooming process, the team will discuss the role, desired function, and goal of the user story with the product owner. Then, amongst themselves, they will discuss how they plan to technically implement the user story. This process eliminates the need to develop extensive feature documentation and functionality requirements that in previous development methodologies led to unacceptably long development cycles.
Once they have completely groomed a user story, the team will estimate the complexity by assigning “points” to that user story. A high number of points indicates there is more complexity required to implement the user story and likely longer development time frame than user stories with lower point estimates.
Step 4: Sprint Backlog
Again, a sprint is a development cycle – usually two weeks in duration. Sprints are organized after the development team and product owner have groomed enough stories to start the first sprint. Development sprints are built around user stories that are moved from the product backlog into the “sprint backlog.” The team keeps the product owner’s priorities in place when creating the sprint backlog, but team members can pull stories into the backlog out of order if it makes sense for certain stories to be developed together. This creates the work commitments for the 2-week development sprint.
Step 5: The Sprint Development Cycle
A sprint is the development period in the Agile process. During a sprint the development team writes code, designs the user interface, creates the features of an application, and tests and verifies their code. Typically, a sprint lasts 2 weeks however, the number of hours devoted to each sprint varies with the size and scope of the project. In some cases, a sprint can last 4 weeks or another suitable interval, depending on the needs and complexity of the project.
An important part of the sprint development process is the daily standup meeting. In the daily standup, the development team discusses what they did yesterday, what they are working on today, and if anything is blocking their progress. These standups generally last about 15 minutes and involve only the development team, although the product owner can attend. Standup meetings help to keep teams focused, informed, and accountable.
Step 6 – Sprint Review and Retrospective
At the end of each sprint, the team has produced a coded, tested, and usable piece of software. The sprint review consists of demonstrating the functionality of the software to the product owner and other key roles on the team. The objective is to prove that the sprint goals were (or were not) achieved. Identified changes or bugs can be added to the product backlog and prioritized for the next sprint if desired.
An important element of the Agile process is continued learning and improvement. This is the purpose of the sprint retrospective. At the end of every sprint, the team also reviews what worked well during the sprint and what could work better. These key learnings are incorporated into future sprints to improve efficiency and effectiveness.
Each project typically targets a specified number of sprints before it is complete. But the Agile process is flexible. The project can conclude in fewer sprints if the product owner feels enough functionality has been built to bring a minimum viable product to market. Or sprints can be added to accommodate additional functions that are added as the project progresses and user feedback is incorporated. Either way, the cycle repeats. Groom user stories, add to the sprint backlog, develop and test, review and learn.
Agile Wrap Up: Powerful, Proven, and Flexible
Hopefully this online guide has provided a basic understanding of the Agile development process and the reasons why this process has come to be accepted by so many developers around the world.
As with most processes the guidelines of Agile’s structured approach brings powerful benefits to development teams and to the results they achieve. At the same time, the Agile framework serves as a flexible process that can be modified and refined to adapt to development projects and their respective development teams. With a well-defined process and defined user roles, an Agile-experienced development team can accomplish remarkable product development that achieves desired business outcomes and delivers exceptional user experiences.
AndPlus is a digital product development agency that applies technologies to create or improve experiences, processes, and products. For more than a decade, our teams of builders, innovators, engineers, and designers have worked the boundaries of mobile, web, IoT, firmware, and advanced technologies including data warehouse, machine learning, AI, and big data.
Driven by a passion for excellence, AndPlus creates reliable digital products that deliver exceptional user experiences. Our deep expertise and custom Agile process enable AndPlus to iterate quickly, provide transparency, and deliver products on time and on budget — helping our partners get to market faster with less risk.
If you have a digital project need, give us a call and let's develop something awesome... together.