[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)