16/04/2024

Grab your Sword – How Software Development Requires the Footwork of a Fighter

Learn feeling to check for soft and hard Step with the strike whether it is close or far Keep the division of the opponent well in mind Also guard yourself against great wrath. Observe the guards and the cuts So that the counters are obvious to you. Joachim Meyer, Gründtliche Beschreibung der… Kunst des Fechtens (1570)

By John Randall in software development

blog main image

Learn feeling to check for soft and hard
Step with the strike whether it is close or far
Keep the division of the opponent well in mind
Also guard yourself against great wrath.
Observe the guards and the cuts
So that the counters are obvious to you.

  • Joachim Meyer, Gründtliche Beschreibung der… Kunst des Fechtens (1570)

There’s a litany of articles and research papers dissecting the merits of a good software developer, along with myriad comparisons and analogies to help demystify the subject for audiences that are not familiar with the internal workings of the process – most of these analogies would hence draw upon examples that are familiar to most. This article, though full of comparisons and analogies, is not one that seeks to lean on familiarity, but rather one that asks an interesting question: In what way is software development like sword fighting?

Some context may be needed here: I’m a practitioner of historical European martial arts, or HEMA, which is a collection of martial arts focused primarily around melee weapons used in and around Europe between the 14th and 18th centuries. These range from spears and halberds, to hammers and maces, to longswords and sabres. Sword fighting is technically a subset of HEMA, but for simplicity’s sake the remainder of this article will refer to HEMA as sword fighting.

At first glance, any connection between sword fighting and software development seems tenuous at best; yet there are some striking similarities on deeper inspection: fundamentals of sword fighting, such as balance and muscle memory, either appear as-is or have a close analogue within software development.

When stepping into the ring, a sword fighter has mere moments to analyse their opponent, to weigh up every weakness and opportunity, and devise a plan to prevail all before the first blows are exchanged.  The ability to quickly and accurately analyse something with attention to detail is crucial to gaining an advantage: the slightest twitch in a step could indicate a previous knee injury, the position of the thumb narrows down the potential range of motions, a tiny twist of the wrist opens an opportunity for a decisive blow.

Once the bout begins, each motion becomes a game of chess played within the blink of an eye, every well-trained motion performed through muscle memory, adapted – optimised – to further the ever-evolving plan established before the bout and concurrently foil the opponent’s own machinations. On and on until one fighter makes a mistake and gets struck.

Software development may not require split-second decisions, nor does it carry the risk of being thwacked for a blunder; but the ability to quickly analyse complex problems and find a solution optimally adapted to said problem is invaluable to any developer.

Just as the fighter relies on muscle memory to provide a reliable foundation from which they can pursue their greater strategy, an experienced developer will have myriad tried-and-tested principles and patterns at their disposal – as well as the knowledge of how best to apply and adapt them – to efficiently and effectively solve the problem at hand.

Now theory is all well and good, but if sword fighters didn’t yearn for the hands-on approach, we’d all be home playing video games. Let me guide you into the ring for a moment.

Get Started With Full Stack!

Ready to transform your business? Contact us today to discuss your project needs and goals.