Last week, I went on a trip with the Boy Scouts to sail the Abaco Sound in the Bahamas. Now, some would see this as a vacation, but when you go on vacation, you don’t have to cook your own food, clean your own toilets and night watch duties. Other people we ran into said “Scouting High Adventure in the Bahamas…we never did anything like that when I was in scouts.” Actually, they have been doing sea based high adventure camps since the 1970’s.
This was actually my second time going to Sea Base with my son (who is an Eagle Scout). While both trips were certainly great learning opportunities, this one provided a lot more “real world” skills for a scout to learn. The biggest of which is teamwork. Of course, my thoughts turned to software development and teams that I have been on in the last seventeen years.
We had 22 people on a 60 foot catamaran for six days. On the first day we divided into four teams to take turns for the duties of running the ship. There was a cooking crew, cleaning crew, deck crew and a night watch crew. We changed the responsibilities every day, so we all had a chance to do everything at least once. Here’s where the valuable lessons came in.
This one wasn’t too bad…except that you were responsible for turning a pile of ingredients into something that was appealing to the rest of the crew. Sure you could go with scrambled eggs and toast every time or you could have some creativity and do something like French Toast. Nobody was telling you what the menu was…but everyone had the goal to outdo the cooking team from the previous day. Food was never boring. How did this play into teamwork? Well, the cooking crew was also responsible for doing the dishes. We generally couldn’t move on to the next thing until the cleanup was done from the meal. Therefore, you needed to work together as a team to get your job done or we weren’t going anywhere. Nothing like 15 other people ready to set sail in the morning, and you feel like you want to go back to bed. We didn’t have a plank, but there were a few times we might have needed one.
Again, this one wasn’t too bad…if the crew before you had done their job. Cleaning crew made sure the deck was clean and also the restroom. After we would go swimming, water would wash a lot of sunscreen residue onto the deck of the boat. This made the fiberglass hull like an Olympic ice skating rink. Keep it clean…keep it safe. Having three teenage (almost) kids, I know that cleaning a bathroom is the absolute last thing on earth they want to do. However, if everyone did their job, it was not as gross and disgusting as it would have been if we only did it at the end of the week. (By the way, I do respect the two boys that took on the end of the week cleaning as it was the most thorough cleaning it had all week…you guys did great!)
This crew was responsible for all things sailing for the day. Hoisting the mainsail, unfurling the jib sail, dropping anchor, navigating, etc. This was the crew that required the most coordination of effort of all the crews. Sure cooking can fall behind schedule and cleaning may be a little sloppy, but it doesn’t bring the ship to a halt. When the captain calls out “Ready About” the crew jumps into action (and if you aren’t on Deck Crew, you still need to pay attention, or you might be in the way or worse get smacked in the head with the boom). Once everyone has confirmed “Ready”, then we “Hard to Lee” and what follows is a coordinated steps of shifting the sails from one side of the ship to the other. If you aren’t ready, or you don’t do your job at the right time…you bring the whole process to a halt. As the boat nears heading into the wind, the sail starts to luff and the boat slows down. If you slow down too much, you don’t have enough momentum to complete the tacking maneuver and you are stuck “in irons”. This can all be avoided, if you listen to your experienced captain, and everyone does the job they are assigned to.
Now this brings up an additional point of “doing the job they are assigned”. With 20 new sailors on board, there will likely be a good majority that have no idea what they are doing. Unless they are paying attention to the previous days maneuvers, they likely don’t know what they are supposed to do. Two points to make here. First, if you are in the experienced group (meaning you know what to do), you can’t just yell at a guy to “pull the rope”…especially when there are multiple ropes at his feet. Instead, you might try pointing out which rope to pull and why. Also, consider hanging around with the next group to take on your role and offer to teach or train them…before they are struggling with getting it right. Second, if you are not assigned to the specific duty, but you know your turn at the job is be coming…you might consider sitting up and taking notes. It’s easy to say, “It’s not my job” when it really isn’t…but if you know your day is coming, you might want to have some idea of what is expected.
Night Watch Crew
This one wasn’t really a big deal except for losing a little sleep…but it could be if you go to sleep. When you tie up your boat in a marina, there is little chance that you boat is going anywhere or that something is going to happen. However, when you are anchored out away from the shores of the Abaco Islands, there is a little more to think about. We began thinking about where the boat would anchor for the night well before the sun went down. We always made sure we were on the leeward side of an island to protect from heavy winds blowing us ashore. We didn’t always know it, but our Captain had a plan by lunchtime where our day would be ending. Once the sun was down, it was time to set a watch for the night. Sometime is was watching for an oncoming storm (when you have 22 people on one boat, some of them are sleeping on deck, you can’t leave them out in the rain!) or a boat passing in the night (who knows if he can see you). Someone needs to be paying attention for the safety of the other crew members on the boat. With everyone taking their turn, two hours was not that much to give up…but you still needed to take it seriously.
If you read my last post, you know I didn’t take a lot of my technology with me. Sure, I had my camera and my phone (though internationally it was worthless)…but what does any of this have to do with Software Development?
When I don’t have a lot to do, I spend my time thinking about corollaries to what I do to what I am currently experiencing…this was no different. Examples of past and present teams were abundant as I was thinking about how our ship was run. In the end, everything either ran smoothly or was a little rough when it came to how the teams worked together (or didn’t).
Take, for example, the cleaning crew. It was clear when the job wasn’t done. Put 20 guys on a rocking boat, and the bathroom gets pretty bad, pretty quick. That was why we had regular cleanings. If the last person did their job well, it was easier for the next one to tackle the mess. If someone slacked off…the next person had more work to do to get back to baseline clean.
Similarly, in developing code. When everyone takes collective code ownership and always makes sure the code is clean when they check it in…the team will generally take pride in their work and keep up the spirit of clean code. It only takes one rogue developer who gets sloppy with his code and checks in a mess that makes more work for the next person. On the next checkout, if they don’t have time to clean it up, they will likely not clean up the new code they just added…and so it goes until there is a pile of smelly code. I’ve lived it. There were times I hated going to work because my efforts to clean up the messes of others were considered “unnecessary”…but then a week later, the same team would be complaining about how bad our code was. And in case you are wondering…no…my code wasn’t always a shining example of cleanliness.
What about the Deck Crew? I can’t count the number of times I have seen Project Manager (the Captain) kick off the development of a new feature and the senior team member started ordering the team what part of the feature they were to develop. Convinced that he was the only one capable of “delivering software”, he was surrounded by “incompetent” developers. The senior developer was quick to blame the performance or implementation on poor quality development, but certainly not any of his code was to blame. Considering the two points above…Are you barking at your team to “just write code” or are you coaching them along the way? Are you one of those other team members that needs to sit up and work on improving yourself and your coding ability? Don’t wait until you are called on to take a new challenge…take it up now. If you are a manager, make sure your team has clear expectations about what you are asking of them. When they miss your mark, how are you coaching them to do better next time? Or do you just through up your hands and say “they just don’t get it”?
Night Watch Crew? There’s all kinds of parallels to being watchful and thinking about security in our software development. This isn’t just the job of one person…it’s the job of the whole team. Is security built into your development lifecycle. Have you thought about what attacks you might be vulnerable to before you started the development process? Who is standing watch for your team?
I always get a chuckle when someone says “There is no I in team” because my reply is “Yeah, but you can’t spell team without me”. The reality is that, often, our focus is on ourselves. As the manager or the team member, too often we think about what’s in it for me. The manager is thinking of his promotion. The team member is thinking about his job.
On the boat, do you know what the captain cared about…not the crew…the boat. No, seriously, the captain cares more about his boat then anything else. If his boat was safe, he was safe and his crew was safe. If his crew is doing something unsafe, it takes his attention away from his management of his boat. If something a crew member does messes up the boat, we have to spend a day (or more) in a marina getting it fixed…and that’s not anyone’s idea of fun.
On the boat we all came to an agreement: if everyone did what they were asked to do, no one would be expected to do more than they were able. When you were given a task…even as unpleasant as cleaning the restroom…you did it for the whole team as if you were doing it for yourself, knowing that the next person was going to do it the way he would want it when he returned.
Sure, we messed up some and had some conflicts, but all in all, 22 people over 6 days in a crowded boat share memories of new friends and new places we visited together. Along the way, maybe we learned a little more about the life we live on shore.