Jason (jcreed) wrote,

I reread Sean Barrett's take on Bret Victor's various ideas, and there's a lot in there I like. I didn't realize people were actually taking the "Not What Programming Is" stance, or more specifically the idea that making more things manifest and visible and automatically computed was bad per se because, like, it coddles the programmer's mind and makes them weak, or something.

Really? We're still arguing about this? Does every generation have to shake its fist at kids-these-days being lazy bums that don't have to walk uphill both ways like we did? Look, this is the way that tools and human learning work together:


Alice spent her most of her life learning mental arithmetic tricks. She can do arithmetic in her head real good. She distrusts these newfangled calculators and computers, and doesn't use them often, and when she does, doesn't derive a whole lot of benefit from them.

Bob spend most of his life learning his way around his fancy reverse-doubleflip Czechoslovokian notation calculator. He's not as good at Alice at mental arithmetic, but as long as you give him his favored tools, he's more efficient at getting from problem to solution, because his tools actually help. But newer tools like general purpose programming languages cause him confusion and distress; all these curly braces and types of ducks and nomads or whatever-they-call-'em, who can say what they're good for, eh. So he doesn't derive a whole lot of benefit from them.

Carol spent most of her life learning how to program. She's really crap at mental arithmetic, and is not as good as Bob with a calculator, but can write complex programs to solve really hard problems really fast. As long as you give her her favored tools, she's more efficient than Alice or Bob at getting from problem to solution.

So why such strong resistance to creating new tools on the grounds that they will make people less effective when the tools aren't available? Do we care about getting from problem to solution in the real actual world where tools that we have invented exist, or do we really want to optimize for a hypothetical world in which they don't?

(Well, okay, it is legitimate to be concerned if the unavailability of the tool in question is actually, pragmatically likely to be often enough to be a concern. If cell phone networks were horribly unreliable, I might make sure to spend some time practicing my paper-map-reading skills or whatever. If I wasn't in a world surrounded by computation devices, I might spend more time boning up on my mental arithmetic.)

But the rest of the arguments that I've heard, sputtering "but.. but.. that's lazy" or "That's Not What Programming Is" --- they're preposterous. There is no thing that programming is. And God hands out no penalty for using machines to solve (part of) your problem just because you weren't enough of a masochist to do it in your head.
Tags: programming
  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded