Agile is an alternative to the traditional waterfall or stage-gate project management in software development. Traditional methodologies follow a step-by-step sequence such as initiation, planning, execution, control, and monitoring, and finally closing. Scope, budget, and schedule are determined early in the project and closely managed during the project’s duration with clearly defined change processes. Traditional project management expects that once a scope of work, budget plans, and activity milestones are created and reviewed by sponsors and stakeholders, changes will be few and difficult to implement.
The agile methodology approach to software development instead emphasizes that the requirements of the solution to be delivered, in other words, what the end customer wants and needs will change over time. Instead of waiting or expecting to know it all at the beginning of the project, agile teams tackle this unpredictability through incremental, iterative work, and lots of feedback from the customer.
Agile teams are commonly known as scrum teams, emphasizing small(5 to 7 members), with simplicity and flexibility in mind for each member’s role. As a team organizational method, it requires constant empirical feedback, team self-management, and the delivery of fully functioning, properly tested product increments within short time iterations of between three to five weeks called sprints.
There are usually only three roles: product owner, developer/tester, and ScrumMaster. The product owner represents the customers of the solution, for example, a software application, and his role is to provide constant feedback and influence team decisions taking into account what is best for the customer. Developers are expected not only to program but also to test their own work and that of other team members if necessary. ScrumMaster’s are closely related to project managers, and
in a sense, that’s what they are, but without the baggage of processes and procedures imposed by a traditional methodology. Instead, ScrumMasters are expected to participate and facilitate teamwork by taking any task or role required to move the project forward.
ScrumMasters are also expected to own the effective planning and execution of meetings that support agile development: backlog grooming, sprint planning, daily 15-minute stand-up, sprint reviews, and sprint retrospectives. A backlog is a collection of project/business requirements called user stories. Each user story is a self-contained, easy to understand narrative, that when worked upon in a sprint delivers a new software application capability. User stories that are not being
delivered in a current sprint are “stored” in a backlog, and the list is “groomed” at the end of each sprint to remove, update, or become part of the next sprint deliverable. After the backlog grooming exercise, at the sprint planning meeting, the team decides which user stories will be delivered on the next sprint.
In sprint review meetings, teams show what they have accomplished and are ready to ship. The sprint retrospective meeting is done before the next sprint is started. This is an open, honest, all-team discussion of what went well and what went wrong. At the end of the meeting, the team agrees on what could be changed to make the next sprint more productive.
In order to derive effective results from teams following an agile methodology, there are important considerations to take into account.
Build teams wisely with hiring decisions and team design that ensure acceptance and cultural fit of its members. Training, mentorship, and coaching should be made available and if necessary part of new hiring decisions to create a support structure for implementation of agile development. Trust the team to make decisions and stay away from their daily process. The only way to build an effective scrum team is to let them organize themselves at their own pace and with their own collaboration processes and working agreements.
Protect the team from disruptions during the sprint, especially from over-eager product owners who may want to introduce changes in mid-sprint.
Make it a continuous process to identify and eliminate waste, encouraging lean processes and practices. Automate as many manual processes as you can. Create incentives wisely to boost morale and reward positive behavior recognizing in a balanced approach both teams and individuals for on-time results, high quality, creativity, collaboration, leadership, and process improvements. Create opportunities for growth with rotating team roles.