|
Traditionally we think about projects is in terms
of scope, time, cost, quality, human resources, communication, and risk. This
way of thinking mainly originated in industries other than software development.
It fits software development projects poorly, because these projects are mainly
about 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 in
duration, 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 "periodising" (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 burn-out
.
Restitution is automatically incorporated in projects
where you work 40 hour weeks at a low stress level. In these projects, the
evenings and week-ends are enough to recover your strength for the next work day.
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
week-ends to reach your deadlines, and these periods can be both physical and
mentally hard. In these scenarios, evening and week-end 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:
-
Evaluate the team's performance
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".[1]
This means that you should devote the necessary time and energy to help an
individual on tasks he does not fully master, eventhough 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 sureto
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 asindividuals). Talk about the pastand the future
and listen towhat they have to say. Be awarethat 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 Alnæs is Chief of Development in the department Syncronos at WM-data,
where he leads the development of the market leading Time & Attended System
WinTid 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.
Odd
Martin Solem is a consultant at Abeo AS in Norway, where he mainly does consulting
for customers regarding project management of software development, improvement
of software development processes, and system architecture. He has 10 years of
experience as a developer, architect, and project manager for different
companies, and is a ScrumMaster and a PMP.
[1] For more information, see http://infog.com/books/scrum-checklists
|