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.

Projects managed in this way are dynamic. There are often multiple routes a project could take. Priorities and business objectives for the client can change from month to month. Agile allows us to adjust our approach after every iteration, adding small pieces to the software, like building blocks.
Due to their dynamic nature, agile projects can be challenging to estimate in terms of time and budget. Since priorities can change, the estimates will often change as well. From a client’s perspective, however, this can be an issue because you need a good estimate to understand whether the software is worth the investment. A project with an unlimited budget and timeline would be an unlimited liability.

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.

Often, however, the final result of waterfall development fell short. Perhaps the software didn’t really solve the right problem for the client, or the client’s business needs had shifted over the months it took us to build the software. The result was a disappointed client and a frustrated development team. No one wins in that scenario. This is where Agile fits into the picture.
Agile helps us identify the core functionality the client needs early in the development process. Then, we can build added features based on the client’s feedback as we go along. Agile projects can be faster and cheaper than their waterfall counterparts, but this is not necessarily guaranteed. The real aim of agile is responsive development that creates a better end product. Most clients understand and appreciate that getting the right product is much more important than getting the fastest/cheapest one. In many cases, however, clients get the best of both worlds from agile development: a better product, quicker, and less expensive than waterfall.

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.
If you need someone to examine your software development life cycle (SDLC), based on experience and industry standards, and recommend a way forward, let us know. Intertech consultants are experts in the Agile process.

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

One important aspect of Agile is that it is flexible. In most cases, we can tailor the project specifications to fit the client’s budget and timeline. We can estimate out the first MVP, see if it works for the client, and then create a continuing estimate for new features. If we agreed on one feature, but now the client wants to swap it out for another, we can often do that (provided it’s another feature of similar complexity and doesn’t create new work for our developers).
The key here is communication and regular review. By releasing early and often, we reduce risk for our clients, since it’s simple to track progress and make changes.
Conclusion

Hopefully, you can see how agile addresses business needs better than waterfall projects. That said, there is still room for waterfall development when software projects are well-defined and straightforward. The reality is a middle road between waterfall and agile.
While agile development projects are more challenging to estimate because of their dynamic nature, they are more effective at identifying and solving the right problems. Agile can respond to changing business needs, and with collaboration, a good agile estimation can reduce risk.

Learn more about our agile consulting practice, and get in touch to find out how agile methodology can help you meet your technology goals.

Discover All That Intertech Can Do For You!

Let’s Build Something Great Together!

We’re ready to get started.