Recently, I was asked to stand in as a crew member in a competitive, sailing regatta. Sure, I had been on pleasure sailing trips, but this was something different. We had a 31 foot yacht with a crew of six, and each of us had a specific job to do. Lo' and behold, it didn't take long to discover that there are many parallels between great sailing teams and great software development teams.
For instance, our skipper was the project manager. He (In our case, it was a he.) steered the vessel and made sure it stayed on course. In charting that course, he consulted with the crew members, who could be considered the business analysts and developers. Every morning we had a scrum to review the sailing conditions and plan for the day's race. This reminded me of daily stand-ups.
Have a plan
Based on the race buoys and the wind conditions, we came out of the scrum with a plan. Our course was plotted into the boat's GPS and we headed to sea with each team member knowing what to do and knowing what was expected of him/her. Once the race started, we focused on what we had to do and made sure we did it as cleanly and efficiently as possible. That's basically developers doing their jobs.
Be ready to scrap the plan
When the wind changes, you need to scrap your plan and quickly make a new one. Perhaps the wind is now blowing from behind and the spinnaker needs to be raised, which is a fairly complicated process, requiring plenty of teamwork and experience. It reminds me of a client with an unexpected, high priority, feature request. The developers need to stop what they're doing and refocus on the new task. Being able to pivot quickly is where experience really helps. Fortunately, I am surrounded by experienced team members both on the boat and at Chromatic!
What do you do when things go wrong?
In sailing, as in software development, things can and will go wrong. Same as a sail might get stuck while being raised, a developer's database may become corrupted; until things get fixed, neither can move forward. On stormy seas, there's the extra excitement of being one misstep away from going overboard into the cold water! (We were sailing in the Baltic sea, which is chilly at the best of times.)
When things go wrong, it's important to stay relaxed and calmly assess the situation. Having an experienced crew is essential for this. Chances are that someone has seen this before and can step in to help fix the problem, with minimal time wasted. I love that our team at Chromatic has an ocean of experience and there's always someone ready and willing to jump in and help.
Communication. Loads of it.
A sailing race can be a maelstrom of vessels, each tacking and jibing for position. The skipper can't possibly see everything, so the crew members give plenty of feedback about the locations of other boats, buoys and wind. This is just like the developers communicating their progress to the project manager. Regular stand-ups keep the communication going, but we also have plenty of informal communication that happens in our Slack channels. We’re talking to each other all the time.
How experienced is the crew?
Did I happen to mention the importance of experience? Conditions while sailing and during development can get pretty stressful. Having team members that know what needs to be done, instead of having to be told what to do, is golden. As I mentioned, our team at Chromatic jumps between projects without foundering. We get up to speed quickly and push projects forward.
For us at Chromatic, that's what it's all about; we have a great team, that does great work. We plan, assess, adjust and push our client projects forward, whether conditions are ideal or not. That way, at the finish, our clients win and we win too.