People-Driven Software Development

Traditionally, we think about projects is in termsof scope, time, cost, quality, human resources, communication, and risk. Thisway of thinking mainly originated in industries other than software development.It fits software development projects poorly, because these projects are mainlyabout people's abilities.

Professional athletes make a living of being the best by using their abilities. What does an athlete do to be the best? If we take for granted that an athlete has at least a small amount of talent and a body that can be trained, the most important element to be successful in the sports arena is planning when and why you do a workout. We suggest that we need to do the same in software development projects by changing the way we plan to increase the performance of the individual.

Planning a Sport Season
When planning, you start by dividing the year into segments - when to compete, train, and rest. This is your Sport Season Plan. Then, you establish cycles of workloads and the type of work within each segment. These are your Cycle Plans. A typical thing to do is to operate with a cycle that contains A, B, C, and D weeks. A, B, and C weeks with increasing intensity, and D is a low intensity week, where the intention is to regain strength. You don't plan every detail of your workouts in the Cycle Plan; for instance, an athlete doesn't decide the exact weight he should lift in a particular week. The plan will contain what kind of practices there should be and the number of series and repetitions. The exact weights will be decided right before the training commences and will depend on how well the training proceeds. You use the cycles to reach peak condition at the right time.

Parts of this approach can be mapped to the planning levels in Scrum:

  • Release Planning = Sports Season Plan
  • Sprint Planning = Cycle Plan
  • Detailed Sprint Plan = Detailed Cycle Planning

Three important elements in sports planning that we miss in the SCRUM planning are:

  • Planning and follow up on an individual level.
  • Incorporating restitution in the overall release plan and the sprint plan, and varying the workload and intensity (such as having A, B, C, and D weeks).
  • Lowering workload intensity before important milestones to achieve peak performance.

Cycle planning means that you should vary your work induration, strength, intensity, and practices so you can balance the workload on your body to achieve better results.
In software development, we usually start projects nice and easy and increase the workload and intensity as the project progresses. In the end, you work like a maniac to meet the deadlines. This is where the cycle plan comes into play. We have tested this on a few projects and it seems like the physical and psychological condition of each team member improves and is more in balance after these projects. We are talking about making a rhythm that is adjusted to the project and the participants according to skills and experience, as well as according to the project's goals and deadlines.

Athletes must have a cycle plan that incorporates enough rest. This means you have to consider which practices to do at what intensity, duration, and order. The cycle plan is made with the intention to reach a goal at a given date.

You have to adapt your method of "period sing" (varying duration, strength, intensity, and practices) and restitution for every single project to fit the character of the specific project. On some projects, you need a design phase with a long maturation period and for others you do not. You must take into consideration how detailed you plan should be. It is not very useful to have a detailed plan a year ahead, because when you get there the preconditions implied in the plan will

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.