home/blogs+posts/software-engineering/repetition
Repetition, repetition, repetition…
Photo Credit: www.sovereignscup.com
Lessons from sport that translate to engineering
Earlier this summer, I took part in the bi-annual Sovereign’s Cup sailing regatta held in Kinsale, sailing on a Class-I yacht. Our crew mostly partake in weekly club-racing so this event is a step-up and an opportunity to experience racing at another level.
For reasons mostly relating to the weather conditions, the race organizers tended to favour Windward/Leeward courses over the few days, which means racing involved circuits sailing upwind (i.e. ‘beating’) to a dropped mark and subsequently sailing downwind (i.e. ‘running) to another dropped mark parallel to the wind direction. I’ve done these types of courses many times and note that they contrast with other courses (e.g. ‘round-the-cans’) in that they are pretty much exactly repetitive at each windward and leeward mark respectively.
At each mark, the crew need to repeat a very specific sequence of actions. For example, on reaching the ‘windward’ mark, the crew have a set of jobs to perform in very short amount of time to transform the yacht from sailing upwind to sailing downwind. For the uninitiated, this means changing the shape of the sails and launching the ‘spinnaker’, which is the very large and colourful sail you often see on picture-postcards. From a distance, this can look serene and graceful but it belies the sometimes frantic actions of the crew, particularly at point of launch. A lot of things have to happen and they have to happen at the right time and in the right sequence. Failure to achieve this can seriously hamper the performance of the boat and its standing in the race and in some cases, even get the boat into trouble. What I find curious though is how the repetitiveness of this function gives the crew opportunities to try and try again, to eliminate errors and mishaps until they perfect the operation. Each phase is followed with a quick discussion on who does what and when until it becomes habitual and gets done right, after which no further analysis is required.
And, so it is with software engineering as championed in Agile development. Having a team of engineers repeatedly go through the task of creating a release not only makes the operation slick but familiarizes the team with every last detail that has to be completed in order for the release to go well. It helps with planning as going through the process drives out every last work effort needed. It’s not necessarily that people couldn’t plan these actions up front but the act of ‘doing’ puts theory to the test and helps the human brain clearly identify what’s really involved. In sport, repetition is simply part-and-parcel of acquiring and honing a skill and so it needs to be with engineering. CI/CT/CD are all intended to help drive out errors and short-comings as early as possible and improve a team’s responsiveness. Software errors, which go with the territory, don’t seem as big a problem when you can pivot and quickly issue a new release with the fix.
As elite Judo coach Neil Adams MBE likes to remind us, “Practice makes permanent”.
Donnacha Forde
Summer 2021