The practice of spinning yarn hasn’t changed much since its first introduction. The tools have evolved and become more efficient, but the first tool most people learn to spin yarn with, the drop spindle, is not that different from the spindles used in Ancient Egypt to create the cloth for the coverings for their dead. Compare this to software development where the coding practices, languages, architecture ideas, and even hardware change at breakneck speed. Our technology advancements are increasing at an exponential rate, faster than at any point in our history.
Spinning yarn, the practice of drawing out and spinning fibers into a strand of yarn, has been around for over 10,000 years. Archaeological evidence (drawings and implements) point to the use of primitive drop spindles to create cloths, tapestries, ropes, and sails. The spindle was the tool of choice for 9,000 years until the introduction of the spinning wheel in the 12th and 13th century (depending on which part of the world you look at). The basic principle of the spinning wheel is the same as the spindle, but it allows the spinner to spin faster and with less effort, drastically increasing production.
2nd-7th century Egyptian spindle (part of the Islamic Art collection at the Met Museum)
This rich history and staid tradition are in direct contrast to today’s technology landscape. Spinning yarn has remained functionally the same for thousands of years compared to something as fundamental as our data access techniques which change every 3 years on average (and that’s just industry best practices, not the cutting edge). Even a typical brand website is redesigned every 2–3 years to stay relevant to consumers. You can buy a spinning wheel from the 1980s (or even older), and with some TLC, get the same result as a state of the art wheel. Good luck getting a computer from the 80s to run.
Today’s spinning wheels are functionally the same as early wheels, despite looking drastically different. One example of an early spinning wheel, known as a walking wheel or great wheel is typically over 5 feet tall and involves the spinner’s whole body. The left hand holds the fiber and the right hand spins the wheel while the spinner walks backward to draw out the fiber. I’ve heard that these early spinners would walk 2 miles a day while they would spin. Fast forward to present day, there are travel wheels that fold up less than 2 feet tall and only 8 inches wide turning the craft into a portable option for those determined to spin anywhere and everywhere.
Technology has seen a similar trend toward small and portable, but today’s hardware functions very different than it used to. The Apple II shipped with 64 KB of memory at most. For comparison, the iPhone 7 has 2GB or 31,250 times that of the most powerful Apple II. You wouldn’t be able to create anything on an Apple II that could be considered functionally similar to what you can create on a present day computer, even a low powered one.
Apple II (http://oldcomputers.net/appleii.html)
In software development, we love to talk about extensibility as a way to future proof our solutions. What we’re really talking about is creating solutions that are easy to rewrite continuously as technology changes. The only way to get any longevity out of your product is to rewrite and refactor constantly.
We most often see this need in the infrastructure layer of our projects. As I mentioned before, data access is a rapidly changing area regardless of your tech stack or business logic. You may be using a relational database today and decide tomorrow to move parts of that into a NoSQL database to help your product handle a drastically increased load. Or, you decide to move your assets from an on-prem solution to the cloud and now your asset management code needs to be refactored.
So much of software development is planning to be obsolete and trying to prolong the time before that happens as long as possible. Spinning yarn is the exact opposite of that, and that is one of the reasons why I love spinning my own yarn. I feel connected to the history of the craft knowing that it hasn’t changed much over the years and that my end product hasn’t changed either. When I build a new microservice, I can’t say I feel that same connection to Grace Hopper, Alan Turing, or even today’s greats.