Saturday, December 08, 2007

Reducing the stress during software development

We keep seeing the stressed out software development team and the customers, blaming and pointing fingers at each other day in and day out. There are several reasons which causes germination of stress in the team. Some reasons include, poor top leadership, unskilled team, unsupportive customer and poor project planning to name a few.

In this post I am going to share some of my thoughts on reducing the stress by creating a proper project plan and estimation by keeping the forces of nature in mind.

Project plans are always good but it should be flexible enough to accommodate changes, considering the forces of nature in mind. The project dates and numbers should be thoroughly reviewed quite often and should be negotiated with the customer for any changes. The process of having a adjustable project plan is the key to reduce lot of stress for the entire team, including the customer.

Before I discuss about stress, let us review some of the commonly adapted software estimation techniques and their pros and cons.

1. Many projects use unscientific estimation techniques, which are mostly the "gut feeling estimations" and this leads to estimations being way off the right path. The poor estimates are either due to lack of skills to estimate or inability to think through risks and consider the risks during estimation.

2. In order to mitigate the risks due to unscientific estimation technique, shown above, many teams simply add 20% buffer to the total effort before submitting the estimates to the customer.

3. There are some light weight estimation techniques like Wide band delphi, planning poker using fibonacci series, relative estimation techniques, etc. which are found to be more accurate than the gut feeling techniques.

4. As per the cone of uncertainty, actual duration to complete the projects can be 4 times or 1/4th of the initial estimations. So, if one has to ensure a guaranteed delivery of the product to the customer, then the development team should do an optimistic estimate and multiply the number by 4 before committing the delivery date to the customer. Even though this theory is supposed to hold good for product delivery, no customer would agree with this model.

Moral of the story: So far no body has been able to come up with a model/formula which can give an accurate estimate and estimates remains as guesstimates most of the time.

Ok, Why is it not possible to give an accurate product delivery date and time to the customer ?
Because, it is we(human beings) who develop softwares. Until human beings are in control of software development one cannot give accurate numbers.

But Why ?
Because human beings themselves are controlled by forces of nature.
What are these forces of nature ?
Basically these are our surroundings, our friends and family with whom we interact everyday, our own emotions which are controlled again by our surroundings, etc.
Examples include : employees can fall sick forcing them to apply leave without any notice, government can change rules which can directly/indirectly impact personal productivity, natural disasters like earthquake, volcanoes can affect work etc

Ok so how is this related to stress ? Typically project plans are created at the beginning of the project and as described in the sections above, the PMs would add some buffer to the estimate before submitting to the customer. Major problem arises as this project plan and estimates are considered to be carved on stone without leaving any breathing space for natural forces to play. Even the 20% buffer on the optimistic estimate is not sufficient as natural forces cannot be predicted by %s.

The above said "Unnatural forces project plan" would be made as the guiding torch by the PMs to achieve the project goals. These plans are given to the developers to execute, which in turn forces the brave software development soldiers to fight every problem arising due to natural forces. These fights would in turn increases the blood pressure, heart beats of every team member. By the team the team reaches the end of the overshooted project, they would have won the half battle of the product delivery but would have definitely lost their mental peace.

How do we reduce this stress in above situation ?
  • First and foremost, acknowledging that there are forces of nature and we as human beings are controlled by these forces, every second. This is not the other way around.
  • As and when we see the blood pressure raising or the heart beat increasing, be aware that some forces of nature is casting its shadow somewhere. Bring this immediately to the attention of the customer and discuss the impact of this on the entire project. Try to make accommodative changes to the plan.
  • If the customer does not understand or does not want to cooperate on reestimations, bring this issue to the notice of your superiors. They in turn could influence the customer.
Finally managing one's stress depends on choosing whether to cooperate and plan to work with forces of nature OR to drive against it. Finally you might drive against the forces and win, but at what cost ?