Gotel, O. A Whitewater Guide to Requirements Deliverance. Requirements Quarterly 58, The Newsletter of the British Computer Society Requirements Engineering Specialist Group (RESG), March 2012, pp.7–12.
One of the only times that I get completely lost in the moment is when I am paddling whitewater. It is both a physically and mentally taxing activity! As the difficulty of the rapids increases, there is simply no room to concentrate on anything else but the water and my moment-to-moment actions to work with it. If you are not a boater, perhaps you sat at the edge of your seat when you first watched Jon Voight and Burt Reynolds canoe down monstrous rapids to the sound of distant banjo music in that classic 1972 movie?When running whitewater, it is important to maintain composure in the midst of ‘apparent’ turbulence, and there are actually many interesting parallels between what makes for a challenging but safe river run and what makes for the successful deliverance of project requirements. Always one to combine work with pleasure, here is my ten-point white water inspired guide to help get you from the requirements put-in to the take-out on your project.
1. Research BEFORE you Put-in
There is an internationally recognised scale for rating whitewater difficulty, from class I (easy) to class VI (extreme and exploratory). The class of the river can give you a good indication of whether it is: (a) within your skill level to undertake; and (b) something that you even want to run. The rating system is based upon factors such as the constriction of the river channel, the gradient of the riverbed, the rate at which the water flows, the need to navigate around obstacles, the likely consequences if you mess up, the difficulty of rescue, etc. A class II boater floating carelessly into a class V rapid is certainly in for a surprise!
Before embarking on the requirements gathering for a project, spend some time exploring those factors that suggest the likely complexity of the task ahead, such as the number of distinct stakeholder types, their distribution, the clarity and difficulty of the problem being tackled, the novelty of the projected solution, etc. Have your checklist of criteria and, not only ensure that you gain some idea as to the scope and viability of the upcoming task, also ensure that you have the necessary skills within your team to undertake it. Maybe there would even be value in using a similar rating scale to classify the complexity of requirements engineering projects with some universal consistency?
2. When in Doubt, Scout
When you are on a raging river and cannot see the full layout of the rapid ahead, it is time to stop and scout. The purpose of scouting is to discern a navigable path down the rapid, reading the water from the bottom of the rapid back up to the top, so as to take a decision as to whether and how to run it. What we are commonly looking for when we scout is a way to chain together downstream ‘tongues’ of green water that indicate smooth deep channels to follow, along with a safe stopping spot to scout once again when part way down the rapid if needed. An obvious case for scouting arises when you see a ‘horizon line’ ahead, as this usually signals a sudden drop – it could be a two foot ledge or it could be an eighty foot waterfall – so the self-preserving boater gets out of their boat and looks.
There are certainly some equivalent markers on a project that signal that it is time to stop and look more closely at the requirements being engineered. Proceeding with an un-validated requirement is like running a horizon line blind, whereas implementing a requirement without stopping to examine its structure and end point first (i.e., its satisfaction criteria) is like blundering one’s way down an unknown rapid and hoping to make it through. While you do not have to see all the way to the end of a project and trace every single requirement’s possible path through it ahead of time, you do need to take just enough time to scrutinise and decompose each requirement if it is to be engineered with any sense of control and with the potential for eventual satisfaction.
3. Embrace Moments of Calm
Water flows downstream and an eddy is formed when there is a reversal of this main current. This is due to water passing around an obstacle and creating a displacement behind it into which the water then flows upstream. Eddies are generally good places to stop, catch your breath and scout a rapid from your boat on the river. Building on these rest stops, eddy-hopping is a great way to break a rapid down into manageable chunks. When you eddy-hop, you sit in an eddy, look for the next eddy in a rapid, paddle into it and repeat all the way down the rapid. Some eddies are the size of aircraft carriers and hold multiple boaters quite comfortably. A micro eddy is the size of a bikini, so things can end badly when more than one boater tries to pile in. Either eddy size, crossing the fierce eddy line that divides the opposing current directions is a common place to flip upside-down, especially if you misjudge or lack control. So, you always combine this localised and detailed view of the ‘safe’ eddy stops in a rapid with a broader picture of what lies ahead downstream before committing to the run.
Focusing too intently on incrementally decomposing and tackling any one particular requirement can take you to that last-stop pre-occupied micro eddy where you are faced with no other option but to run the scary waterfall ahead, and maybe even upside-down. Therefore, maintain perspective as you engineer requirements and avoid tunnel vision. Zoom into the detail of requirements, but also pan out to the wider context of interrelated requirements and project constraints to gain the whole picture. This situational awareness and context switching is as paramount to a project’s survival as it is to a boater’s.
4. Use Clear Signals
River terms are simple and shared, such as upstream and downstream (water flows in the downstream direction, except in eddies), and river right and river left (when looking downstream), for the four basic river directions. Because there is little point relying upon voice communication when stuck in a micro eddy with whitewater whooshing past you, there is also a small set of signals that boaters use to communicate unambiguously among a group when on a river. These include pointing a paddle in the direction to go in so as to avoid obstacles. Note that boaters never point a paddle at a hazard because that is straight where their buddies will head! Also, a tap on the helmet is the universal signal to both check and confirm that a boater is ‘okay’. A whistle is used when boaters loose this visual line of communication.
Communication is just as fundamental to the smooth running of the requirements engineering process, yet we can overwhelm each other with so much noise in our accompanying documentation that it can be hard to discern the salient requirements and prioritise actions, let alone establish what is and is not timely at any one moment. Agree on the essentials of requirements-related communication and the different ways in which this communication can take place, especially when real-time information is of the essence. Perhaps also check up more regularly with the various project stakeholders along the way: is the customer still happy with the way in which the requirements are being engineered and are the team members in a good place right now?
5. Understand How Features Form and Change
The rock is the foundation for many of the features that we either get to enjoy or to fear on a river, and we learn the moves that we need in our repertoire in order to negotiate them. A ‘boof’ can get you over a partially submerged rock, ‘side-surfing’ can help keep you upright in a friendly hole and twirling a paddle on the face of a wave can be the ultimate camera pose. As water levels rise, rocks begin to get covered and form pour-overs, which evolve into hydraulics (holes). These then turn into waves and, eventually, all signs of the rock’s presence may disappear. Water levels are always rising and falling and the difficulty of the river is therefore dynamic, so you never paddle exactly the same river twice. Importantly, and often from trial and error, we learn to read the water so that we can distinguish a fun play hole at one water level from a keeper hydraulic that re-circulates water and holds boats (and boaters) at another level. [A very dangerous example of a keeper hydraulic is a low-head dam, also referred to as a drowning machine. If you learn one thing from this article, learn this … don’t go near low-head dams!]
Requirements anchor and shape projects, and the texture they lend to a project is also in transition as the engineering progresses, and as requirements become satisfied by architectural designs and implementation components. Understand the various features that arise and evolve around different types of requirements as the project moves forward in time and as knowledge develops. Understand how any change to these base requirements impacts these features and can change the character of the entire project continuum. Further understand that adding new requirements to an established project can have the same impact as a rock landslide crashing down into a river, dislodging everything you have come to rely upon. You can learn and pre-empt patterns too.
6. Avoid Known Hazards
Water always finds a way to flow, but solid objects are a different matter altogether. Strainers are fallen trees and any boater passing through a strainer is likely to end up like spaghetti. Boulder sieves and undercuts are formed by rocks and can lead to the same untimely end for a boater as the force of the current wraps or pins a boat around the obstacle. Water is extremely powerful and unrelenting, and a river in flood stage is a menace when it bursts its banks because it is typically filled with all these hazards and more. However, water is also predictable, so we learn about these common hazards and the behaviour of water around them, and we strive to avoid them.
There are foreseeable perils and pitfalls on the path to engineering requirements that demand the same care and attention before the project momentum becomes overwhelming, such as the inability to reach consensus on key requirements, unresolved conflicting requirements and progressive requirements scope creep. Catalogue these hazards, learn how to recognise them and do not intentionally set off on your engineering journey if these hazards are overwhelming and you have no tactics to deal with them. Further, if you find that your projects burst their banks with some frequency, either reinforce your processes and scoping practices or move on.
7. Set Safety or Portage
We wear helmets and life-vests on a river for our own personal safety, but we carry ropes for our buddies and we learn how to use them. When running a particular rapid is a high risk activity for a boater (i.e., the chance of success is outweighed by the cost of failure), we set up safety for them, which may comprise another boater on land and ready with a throw rope to pendulum any swimmer into an eddy before they head into an undercut rock. When the risk cannot be brought down to an acceptable level, or when we are simply having an ‘off’ day, we portage the rapid (i.e., we carry our boat and walk around it). Walking a rapid can be the sign of a very savvy boater who is in tune with his or her abilities on the day.
With projects, certainly examine the risks to requirements and put contingency in place, but also get better at understanding that this risk changes with time and perspective, and that sometimes there are requirements that simply have to be re-negotiated or shelved. Unless truly warranted, do not let attempting to satisfy one requirement jeopardise the entire project or exhaust the whole team. A healthy requirements backlog essentially gives us things to work towards in the next version.
8. Prepare for the Worst
Entrapment, getting a foot or hand stuck between rocks on the riverbed, is one of the leading causes of death on a river. The force of the water flowing downstream will hold a person under water and lead to drowning. You therefore never attempt to stand up in moving water unless you are trained in swiftwater rescue and in its safe wading techniques. Coupled with the many hazards on a river, you are generally safer in your boat than out of it, so one of the first skills that we all learn is how to ‘roll’ (i.e., how to turn a boat upright, while still in it, after a flip upside-down). But, the saying goes that we are all ‘in-between swims’, so we also learn how to assume a safe swimming position for when that swim inevitably happens in hairy rapids (i.e., defensive and facing downstream, with your feet in front of you, until you can roll over and swim aggressively for an eddy).
Bad things do happen on projects, often as a result of a series of small miscalculations. Before we know it, we can easily find ourselves out of our depths and in danger of project drowning when trying to engineer unachievable or unwanted requirements. Think about the strategies and skills that will be needed to curtail or to deal with such issues before they happen and threaten the deliverance of requirements on your project. Maybe projects even need the equivalent of swiftwater rescue teams to come in to undertake requirements rescue and recovery operations, lending a more objective standpoint to project chaos? As they would demonstrate, proper professional training in the key skills is far more important than getting the latest and most expensive equipment, and the simplest approach to problem solving is usually the fastest to implement and effective.
9. Progress from Sneak Routes to Hero Routes
Boaters like to name rapids and the hazards within them (e.g., Oh S*** (OS) Rock in Fife Brook’s Zoar Gap rapid). Naming enables boaters to discuss and share advice as to the various lines through rapids. Sneak routes indicate the simplest possible path down a rapid and are great for those boaters running rapids for the first time. Hero routes are generally high-risk moves, often undertaken right in front of intimidating hazards, demanding significant skill, guts or both. The smart boater learns to appreciate his or her own skills and only progresses with more difficult lines over time. In the course of this journey, they will experience failures and even ‘out-of-boat’ experiences, but with sufficient safety in place when learning, along with the capacity to learn from the instant feedback they get, they will usually progress to become better and / or wiser boaters.
With those individuals first learning to undertake requirements engineering tasks on projects, there are an abundance of things to think about and many skills to acquire to do an excellent job. The trick to skill progression is equally incremental in nature and depends upon finding just the right challenge at the appropriate time so that they can learn and retain enthusiasm for doing the job. While we may not realise it, we often send these new individuals straight into the project’s equivalent of the Death Slot (the name of the hero route in the Dryway’s Dragon’s Tooth rapid). Do not set trainees up for failure after failure; build up a systematic training program for them so that they acquire the competence, confidence and judgement that they need so that they continue in the job.
10. Have Take-out Rituals
What may at first appear to be a solo pursuit is very much a group activity. Every river-runner needs to be a self-sufficient member of an inter-dependent group, and we have to both value and trust the people we choose to run rivers with. It is therefore traditional to share drinks and snacks with your buddies at the end of a river run. This gives us the opportunity to dissect any carnage and to re-run the most spectacular move of the day. It is these stories and their elaborations that reinforce lessons and take us forward with plans for making our next river run even better. Over time, it is these collective community experiences that inform the ongoing classification of rivers and the naming of their rapids and routes. It also enables groups to ‘gel’.
Project retrospectives have always been the signature of the reflective practitioner, and the trials and tribulations of the requirements engineering process therein demand as much individual scrutiny. When you get to the take-out of your project, do not skip or postpone these very important knowledge-sharing and team-bonding rituals. Which requirements caused the most problems and why? How were they eventually tackled? What requirements techniques proved the most valuable at different stages in the project? Moreover, if the engineering team is to become more cohesive and advance as a unit going forwards, perhaps try to make these retrospectives a little more fun and a lot more social!
Why don’t you think of your next requirements engineering project as a whitewater river to be run? To run this river, you need to consciously choose and execute a dynamic process that demands knowledge, judgement, skill and a good team. You need to locate those all-important requirements rocks and scope out the project’s riverbanks and riverbed. The rapids that these then form as knowledge levels vary may be intimidating at times, but with support and practice you will learn to understand the features, read the project water and find your route through. But, watch those pesky rocks; they have a way of presenting nasty obstacles or providing safe havens in equal measure. Also remember that it is frequently possible to go back upstream using eddies or portages if you break the rapid down and don’t get swept along too fast. This means that you still often have the opportunity to re-scout those rocks and re-run the rapids a little differently if needed. A whitewater river is run one rapid at a time; always give them your respect once you put-in and you will reach that take-out.
If you have made it to the end of my white water inspired guide to requirements deliverance, I think I should add a couple of important disclaimers:
- If you promptly go out and hire a class III / IV boater, don’t assume that she / he will deliver your project’s requirements. In fact, watch out for those ‘sick days’ after heavy rains.
- Just because you have delivered the requirements successfully on past projects, don’t assume that you are ready to run the Chattooga River. Be sure to scout Deliverance Rock and listen to a little banjo music from the comfort of your armchair first.
The Chattooga River (Georgia, USA) was where a portion of the movie Deliverance was filmed. You can find out more about this river and the other rivers mentioned in this article at American Whitewater.