People-Driven Software Development

[article]
Summary:
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 have changed. Remember to stay focused on the target and the principle work schedule. Also remember that it is not the heavy workload every day that makes you a better performer, but a well thought-out cycle plan.

What Is Restitution?
Restitution can be defined as a process to re-establish equilibrium after physical and psychological strain. Activities like rest, sleep, time off, mental recreation, as well as the addition of food and fluid, are part of the restitution process. By incorporating effective restitution, we wish to:

  • Increase the outcome of the workout;
  • Be able to train harder in the next training cycle; and
  • Avoid muscle-soreness and burnout.

Restitution is automatically incorporated in projects where you work 40-hour weeks at a low stress level. In these projects, the evenings and weekends are enough to recover your strength for the next workday. It is important that the time off from work is free time and that the brain is allowed to think about something other than work. This means no work-related phone calls or email.
As we all know, you sometimes have to work nights and weekends to reach your deadlines, and these periods can be both physical and mentally hard. In these scenarios, evening and weekend restitution are not enough. Thus, you should add some days or even weeks (depending on the project) after the project to allow your project participants to regain their strength. We do not mean that the employee should wander around the halls, but that he should get the chance to do one or more of the following:

  • Reflect over the project
  • Evaluate the team's performance
  • Upgrade his skills

The point is to do something useful at a lower speed to regain mental strength and also increase skills before the next project starts.

Peak Condition
The best athletes have a unique ability to be in peak shape at the right time. To make this happen you have to be thorough with your cycle planning - and it's a given that you have to train.

If you follow the cycle plan you will go from a lot of training to high intensity training with a lot of rest in between. This is the opposite of what we do in software development projects. In these projects we start nice and easy and end up with a race with high intensity and no rest. It is very difficult to deliver good results under these circumstances.

The physical and mental condition should at least be the same at the end of the project as at the start. This is a good rule of thumb, but even great athletes are tired after the Olympics. The big difference is that the cycle plan makes the athlete regain balance fast.

To be in peak condition on a software development project, you definitely have to think about the items above. You have to do this to create extra energy to perform better at the end of the project. As a project leader, you do not want the participants to be exhausted in the test phase. You want better quality and control than that.

Three Practical Tasks
If you would like to implement this principle of “people-driven software development,” you can:

  • Clear three hours of every work day and use this time with the team (yes, that means three hours without meetings). The leader should be available for the participants and not the project. This is quite obvious in Scrum. Scrum states that: “The Scrum Master is the coach and the facilitator of the team.” He improves the productivity. He always has a training plan for the team—the Impediment Backlog. This means that you should devote the necessary time and energy to help an individual on tasks he does not fully master, even though it may slow down the project at that moment. This will increase the participant's skills in the long run, and you will most likely regain the time later in the project. As a coach, you support the athlete as well as make the conditions favorable for the athlete so he can perform his best. When you focus most of your attention on the athlete, you expect him to be dedicated and focused on his tasks, and to be physically and mentally alert during both training and competitions.
  • Divide sprints into cycles . Create a plan that supports the principle of cycles. Make sure to make an iteration plan that decreases the workload towards the milestones. The reason for this is that you want your participants to have extra energy at the end of the project to achieve the necessary quality. You must also make room for rest and upgrading skills after weeks of overtime.
  • Schedule 30 minutes of face-time with each team member every week. You need time to reflect over what you are doing. Make room for conversations with your team members (as a group and as individuals). Talk about the past and the future and listen to what they have to say. Be aware that sometimes the employee needs to talk about things outside work. Take time to do this because a balance between the situation at work and home is important for the participant's performance.

Put the project participants at the center of your attention. This will increase their development and communications skills. It will have a profound effect on your project and its success. Let the people drive your project and expect the best. Mindless participation is not enough.


About the authors
Hans Christian Alnaelig is Chief of Development in the department Syncronos at WM-data, where he leads the development of the market leading Time amp; Attended SystemWinTid in Norway. He has eight years of experience as a developer and project manager and shares his experience through courses and speaking at universities and seminars. He believes in a structured and analytic approach to his use of methods, uses the best from the best, and based on his experience makes them fit in regards to the people available and tasks to complete.

About the author

About the author

AgileConnection is a TechWell community.

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