Isn't this basically what a debugger gives you? You say "follow the control flow" and "track state," but those are exactly what I do when stepping through code with invariants and watchpoints. The only real difference I see is that reading doesn't require a reproducible example, while debugging does. Otherwise, the habits seem nearly identical.
Yeah, exactly. Although sometimes, if you don't have a repro, you may want to understand more of the code in the way the article shows to (at least 1-2 go to definitions), as you'd need to know what to change the values to.