Iteration, Maths, and Continuous Delivery
Recently I’ve been reading "Godel, Escher, Bach: An Eternal Golden Braid". I also love to stare at trees, and this morning while waiting for the train, something occurred to me: “What is a tree without time?”
I’ll get to computer stuff in a bit, but follow me for a minute here.
Things take time to develop
We live in a multi-dimensional universe, and one of those dimensions we perceive as the passing of time. Strangely for its inhabitants, time appears to only go in one direction. Concurrently, iteration seems to have a “direction” as well. Just as with a single-dimensional line, you can iterate forwards and backwards. Time’s arrow shows us that’s how it works for us. The concept of “direction” in iterates is also well understood, but there seems to me to be an obvious correlation between time’s direction and iteration.
Back to the tree. My point is that the branches are just iterations of a simple instruction set. They look different, but it’s just a mixture of randomness and iteration. Like this picture of a hair.
Watch the video below, but please come back and read the rest of my ramblings after you see this guy reproduce what looks like hair follicles in less than 10 lines of code:
[embed]https://youtu.be/PBDQL7hp7gk?t=1h1m[/embed]
Give me something really WILD to ponder
Warning => Conjecture: I am not a scholar, just a really interested party.
Also, this sentence is not true.
Nowhere in the universe we perceive exists an example of the opposite of iteration (let’s call that idea “statics”). We know that all physical things are part of spacetime. Quantum “jitters” show that even bodies at rest are not truly at rest. Empty space is never truly empty, virtual particles pop in and out of existence constantly. Could this just be way of spacetime alleviating itself of the need to iterate the physical dimensions to keep balance with the arrows in what we perceive to be non-physical dimensions? Or possibly how fractional geometry approaches the Euclidian sticky points in our perceptive capabilities, by iterating continuously ad infinitum? Boom.
How does a book about hair styles help me with a DevOps strategy?
“An Eternal Golden Braid” makes you think, hard. In most cases, that’s a good enough reason for me to read something. And I hate reading, but I love learning. That’s my opinion, go make your own up.
A key concept to keep in mind if you read this book is how entangled things get once you start asking very granular questions about relationships between the observable universe and mathematics (maths), maths and a definition of the self, and how far we can reduce a concept before it satisfactorily models the phenomena we uncover with math, science, and philosophy.
Iteration is present in maths, starting with the concept of zero, something it took us a long time as humans to identify. Take none, add one. Keep doing that until you reach infinity. Presto! Thanks to the simple concept of iteration, when mixed with literally nothing (zero), exposes the concept of infinity.
"DevOps" is an amalgamate term now, involved in everything from rapid iteration to deployment methodologies, distributed systems architecture to “soft” skills amongst team members. It’s all tangled up, which is not a bad thing necessarily. We need cross-disciplinary thought to help expand on how the practices we implement fit together, complement each other, and even conclude something which only causes problems and needs to be excused permanently (think M$ DCOM, Clippy, and maybe even gun control). I don't like any of them.
How does this relate to continuous delivery?
I am a man who prefers science whenever possible, but I’ll settle for less than scientific if it has promise and until it is disproven. A few taking point came to me this week:
- Fractional iterates lead to the concept of continuous parameters. Continuous parameters, isn’t that the software we’re building? Or is it us, the people AND the product? This sounds like some of the thinking we have around continuous delivery, loops of deployment and redesign.
- Any time infinity walks in the room, everything goes to hell and no one likes a know-it-all at a party. Paradoxes abound. The concept of continuous delivery seems a bit like Dante’s seventh circle to me, in that nothing ever ends, it just goes on and on.
- Like spacetime, the patterns we use and the goals we want to reach are not separable. Better practices lead to better results.
- Like every tree, every good idea takes time, iteration, and a bit of [pseudo]randomness to develop into something great.
Use whatever processes, tools, and timeframes you need to, but exploring the philosophical underpinnings of continuous systems is kind of necessary if you want to do things better over time.
Can you give me something more practical so I can go home now?
Okay, sure. Here are a few things I’d do if I was a development or a product owner with a team of pangalactically skilled people on my team:
- Have everyone read this book, or at least this MIT lecture video series on the book
- Allow members of your team one day a month to play with any idea they want to, the sole purpose being that it is a test of how they manage themselves and accomplish personal goals
- Iterate over the design of your processes, not just the design of your software; anything that’s working well, f*ck with it. Anything that’s not working well, replace it with something better.
- Assign one person per week to be an agent of change by asking them to cross-train with other members of your team on one or two things they don’t know about. As the Joker famously said, “Introduce a little anarchy”, which I have seen work very well to upset the status quo in practice.
Good luck. Let me know how it goes.