Jason (jcreed) wrote,

aleffert's post over here about Bret Victor's most recent essay reminded me that I wanted to say a thing about it that I think is importantly wrong.

He says it right near the beginning:
People understand what they can see. If a programmer cannot see what a program is doing, she can't understand it.

Really? Can't? Despite the really interesting ideas and demos and fantastic, commendable urging of more visualization and immediation and reactivity and all that good stuff, this is just blatantly false. It's the rhetorical exaggeration of a noble sentiment to the point of distasteful falsehood.

Here are some things I do believe:

  • If a programmer can "see" what a program is doing, through some reasonable visualization, they will be better able to understand their program.
  • If an audio filter programmer can hear what their program is doing, they will be better able to understand their program.
  • If a programmer can say some things about what they expect a program to do, and have a machine check that expectation against reality, they will be better able to understand their program. So much the better if the machine can heuristically guess plausible complete specifications from partial ones. This goes by the name of "testing" and "typechecking", and "randomized test generation" and "type inference".
  • If a distributed system programmer can conveniently get useful summary statistics by querying an enormous database of logs generated by their system, they will be better able to understand their program.
  • If a programmer has awesome machine-navigable hypertext with the documentation and the IDE popups and the tab completion, freunlaven, then they will be better able to understand their program

By all means, keep researching cool ways of making programs more well-understood and thereby making programming better, but stop pretending that one method for doing that is criminally neglected and it is ABSOLUTELY ESSENTIAL and THE ONE THING THAT PROGRAMMERS REALLY NEED and all the other ways are stupid poop that will never help anyone ever.

Feel free to consider this aimed at any of the above things-I-believe, and feel free to point out approaches that I have negligently forgotten to think of.
Tags: programming

  • (no subject)

    Something that's bugged me for a long time is this: How many paths, starting at the origin, taking N steps either up, down, left or right, end up at…

  • (no subject)

    Still sad that SAC seems to end up being as complicated as it is. Surely there's some deeper duality between…

  • (no subject)

    I had already been meaning to dig into JaneSt's "Incremental" library, which bills itself as a practical implementation (in ocaml) of the ideas in…

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded