Agile development, contrasted with traditional development, is a responsive, generalized approach to software development. Agile is responsive because each development team has members available to respond to situations as they arise, at any stage of development. Because team members work on all aspects of the software development, they develop high proficiency in working projects together. The most common form of agile development is called scrum, a Rugby term which adequately describes the software teamwork.
Whether watching American football, soccer, basketball or hockey, team sports usually have heroes. Scoring, blocking, tackling, running, people excel in these areas as individuals, as specialists. When looking at the Rugby scrum, the most important part of the scrum is not the individuals involved, but the sum of their actions. 8 players (in a 3-4-1 row pattern) interlock heads with 8 players of the opposite team. Even though each player has a unique role, "the ideal engagement of a pack into a scrum is a simultaneous movement in the hit, shunt and drive. It is the instantaneous force exerted that makes the difference not the sum of all the forces over time." (Wikipedia)
As in rugby, scrum development requires the "instantaneous force" of all the players on each problem to swiftly and accurately develop software, overcome bugs, train users, and continue development. Software development has traditionally been more of a specialist's game: code is designed by a hand-picked team, another team writes it, another team tests it, and another team implements it into the business. The specialization of teams creates less teamwork and rigid development times and processes.
Just like a scrum in rugby is designed to instantaneously react to situations, a scrum development team can develop with fluidity, responding to new design challenges, bugs, training, or whatever needs the product owner has.
In a rugby team, the scrum is a self-contained unit with defined roles but one purpose, and each role can change depending on play. Similarly, in agile development, a scrum team has multiple roles in each development. Because of the multiple roles and their ability to shift depending on needs, each member of a scrum development team is just that: a team member. The only specialized roles are the Product Owner, and the Scrum Master. The Product Owner takes the role of final decisions about the product, speaks with investors, and decides whether to continue development and/or ship a product. The Scrum Master works with relationships in the team to negotiate roadblocks, develop team culture, and facilitate communication.
Out of Scrum
While a line of scrimmage in American football has a goal of getting the ball over the 10 yard line, there are no similar goals of a Rugby scrum. The goal of scrum is to get the ball out. Sometimes scrums will try and keep the ball in the scrum for certain reasons, but if they take too long, this is a penalty offense.
In agile development, the same principle applies. Scrum works in iterations, where each independent aspect of a product is developed in short increments. The goal of agile development is not to develop the best product ever, it is to produce a usable product or section of a product which can be further developed and tested on the field, coming back to an iteration when the software needs further development or patches.
A rugby team's goal is to keep the ball, get it out of scrum and into play. An agile development team's goal is to develop a usable program in a matter of weeks, do final testing to approval and ship it to the company for field testing.
When looking for an agile development team who uses scrum, you have to see the same type of cross-specialization, team unity, and special focus on each task that you see of a rugby team on the field. An agile development team must be able to produce the product, and get it out of scrum and into your hands. To discover how scrum development can aid you on your project, contact Contensive and ask about our development processes.