There has been a significant shift towards Agile development due to what’s known as the “software crisis.” For years software projects have been delivered late, over budget, and don’t meet the businesses requirements. Traditionally, projects have been managed using Waterfall which is a sequential development method. With Waterfall there are a series of steps and after each step, the project moves to the next. There’s no opportunity to return to a previous step without significant delays or scrapping the project altogether. Additionally, the client doesn’t see the end result until months or maybe even years after providing the requirements and it’s likely the need has completely changed (or doesn’t exist) or technology has changed by the time the project is delivered. With Agile development, project design is created and work is time-boxed (often in two-week increments) then usable code delivered for approval by the client. During each time-boxed period, the team reviews, tests, and re-evaluates the work collaboratively which gives the client a chance to decide if they like the direction of the project or if it should change. Development tasks are continuously re-evaluated and re-prioritized so the client is getting the look and feel they expected. This delivery method requires the team to work closely together on a daily basis in a highly flexible manner. As you can imagine, not everyone works well in this environment so choosing your agile team carefully is key to its success.
Characteristics of an Agile Team
What characteristics make for a good Agile team? The main traits everyone on the team should possess are a desire for collaboration and continuous improvement. An Agile team is all about communication (usually daily), teamwork, problem-solving, technical development skills, and striving to improve the team’s velocity with each iteration. Imagine checking in with your team every day to tell them what you’re working on, whether you’re encountering any issues, being asked to scrap the last week of work and start again, or being able to ask your team for help without judgment. Does this sound like a great way to work or torture? If it’s the former, you may be in a position to join an Agile development team.
Agile teams are composed of self-organized, cross-functional, highly effective groups of people. The three primary roles;
Scrum Master who facilitates the team’s progress, helps plan iterations, gathers/analyzes the team’s metrics and ensures the team is working effectively together by removing roadblocks and encouraging communication/collaboration.
Product Owner who “owns” the feature(s). This person will prioritize work, define criteria for acceptance, approval of all delivered work, and participate in testing/UAT. This person collaborates with the business to ensure the software being delivered is what will meet their needs.
Team Members represent a group of generalized specialists. This may include programmers, developers, testers, and architects, system administrators, UI/UX specialists, DBAs, etc. Team members are responsible for proposing, building, delivering and testing the best solution possible in each iteration. They design a solution and are empowered to make process changes or push back on requirements they think don’t make sense.
Successful Agile Teams
When software teams successfully use Agile delivery, they are able to release valuable, useable increments of work rapidly. These increments may be small but, because they’re small, the team can complete the work in order of business value, the product owner can change their mind without derailing the project, and the team may find smarter, more creative ways to meet the business need. As the agile team works together they become consistent and predictable in their delivery, making it easier to forecast when key milestones will be met. A self-organizing, collaborative team plans, develops, and make continuous improvements which encourages rapid and flexible response to change. Being part of the Agile culture requires a creative, flexible, and productive team player.
Find out more about how iVision leverages agile delivery models.