[HN Gopher] Bifurcate the Problem Space
       ___________________________________________________________________
        
       Bifurcate the Problem Space
        
       Author : potetm
       Score  : 28 points
       Date   : 2023-02-21 12:43 UTC (10 hours ago)
        
 (HTM) web link (potetm.com)
 (TXT) w3m dump (potetm.com)
        
       | teddyh wrote:
       | From _The Devouring Fungus_ (Karla Jennings, 1990), chapter 6:
       | 
       | --
       | 
       | [...] Imagine the frustration of the Stanford University
       | instructor with an especially thick repairman who kept showing up
       | to fix the same computer. He'd stay for a few hours, poke around,
       | announce the machine fine, and leave; but he never knew what he
       | was doing, so the instructor kept calling him back because the
       | machine was never fixed.
       | 
       | Finally the instructor got so mad that he said "Let's do a binary
       | switch. The problem has got to be one of the circuit boards." The
       | repairman didn't know what a binary switch was, but he agreed
       | because he had an angry customer.
       | 
       | A binary switch involves taking half the circuit boards from the
       | machine having trouble and switching them with identical boards
       | in another machine. If the problem's been transferred to the new
       | machine, you know that something's wrong with the switched
       | boards. Then you reswitch smaller and smaller number of boards
       | until you pinpoint which board is defective.
       | 
       | They switched half the boards and, sure enough, the problem moved
       | to the other machine. The repairman said, "So what do we do now?"
       | So they swapped half of the changed boards. The trouble was that
       | now _both_ machines worked. (Perhaps shaking the boards around
       | had put a loose contact back in place.)
       | 
       | "That's great!" said the repairman. "I'm going to use this
       | procedure from now on. I never knew you could fix a machine just
       | by swapping boards!"
       | 
       | --
        
         | agumonkey wrote:
         | I expected the story ending with none of the machine working :)
        
       | darkerside wrote:
       | I consider myself a "good" debugger, and I don't really know why.
       | Reading this makes me think that I probably have several
       | strategies, including this one, that I subconsciously use without
       | having a label for them.
        
         | ianmcgowan wrote:
         | I really like this book (and have recommended it before on hn)
         | http://debuggingrules.com/?page_id=31 - it helps to have a
         | shared team vocab for some of the concepts.
         | 
         | There's a summary set of slides here that gives a great
         | overview:
         | https://courses.cs.washington.edu/courses/cse474/18wi/pdfs/l...
        
       | Y_Y wrote:
       | Is this not bisection rather than bifurcation?
        
         | metadat wrote:
         | Bisection means dividing a curve into two equal parts.
         | 
         | Bifurcation means divide, split, or fork something into two.
        
           | Y_Y wrote:
           | But of course bisection doesn't just apply to curves, and
           | bifurcation only refers to certain kinds of division. You
           | wouldn't bifurcate a cake or a number, for example. I feel
           | like it refers to a continuous process of splitting e.g. in
           | time like a species that evolves into two species or in space
           | like a road that forks into two roads.
        
       | nh23423fefe wrote:
       | Asking questions which yield more bits of information is good
       | practice. Bifurcating a space creates higher entropy signals when
       | you finally measure.
       | 
       | A greyscale camera can tell you white or black and you could
       | differentiate day from night. But a color camera can tell you red
       | white blue black and so now you can derive sunrise sunny cloudy
       | night. The set of observables is what you partition into signals.
       | 
       | Enhancing your observable space lets you derive stronger signals
       | to act on.
        
       | tayloramurphy wrote:
       | I was fortunate enough to learn this strategy outside of a
       | software context first. In grad school I was responsible for
       | maintaining our GC-MS and LC-MS machines (Gas/Liquid
       | Chromatograph / Mass Spectrometer) in addition to using them for
       | my own experiments on a regular basis. They were complex pieces
       | of equipment that had a ton of fiddly components.
       | 
       | The best way to troubleshoot these machines was to split the
       | problem in half again and again until you found the part that
       | needed to be cleaned, repaired, or replaced. The way to do that
       | was to run different known chemicals with their own known
       | signatures through the machine again and again. For example, you
       | could run a single chemical (maybe ethanol - I honestly don't
       | remember which ones at this point) and see if it goes straight
       | through the GC and gives you the peak you expect. If it doesn't
       | you could look at the result and see if the timing was off
       | (indicates something with the GC or gas flow) or if the peak was
       | wonky (indicates something with the MS). And then you just keep
       | going. (Sounds a lot like unit and integration tests right?)
       | 
       | Applying that same strategy works wonders for data pipelines as
       | well. Is it something with the extractor or loader (or god forbid
       | Airflow)? Break it down and go from there.
       | 
       | My only nit on this is that while bifurcate is technically
       | accurate (or is it actually?) it feels unnecessarily complex
       | sounding for folks learning this skill.
        
         | ianmcgowan wrote:
         | I've always used "divide and conquer" which is a cliche for a
         | reason.
         | 
         | Bifurcate is commonly used by Indian colleagues, and perhaps
         | programmers are familiar with the term, but it's not something
         | used by US business people in my experience.
        
       ___________________________________________________________________
       (page generated 2023-02-21 23:02 UTC)