How does a large software project get to be one year late? One day at a time! So said Fred Brooks in his book The Mythical Man-Month, writing of his experiences at IBM in 1975. He learned the hard way about communication, estimating and prototyping.
Thankfully, 40+ years later, software development teams have smarter ways of working. Since 2001, Agile development has been the lightweight development methodology of choice.
Agile is a working method that empowers a team to deliver software in a highly productive way. At its heart is a cross-functional team, usually comprising no more than nine people. By including developers and testers in the same team, communication about progress and issues is carried out first-hand.
The scrum master facilitates a daily team meeting, known as a stand-up to indicate that it is short and to the point, and each team member contributes. By taking collective responsibility, the team solves problems internally wherever possible, reducing the need to escalate to management. The scrum master role is critical to the success of the team and training is essential. Companies such as https://www.althris.com/courses/scrum-master/ provide scrum master training in Dublin.
The product owner is part of the team, advising on priorities, answering domain-related questions, and liaising with the business. The product owner maintains the product backlog, which is a list of features that is regularly ranked and updated with business priorities.
Development is scheduled into sprints, often of two or three weeks’ duration. A number of use cases are scheduled for the sprint, which gives the team a clear target to be achieved in the short term. Completing the use cases also means finding and fixing bugs so that small amounts of high-quality software are developed and available to other teams.
The British Computer Society describes how the Met Office used Agile when developing its website for amateur weather watchers.
By allowing the team to make decisions and solve problems, team members feel empowered. There is less of a divide between developers, testers and other disciplines, and people feel more inclined to volunteer for tasks.
Delivering developments in sprints gives the business a view of progress. The client can see a working product and has a much better way of communicating requirements or changes.