←back to thread

303 points FigurativeVoid | 1 comments | | HN request time: 0.382s | source
Show context
namuol ◴[] No.41842187[source]
I always come back to this saying:

“Debugging is the art of figuring out which of your assumptions are wrong.”

(Attribution unknown)

replies(2): >>41842329 #>>41843213 #
throwawayForMe2 ◴[] No.41843213[source]
I always thought of what I learned in some philosophy class, that there are only two ways to generate a contradiction.

One way is to reason from a false premise, or as I would put it, something we think is true is not true.

The other way is to mix logical levels (“this sentence is false”).

I don’t think I ever encountered a bug from mixing logical levels, but the false premise was a common culprit.

replies(2): >>41843424 #>>41845987 #
1. motohagiography ◴[] No.41843424[source]
some possible examples:

security with cryptography is mostly about logical level problems, where each key or operation forms a layer or box. treating these as discrete states or things is also an abstraction over a seqential folding and mixing process.

debugging a service over a network has the whole stack as logical layers.

most product management is solving technical problems at a higher level of abstraction.

a sequence diagram can be a multi-layered abstraction rotated 90 degrees, etc.