Sailing is the only Real Agile
I don’t blog. I dissertation.
First things first…
I hated sailing. I can’t even remember why I got interested in sailing in the first place. I think my mom saw a flyer somewhere to sign your kid up for various summer activities. Ever since that time when I was 7 years old when the cops showed up at the house, explaining to my parents that I needed to be involved in sports (because allegedly you can’t go play Indiana Jones in the woods behind your house on the neighbor’s property), my mom decided I must always be involved in an athletic activity all year long. It was probably the right call.
My only skill set that’s worth anything during a Zombie apocalypse is my ability to sail a boat. I just don’t see myself getting inside the human-guarded fortress over the intercom pitching, “But I can make software developer tools a joy to use!!” While our nation’s zombie therapist Chris Hardwick keeps things under control, let’s use this time to talk about how sailing is the only real agile.
Note re spelling: I could google these sailing terms. I could also google images of these illustrations instead of drawing them by hand. But because I learned to sail before the Internet, I’m enjoying the idea of capturing these lessons learned via oral tradition by writing them down as best I remember them as a young teenager.
Kinda like go, the fundamentals of sailing are pretty simple. You can’t sail directly into the wind. If you pointed the boat directly into the wind, you’ll start to slow down and will eventually go backwards. In fact, knowing how to slow down is a good skill to have ready when trying to dock a boat onto the pier.
What if the direction you want to go is directly upwind? You sail as close to the direction of the wind as possible in one direction, and “tack” back and forth until you get there.
Or for an interactive example, check out The New York Times interactive graph of the final race of the America’s Cup. When they are sailing back to the left side, you’ll see them tacking back and forth. The wind is coming from the left hand side of the graph, as shown in the wind icon in the upper right.
The act of trying to sail as close to the direction of the wind as possible is called “pointing.” Different boats have different abilities to point. For example, a Flying Scot with a jib and a mainsail will be able to point higher (or closer to) the wind than a Sunflish with only one mainsail. The jib allows you to point higher. This concept of “pointing” clicked for me the day when we sailed a Flying Scot without the jib. It took a very long time to get to our upwind destination.
Since you can’t sail directly into the wind, you have to change your direction or “tack” across the wind to get to your upwind destination. IIRC (and it’s been 20+ years), this is called “beating upwind” or perhaps “beeting upwind” — I’ve never had to spell out any of these sailing words before. Note the term “tack” is only used when changing direction when you’re heading upwind. More on this later.
You tack back and forth, back and forth, back and forth, until you reach your destination.
If you’ve ever heard the phrase “you’ve got to change your tact”, this is probably where it comes from. Or perhaps it’s revisionist history that sailors applied the word “tack” to match this technique.
Here comes the twist
I like deterministic, black and white things. Consider compilers. Given the same set of inputs, you are supposed to get the same output each time. The compiler doesn’t change its mind given the time of day or the temperature on the water. I confess that I was interested in going to IP Law for about a week. But when I learned that case law and judges aren’t deterministic like compilers, I said forget it. When it comes to sailing, especially when racing, the execution isn’t black and white, and that frustrated me to no end as a young teenager.
Fortunately, sailing taught me the most important life lesson you can learn at an early age: Life’s not fair. Deal with it.
Like life, the wind isn’t fair. It is constantly changing direction on you, and you have to deal with it. This is not some hyperbole on the human existence that I came up with during some post-workout adrenaline high. As physics would have it, the wind is constantly oscillating back and forth, back and forth, back and forth, causing ripple effects all across the water. These ripple effects can really mess up your best made plans of how you’re going to reach your upwind destination. It’s exactly like how life is the thing that happens when you make plans.
Before we jump into handling these ripple effects on the water, let me for the sake of completeness explain what happens if you try to go in the exact opposite direction. Every time you try to go directly downwind, you risk facing death.
Seriously, the potential for death is definitely there. First, you gotta understand a bit about the parts of a sailboat. The “boom” is the big metal thingy at the base of the mainsail. If I’d ask you to draw a sailboat, you’d draw the boom without even knowing that’s what it was.
The boom swings across to the other side of the boat whenever you cross the wind (either upwind or downwind). It’s very big and it’s very heavy, and potentially deadly.
When you change your tack (crossing the wind upwind), the boom doesn’t swing anywhere nearly as dramatic as it does when you change your direction downwind (called “jibing”). One of the first lessons I learned was to associate the word “jibing” with “duck!” If it is a windy day, the boom will swing violently across the boat. I’ve seen people get knocked out. I’ve seen people get knocked off the boat. But praise be to all the local gods I’ve never seen anyone knocked out off the boat. All the people I’ve seen fall into the water remained conscious. As the skipper, you learn responsibility of keeping your crew safe by clearly communicating any jibes. We’ll talk about crew communication later.
If change your tack means adjusting to how you plan to deal with life’s never-ending ripple effects, does change your jibe mean adjusting to how you plan to flirt with Death? #ShowerThoughts
Fortunately the water gives us some visual clues to how the water is going to mess with your best laid plans. The ripple effects of the wind constantly moving back and forth can be identified by the dark areas and the glassy areas. You can notice these ripple effects on any body of water: ocean, bay, swimming pool, a random pond on your evening walk as shown below.
The darker areas of the water where you see those ripples are called “puffs.” In these puffs, you get more air, where you can go faster and even point closer to the wind (called a “lift”). But once you clear the glassy water, you’ll get “thrown”, meaning you won’t be able to point as close to the wind anymore.
In contrast, there are the glassy areas of the water. There’s probably a name for this glassy area, but I never learned it. You always want to avoid the glassy areas. Because there’s less wind in the glassy areas, you’ll slow down.
Of course sailing isn’t as easy as just reading the water. The water only shows the more dramatic changes in the wind. Remember how I say the wind constantly moves back and forth? That means there are tons of these unseen lifts and throws you have to adjust to.
Here’s an analogy. Image if on a soccer field there were hills and craters. And imagine if these hills and craters were constantly changing on you running down the field. And on top of that, you could only see the really big hills and craters. If you were smart, you’d quit before trying. And if you were stubborn enough to give it a try, thinking you could actually play soccer in those conditions, welcome on board skipper!
What’s a skipper to do?
The way I was first taught to skipper in a regatta was to read the tell tails.
If the boat has a jib, these tell tails are on the jib. If not, they are on the mainsail. On an ideal course (ideal in terms of maximum efficiency wrt the wind’s direction), the tell tails are flying horizontal. If the inside tell tail starts to flap dramatically, you’re being thrown, meaning you need to head slightly away from the wind (or potentially tact — hold that thought). If the outside tell tail starts freaking out, you’re being lifted, meaning you can (and should!) move the boat more towards the direction of the wind.
Fortunately, there’s an easy way to remember what to do. You always move the tiller (the thingy that’s connected to the rudder that changes the direction of the boat) towards the tell tail that’s freaking out. And you stop changing direction when it becomes happily horizontal again.
Now you might be wondering, if the skipper is watching the tell tails, who is watching other boats, etc? Enter the first mate. On sailboats with 2 sails, the skipper handles the tiller and the mainsail. The first mate handles the jib. Since there’s not too much to do with the jib when not tacking or jibing, the first mate helps keep the skipper aware of what’s happening on the water. The first mate will constantly be scanning the water, what’s happening with other boats (e.g. Are they going fast? Are they getting thrown? What’s the crew up to?), and helping to plot a course to round the first buoy, which as you can guess, is directly upwind in the start of any sailing race.
Skippering a race by watching the tell tails is analogous to your driving patterns when you first get your driver’s license. In the beginning, you’re paying a lot of attention to the car ahead of you at first. But as you start to get more comfortable driving, you start paying attention to the larger scene around you, the cars in front of you, etc. It’s why experience drivers cannot stand to be behind an 18-wheeler because you can’t see as much of the road in front of you. As skippers become more comfortable, they only need to glance at the tell tails every so often to get a proper read.
Back to Agile
Yep, it is a bit of a long setup premise, but I swear I will tie it all back to agile software methodology. The payoff will be worth the buildup. Hang in there, you’re doing great!
When agile clicked for me, I realized that listening to your users’ feedback is exactly the same reading both the tell tails and the water color as “do I tack or do I stay on this same course?” You have a goal in front of you. You plot a course based on the best information you have available at the time. And you go for it. And then as you start to iterate, you get feedback (whether from your devs or from your users) of “This is confusing. Do this. Tweak that.” We’ve all be there before. You evaluate that feedback and make a decision what to do.
Recall above how I said that just because a tell tail is telling you that you’re being thrown (i.e. pointing further away from the first buoy) doesn’t mean you have to tack. Let’s back up a sec. You must always listen to your tell tails. Similar to listening to your devs, if you’re not unblocking them, making sure they have the answers to their questions, you’re not operating most efficiently. Sure you might say, “hey dev (or tell tail), give me a sec to discuss with my crew or do a sanity check where I’m at,” but you have to make a decision quick and live with that decision. Speed is an absolute must, so if you’re tell tails are not perfectly happy, you’re losing speed, and hence it’s going to take even longer to finish the tack.
I can only imaging the comments I’m going to get for comparing developers to 2 pieces of string. If it helps any, IMO the tell tails are the single most important aspect of racing, outside of having a boat, some wind, and a crew.
I’ve never once had a UI design ship exactly as designed. There are always tweaks needed. In grad school for Human Factors (i.e. User Experience), we’d read in books that says that the developers had to build the software exactly as designed. This text was even listed in bold in the textbooks to drive the point across the designer is always right. Somewhere out there a textbook author got seriously burned, but then again, those who can’t, teach. But seriously, let’s think about this. We’re talking about a 2D design (whether on paper or photoshop) coming to life in a fake 3D environment on the web or mobile or some altered reality. These are two totally different modalities. Of course there are going to be changes.
The take home message is your UI mockups represent the first buoy in a race. This is your goal. And unless by some miracle you never have to tack (except to round the buoy), you’re going to make some tweaks (perhaps major tweaks), but you’re still heading in the right direction to complete the work as efficiently as possible by listening to those around you.
“Before the start” — figuring out position or your MVP
Unlike a foot race where everyone lines up on the starting line, you can’t do that at all in sailing. It isn’t like you line up all the boats, and then blow a whistle, then watch the crew race to lift the anchor, raise the sails, and go! Well, this is how I thought a race started when I was a kid.
The starting line is represented by a committee boat (a motor boat with race officials) and a start pin (another buoy).The first buoy is located some distance upwind forming a triangle.
There’s a pre-start gun that goes off at some pre-agreed upon time (let’s say at 1pm) to represent the 10 minute countdown has begun. The second mate (or first mate on a 2-person crew) will start their watch to match the countdown. During these 10 minutes, the boats will sail up to the middle of the start line and sail directly into the middle of the wind. Now that might seem strange why someone would try to go backwards from the start of a race line. Skippers do this to test the wind to see whether a committee boat start or a pin start is most favorable. No matter how hard the committee boat folks try to get a perfect triangle, the wind constantly changes. If the skipper sails the boat directly into the wind and lets go of the tiller, the boat will either get pushed back towards the left or towards the right. If the boat moves towards the left, it’s a committee boat start (in my example at least. I can’t recall if the committee boat is always port of the pin, but this feels correct.) If the boat moves towards the right, it’s a pin start.
Now of course anything can happen within those 10 minutes. Life likes to happen when you make plans, so perhaps the wind is now favoriting a start on the other side. This is where your crew is invaluable watching what other boats are getting for their “checking the start,” looking for changes on the water, and of course counting down the seconds for you. You’re too busy sailing back and forth along the line waiting for the gun to go off, avoiding other boats doing the same, fighting for the ideal starting position.
The gun goes off again at the 5 minute mark. This is a time check for the second mate and also an opportunity for that second mate to make amends with the skipper when she forgot to start her watch 5 minutes ago. At this point, things are getting tense among the crew and with other boats. Your best made plans are getting closed to being finalized. But you’re also trying to get out of the way with other boats if you don’t have the right of way, which is a blog post all in itself.
The penultimate gun (that’s for you Stephen) goes off at the 1 minute mark. Now things are crazy. People are yelling and screaming, with the exception of the second mate screaming out the seconds. The game plan is set. Now you’re making sure you can execute on the game plan, while competing against all the other boats trying to execute on their best laid plans as well. You want to be right on the start line the moment before the start gun goes off. Otherwise, you’re wasting time that your competitors could take advantage of (provided they picked the right game plan as well and start side). However, if you’re over the line when the gun goes off, you have to round either the committee boat or the pin (whichever is closest), while your competitors take off and leave you in the dust, if dust can happen on the water.
A good start is the most crucial aspect of winning a sailing race. During the America’s Cup in San Francisco, before Oracle started their comeback, the Oracle skipper said something along the lines of, “We have to start winning starts!”
And this relates back to agile how?
Yes, sorry. Back to agile. Now when I learned “iterative incremental development” as I call agile, it was before the term Minimum Viable Product. I guess I’ve only experienced a Minimum Viable Feature, (i.e. at what point is a feature ready to be released?) since all the products I’ve ever worked on were already shipped before I joined as PM (or they were classic waterfall with 120% feature completeness). But for discussion’s sake, let’s just call my MVF a MVP.
The start of the race is like defining your MVP. You don’t want to release too early (or jump the gun) and get penalized for having to go back and add more features. But you don’t want to release too late, and leave a wide enough gap for your competitors to capitalize on and you’re left playing catch up. You want to sail your race, not theirs.
You could also say by doing an alpha or private beta release of your MVP is like the skipper going up to the line to test the wind on the start. What is the marking feedback right now? Which features or decisions is it favoring? How confident are we based on what we know what’s going on in the environment around us that things aren’t going to change? Do we have the time and flexibility to retest the market a few more times before locking into our go-live release game plan, or would that risk a delay in our start?
And even with the most perfect MVP planned out, life will happen. Change is the only constant. Just like the wind changing, favoring a different start side, the market could change right from under you, e.g. you had poor sample data and a fraudulent p-value. Or your chosen framework has been discovered to be too buggy or slow to use, forcing you to come up with a plan B, just like a boat breaking down directly in your path for the perfect start. Life isn’t about fairness. Life is about adapting to the things you can’t control to sail your own race.
Other boat positions
This “other boat positions” analogy is so straightforward that it almost doesn’t merit explanation other than to call out that you just never know what is going to happen out on the water. A boat could break down. The wind could change and heavily favor another boat that picked a different start position. Or another boat hits your boat and you calls foul.
An interesting aspect of sailing is that unlike other sports where a penalty is clearly called by an official, it’s up to the skipper to know whether they need to do a 720. Have I mentioned that I hate sailing? In a regatta, if you commit a foul, (e.g. hit another boat when you did not have right of way) you have to spin around in a circle twice (hence 720) . If you don’t do a 720, your finish doesn’t count and you’re listed as a did not finish and receive 0 points. And because this is sailing and it is the least black and white sport I know, the referee (or committee boat) doesn’t indicate whether there’s been a foul. Perhaps nowadays they do, but back in my day, they didn’t. So you had to make a horrible judgment call, “Was that really a penalty? Do I really need to do a 720 and waste precious time or was it clearly a foul and if I don’t, I’ll get disqualified for this race?”
As in software, you’re constantly adjusting to feedback, constraints, resources, people, unexpected CalTrain delays (note: every CalTrain employee I’ve ever talked to working on the trains has been awesome, so a quick shout out to them!)
I’m going to make a leap of faith here and say that no one in the tech industry would ever make an business plan based on an exact cut-and-paste of an existing popular app. Well, except for perhaps Floppy Birds… okay never mind. Let’s just pretend for this example that it’s really bad idea in the tech industry to make an exact cut-and-paste of an existing app that’s dominating the market.
In sailing, there’s this concept of “bad air” when you sail too closely behind another boat on the same tack as you. For some reason in this situation, the wind isn’t as strong and you’ll actually slow down. I’m sure I could google the physics behind this, but again, I’m enjoying this idea of serializing this oral tradition way too much. Ya’ll rock for putting up with me!
The skipper will scream out, “We’re getting bad air!” which everyone knows is a prelude to “Ready to tack?” BTW, when tacking or jibing, the skipper always asks, “Ready to tack/jibe?” The skipper waits for a verbal acknowledgement from the crew. Once someone responds with yes, then the skipper screams, “Tacking!” or “Jibing” (aka DUCK FOR YOUR LIVES!) Rarely will the crew scream, “No!” For upwind, this is usually vetoed because someone sees glassy water or another boat close by, but 9 out of 10 times, it’s better to tack a couple of times and/or risk glassy water than to slow down from bad air. For downwind, a jibe is vetoed mostly because someone isn’t available to duck. Perhaps they are still dealing with the spinnaker (the 3rd colorful sail that makes you go zoom-zoom) or they need to get something out of the way to duck.
Back to software, I could see the PM asking, “This idea feels like we’re copying too much of the folks who just shipped. What can we do to be even better? What else might we try?” or perhaps even bigger thinking, “Let’s shake things up and introduce a better market differentiator by changing our tack but still head for original goal.”
Sail your own race. Build your own product. Unless you’re out ahead, then cause some bad air. Yes, it is an actual strategy used in sailing that works very well. Or better yet, do your own thing. I honestly have no idea what I’m talking about!
Const communication (i.e. arguing) with 1st mate and skipper
There’s something about sailing racing that brings out the absolute worst in us. I’ve participated in many, many sports: soccer, track, ballet (don’t get me started), karate, yoga, tennis, cycling, hiking, rock climbing, sailing, and probably a dozen other athletic activities I’m forgetting. My apartment looks more like the rental department of an REI. And sailing is by far the only sport where you are completely at the mercy of the elements, regardless of your skill. I used to argue my opinions all the time with my sailing instructors, who of course, disagreed with me. As a person who enjoys clear cut black and white in the world, sailing is absolutely the worst sport to get involved in.
Because everything is constantly changing, you have to constantly communicate your thoughts. And unless you’ve gotten those one or two good old fights out of the way first, you might accidentally start your relationship with your crew by focusing on being right instead of focusing on getting what you (all) want (the win). Once you’ve had those fights out of the way, you’ll decide whether it’s not a good fit crew-wise. If it is a good fit, you’ll develop a deep trust knowing it’s okay to be wrong. But ya’ll will still fight like an old married couple, even at the age of 15.
I’ve noticed this effect in many of the projects I’ve been a PM on. It’s critical to build trust with everyone on the team about how can people speak their minds, but yet still come together on a plan. I think this is just human nature in any sort of team environment. But it’s nothing like sailing to bring out the worst in expressing frustrations. Trust me, sailing is much more frustrating than any hidden technical debt conversations. In other words, I’ve never had a conversation about technical debt where I’ve walked away with significantly larger vocabulary than I did my first dail on a sailboat. :)
Why this post now?
I usually avoid talking about sailing. As I said at the start, I hated sailing. I was the only kid in my classes whose parents weren’t yacht club members, so it took a long time to feel comfortable at the yacht club (if I ever did feel comfortable). And I never had the confidence to ever enjoy racing. But I loved the freedom of being out on the water way too much not to sail. There was something immaculate about “butt hiking” where on a very heavy windy day you’d back trim jib so you can place your legs under the sheet (rope) and lean all the way off the boat with your hair barely touching the water. (I’d break my back if I tried today.) You still hold on to the jib sheet but w/o any tension, so it is just abs to keep you on the boat. It scared most people, but it gave me an incredible sense of freedom for some reason.
The real truth why I hate sailing is that it reminds me of a friend/sailing classmate who passed away my senior year in high school, so I tend not to talk about sailing, pretending as if I never took lessons or raced for all those years. But I recently realized that I was selling my tell tale analogy short all these years by not fully exploring the regatta analogy. BTW, I gotta share that there’s nothing like having your parents mishearing the words “Sure I’ll crew with you!” while talking to your friend over the phone about being his 1st mate about an upcoming regatta. Talk about having some explaining to do! =D
So why this post now? A couple of weeks ago when my car was in the shop, I decided to take my rental down to Monterey for the day. At Fisherman’s Wharf, there were these sailboat rides for $20 for a ½ hour. Although the boat had a motor, it was pretty close to a Flying Scot. I figured er, why not. It’s been 20 years now since I’ve been sailing and I need to pass the time before I headed back home.
This sailboat ride consisted of 2 crew members, a family of 4 (mom, dad, and two high school girls), and me. Once we got out into the water, the skipper asked if anyone wanted to sail the boat. I passed, mostly because the tiller didn’t have a hiking stick (I’m 5’1 so I strongly prefer having an extension on the tiller), and also, meh — today wasn’t the day to face my cognitive dissonance. The dad volunteered to skipper. He sat next to me, which is funny since I had naturally sat down in the skipper/1st mate position. He asks, “Um, what do I do?” And then 20 years of repressed sailing knowledge suddenly unleashed on the crew.
“You see the green and red strings up there, those are your tail tells…blah blah blah… the direction of the wind… blah blah blah… see those glassy areas… blah blah blah… you can even put some back trim the jib to make it even smoother sail surface area on a heavy day…”
There was dead silence. The skipper broke the WTF silence with “OMG Why aren’t you skippering!?!” I said, “I’ve had my fill for a lifetime. It’s just funny that I’ve been using the tell tail analogy for 10 years in agile software presentations, but haven’t been back out on a sailboat until just now. It feels good to explain tell tails in its proper context.”
And now I can say it feels good to explain “what real agile is” in its proper context. :)