Mark Gritter (markgritter) wrote,
Mark Gritter


Mythbusters was a rerun, the Christmas episode where Adam and Jamie make a Rube Goldberg machine.

A typical Rube Goldberg machine is scalable to build because only specific pairs of components interact. You build A and B and hook them up. Then you build C and hook it up to B, and so on. You don't have to worry about how to connect A and C. So building a machine with N components requires that you get Θ(N) interactions to work.

Unfortunately, the same is not true for reliability, which is why Rube Goldberg machines are "hard". If each step works 99% of the time, then 10 components (+ 9 interactions) work together only (0.99)^19 = 83% of the time. 20 components puts you at 67% and with 40 your machine will fail more than half the time even if you got everything nearly perfect!

Software engineering would love to be doing that well. Each software component may interact with many other subsystems, forming a general graph rather than a chain or tree. Fortunately, computers tend to be highly deterministic environments rather than random ones, and software components can compensate for bad behavior elsewhere in the system. Otherwise nothing would ever work at all.
Tags: software
  • Post a new comment


    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment