Whitewater rafting on the Upper Gauley River in West Virginia is dangerous. And fun. And scary uncomfortable. The experience reminds me in every way of a healthy software development project.
To get down the river you need a guide, someone who has been down a dozen rivers a hundred times before and will not panic in any situation. You also need a team who share a single focus, to paddle as one. And of course, the river is the software project, fraught with class V rapids and surprises at every turn.
The guide will usually stop the boat in the calm water just before each class V and explain the plan of attack. He will pick a line; head straight for that big rock, pass just to the left, catch the current and ride down that 15-foot drop. If we are too left we will hit the breaks and bailout left of the drop. If the boat flips, safety is down the center.
Once the boat is committed to the rapid, the plan of attack may prove all good or all wrong. It could be the ride of a lifetime or the boat could capsize and everybody swims. The outcome depends on the effort of the team, the quality of the plan, and also the mood of the river. For one minute the team lives in a state whose outcome is an extreme success or extreme failure and no one is in complete control. Fun perhaps, and scary uncomfortable.
The rapid is followed by calm water where the team can regroup and rest for half a mile before the next challenge.
The interesting thing is that you cannot get down the Upper Gauley river without fear and discomfort. You can’t avoid high-risk situations where the outcome is not entirely in your control. You can minimize risks with experienced guides and high teamwork, but you cannot eliminate them.
Software development in the Internet era is white water rafting. So many companies strive for software processes and methodologies that try to eliminate risk and remove any discomfort from day to day activities. We want everything to be smooth and easy; we want to come in each day to perfect organization, every plan to be conceived and executed flawlessly; our moods relaxed and even-keeled. If not we must be doing something wrong. Each moment of discomfort is treated as a problem that needs to be fixed. Each chaotic ending to a sprint is due to some lack of planning or preparation.
Maybe we are rafting the Upper Gauley. We can’t be in control at all times. It is ok for our projects to enter stretches whose outcome is unknown. It is ok to fail. Then re-group and paddle toward the next challenge.