Agile Development – The Agile Software Engineering Approach, How It Works, and Estimation Considerations
An Agile software engineering approach often results in more accountability and less waste for problem analysis, solution design, coding, testing, and product release. The continuous feedback loop fostered with the Agile approach illuminates problems earlier than with other methodologies.
Instead of only one long iteration of performing these SDLC activities sequentially, an Agile team works with the client or stakeholder to identify the highest priority business needs. It then repeatedly conducts these activities in short durations (sprints) to deliver these needs early and often in the project cycle.
Project Roles Within The Agile Process
The Agile process disperses responsibilities among all project team members and increases the team’s accountability to stakeholders. In addition, Agile has many pragmatic practices, and it allows ‘choice’ about the ones best suited for your team, and customizing the approach to work best in your culture. Listed is an overview of the roles that should be considered, depending on the project and requirements.
Product Owner
The product owner is one of the key planners (along with the coach and tech lead) and is the primary decision-maker. Usually, multiple people, or business units, have input into the product priorities, and a consensus can often be reached. However, with the occasional priority conflict, the product owner makes the final decision on product features and priority.
Agile Coach
The Agile coach guides the project team through the iterations, facilitating the meetings (e.g., iteration open, iteration close, retrospective, planning), helping to remove obstacles for the project team, and communicating with management and stakeholders. The coach also challenges the team to improve and reduce waste and teaches improvement techniques as needed. Depending on project size and complexity, an additional project manager may exist, particularly with teams new to Agile or with organizations that still require some of the traditional approaches.
Team Members
The project team members include all roles involved with the project, such as the product owner, coach, business users, development team (programmers, business analysts, and testers) and infrastructure/network team. The team may consist of employees, consultants, or both.
Stakeholders
Traditionally, stakeholders have been defined as the person or business unit whose budget funds the project. With the Agile approach, depending on the methodology, the term “stakeholders” typically is not used. Instead, terms such as “customer” and “programmer” or “product owner” and “team members” are used instead. If “stakeholder” is used, it typically refers to anyone directly or indirectly affected by the product’s development or use. Different stakeholders have a vested interest in the product at different times, and some for the life of the product from inception.
Measuring
Progress
Sprints
Progress is measured in an Agile project through iterations. Iteration, also known as a Sprint in the Scrum methodology, is an improvement increment of a product that results in a tangible work product that can be reviewed or demonstrated to the stakeholders. Multiple orchestrated iterations are the foundation of the project.
Iterations range from one to four weeks in length, with two-week durations the most common. The Agile coach, along with the team members, will determine the appropriate iteration duration for the team, and schedule works for each iteration.
The Agile coach must work closely with the project owner to discover the priority order and component dependencies, while understanding the team makeup, so meaningful working software can be delivered with each iteration, avoiding any chaos that can arise by over-promising based on resources. Using a “Velocity Report” can give the team constant feedback, as well as a way to measure effort over timed present a visual representation of real-world production so stakeholders can see your project’s success, but be cautious since velocity can be deceiving.
Agile
Iterations Roadmap
1 – Iteration Planning Meeting
The team plans ahead of iteration execution in an iteration planning meeting. The customer (or appropriate representative) reviews the product backlog, asks development for more refined estimates, adjusts priorities, and the top priorities become the iteration backlog – the planned work for the iteration.
2 – Iteration Backlog
The iteration planning meeting creates the iteration backlog – the work the team plans to accomplish in the iteration.
3 – Product Increment Processing
At the end of an iteration, the team delivers a product increment – preferably delivering value a small iteration at a time. The product may have enough functionality to warrant a production release; at minimum, it is an internal release to testing and customer demonstration.
4 – Iteration Review
In the iteration review meeting, the team demonstrates to the users the new functionality completed during the iteration. This meeting and demonstration enable the product owner and users to validate progress and offer insight into what the next iteration might contain.
5 – Iteration Retrospective
The project team reflects on the iteration and determines the necessary improvements while the customer adjusts business needs, priorities, and selections per iteration. The team also reviews and adjusts their activities per iteration, focusing on continuous improvement.
6 – Product Backlog
The product backlog contains the product’s incomplete features and bugs. At any time, any team member can add items to it. The product owner, with input from others, maintains the priority of all items in the backlog. All ideas are valid, however not all ideas may become implemented as part of the product (i.e., features that don’t adhere to law, regulations, or company standards won’t become part of the backlog). The backlog consists of stories and tasks, initially at high-level and explored into more detail as requested during iteration planning.
Agile
Harder to Estimate, But More Cost Effective
Agile Is A Philosophy
Agile is a philosophy of project management that has gained popularity in software development over the past ten years. However, it has applications outside software as well. The basic idea behind agile development is to break a project into simple parts and implement them one at a time. Start with a minimum viable prototype and continue to iterate features and functionality over time, with frequent releases and opportunities to change priorities after every release.
Since an Agile team can tailor their approach to changing needs in the client’s company, you will get a better end product, especailly since requirements often are adjusted midstream. That said, it is important to work with an experienced team to get as close an estimate as possible when figuring out how much the projects will cost.
Agile
Faster & Cheaper vs. Responsive
Agile Helps Identify The Core Functionality
It used to be that all software projects were developed using a waterfall methodology. Waterfall projects started with a big list of specifications needed for a final piece of software. As consultants, we’d look at the list of all the features required, try to estimate the time/cost it would take us to build them, and once agreed, work for many months or even a year on a project until it was completed.
Responsibilities And Deliverables To Consider
The Agile Process
A common theme in Agile methodologies is the adaptation of a methodology and procedures to a given team or organization’s culture, history, and staff. Leading with someone that understands how this is done can create a perfect fit for your project, your development team, and your organization.
Listed below are examples of the responsibilities and deliverables your development team must consider:
- Provide development process/methodology assessment, mentoring, and guidance.
- Outline methodology to be followed, keeping in mind industry best practices and client standards.
- Quantify and outline milestones to ensure project is on track.
- Outline deployment strategy.
- Provide a framework to log activities.
- Ensure that new system is easy to understand and maintain.
- Provide an outline to ensure security requirements are met, ranging from authentication/authorization to securing data from accidental damage or penetration.
- Implement change management process.
- Identify component dependencies (other applications, external data feeds, etc.).
- Establish volume objectives (throughput, storage, etc.).
- Ensure the product adheres to service level agreements.
- Implement access/security constraints.
- Ensure the product adheres to auditing/regulatory requirements.
- Establish and enforce accessibility standards.
- Provide system and technical design document.
Agile’s
Advantage
Solve The Right Problem
A key consideration for an agile development project is, “What problem are we solving?” This is a more difficult question than it seems at first. For clients, there are near-term, medium-term, and long-term needs for their software. Some business groups within the client’s company may want different functionalities from other groups.
Agile development allows us to test out potential solutions without committing to the long term and that is powerful. We can build a minimum viable product and present it to the client within a few weeks. From there, we have something concrete that we can test and gather feedback on. If that prototype promises to be successful, then great. We’ll add more features and functionality to it (in similar quick sprints and feedback cycles) to get it ready for deployment. If the early prototype misses the mark for exactly what the client needs, we only spent a few weeks on it and we can easily re-tool our solution based on feedback.
This ability to solve the right problem is the most significant advantage of agile development. It’s also what makes estimation so hard. Often, the problem we’re solving can change. So how do we create reasonable estimates for our clients?
Estimates
Are Collaborative
Agile Estimates Must Be Collaborative
Agile budget and timeline estimates first and foremost have to be collaborative. Gone are the days when you can put a sticker price on a specific piece of software. Instead, everyone from developers, managers, executives, and the client’s concerned business units need to be involved
Conclusion
Learn more about our agile consulting practice, and get in touch to find out how agile methodology can help you meet your technology goals.