The Butterfly Effect { } in Complex (Software) Systems

I have been doing more hands-on software development in my new job and have experienced first hand (no pun intended) the principles of chaos, and not just because my skills had eroded.

"the Butterfly Effect - the notion that a butterfly stirring the air today in Peking can transform storm systems next month in New York." (Chaos:  Making a New Science)

One time someone else's copy and paste error of calling another method with the wrong variable took me a long time to figure out as everything looked right at first glance.

foo(string param1, string param2) {
  ...
   bar(param1, param1);
  ...
}

This was more like a mocking bird flapping its wings.

Another time, my own error of a single character in a PowerShell caused the progam to stop working for a day.  If a single character out of thousands of lines of codes isn't the butterfly effect then I don't know what is.

Of course there is no tiny silver bullet for these dreaded Chinese butterflies, although I'm sure the military industrial complex is working on nano Bucky ball shooting rail guns capable of bringing down a butterfly.  Assertions, logging, unit and integration testing, code reviews, and meticulously reviewing each line before checking into source control are all layers of defenses to capture a butterfly before their airwaves cascade across the code base.  Continuous integration with automated unit testing and automated continuous deployments and automated integration testing seem promising at providing an early warning system.  I thought the etymology of computer bugs was from the moths that would get inside the vacuum tubes.  It turns out it was in common usage in engineering before computers.  In any case, I suggest testers and developers refer to especially hard to find defects in complex systems as "butterfly wings", or "{}" for short.  It sounds so much nicer.


Comments

Popular posts from this blog

Embodying Self-Compassion

TED Talks Summary - "How To Make Stress Your Friend"

Ed.X Behavioral Economics