Hum, holes I see in the argumentation: - The graph structure for the recursion case of fibonacci is easier to read. At least for this simple computation, I strongly disagree. Granted, I am influenced by Programming 1.0, but I don't see how things become much simpler than fib(i-1) + fib(i-2). - The damage calculation function is horribly factored. The switch statement is duplicated and should be joined or handled diff…
The previous example (if-then-else with a complicated boolean logic) has a similar problem: Nobody should write such a mess in the first place. Instead, give speaking names to terms like "a" and "!a & (b|c)". And with "speaking names" I don't mean stupid stuff like "isAandBorC", but something like "waterSuppyOutOfLimits". That way, humans no longer need to think in boolean algebra but in terms of the problem's domain.
He is focusing on the structural aspect of programming, making spaghetti code more manageable by easier dynamic investigation of (partial) special cases.
However, statements like "names are just comments" show that he's completely missing the linguistic aspect of programming. With well-chosen names you don't have to look at the low-level details to understand what's happening. That's what makes abstractions powerful.