Agile software development
On every software project, it is inevitable that that someone makes the statement, “Just give me a handful of developers and I could get this done in half the time!”
In large development projects everyone seems to spend most of their time in meetings, letting everyone else know what is happening and what the problems are. There often seems to be little effort done “in moving the ball forward” (using sports terminology). In fact a lot of the effort seems to be moving the ball backwards when user requirements change and new solutions are discovered.
There is a method to address these problems. The method is controversial because it goes against the belief that more requirements are better. Many project managers believe that if only the users could write better requirements, then projects would not be late and over budget. Unfortunately, often users cannot articulate their requirements for at least two reasons: requirements change over time, and users don’t know what is actually possible. Methodologies known as “Scrum” and “Agile” address these problems.
Scrum is an incremental framework for managing projects and is often coupled with the Agile software development methodology for software projects. The name Scrum comes from rugby, where teams move the ball forward in small steps as a unit by passing the ball back and forth. In software development, Scrum describes a small team working closely with end users to move the project code forward in small steps.
Scrum defines a set of practices and predefined roles for running a project through a series of small iterations called sprints. Each sprint is 10 to 20 working days long. Scrum is designed for projects with rapidly changing or not well understood requirements.
Form a Scrum team
A Scrum team typically has five to nine members. These include a “product owner” who is the user or customer representative and the ScrumMaster who is responsible for helping the team use the Scrum process and protecting the team from irrelevant outside influences. The team members are identified as either “chickens” or “pigs.”
The terms come from a joke about a chicken and pig: ‘A pig and a chicken are walking down a road. The chicken looks at the pig and says, “Hey, why don’t we open a restaurant?” The pig looks back at the chicken and says, “Good idea, what do you want to call it?” The chicken thinks about it and says, “Why don’t we call it ‘Ham and Eggs’?” “I don’t think so,” says the pig, “I’d be committed, but you’d only be involved.”
The product owner, ScrumMaster and team members are pigs—they are committed to the project and process. Managers, other users and stakeholders are chickens—they are just involved in the process. Both pigs and chickens are required for a Scrum project, but the pigs do the real work.
Agile defines a set of software development methodologies based on iterative development, where both requirements and solutions are co-developed through a collaboration process. Agile defines software development aspects which include continual peer review of developed code, real-time interaction with users to evaluate ideas and implementations, and rapid development cycles measured in hours or days.
Agile methodologies go by many names, including Extreme Programming [learn more from Control Engineering ] , Feature Driven Development, and Dynamic Systems Development. Early adaptors of the Agile methods were compared to “cowboy programmers,” but the methods are well-defined and, when honestly applied, can lead to significant reductions in project time and much higher rates of successful projects.
If your projects never seem to complete on time and budget, then Scrum and Agile may be your answer. They are a well proven approaches to software projects.
|Dennis Brandl is president of BR&L Consulting in Cary, NC, www.brlconsulting.com . His firm focuses on manufacturing IT. Contact Dennis at firstname.lastname@example.org .|