Resolved: Programming is Hard Work

By  |  Friday, August 13, 2010 at 3:48 pm

Over at his New York Times column, David Pogue has reviewed Google App Inventor, the toolkit–currently in private beta testing–that aims to let normal non-gearheads write applications for Android phones with no programming knowledge. His experience wasn’t sensational. In fact, he found Inventor so cryptic, cumbersome, and glitchy that he was unable to write a program–even after he brought in an expert consultant in the form of his 13-year-old son.

I enjoyed reading the column: It’s an entertaining, necessary antidote to some of the initial hype surrounding App Inventor. But it also left me feeling a tad melancholy. The concept behind Inventor remains exciting, and I hope that Google sticks with it and eradicates at least some of the gremlins that David encountered.

Even  an App Inventor that lives up to its potential isn’t going to make writing software a cakewalk, though. And the hype that David quotes–“App Inventor requires NO programming knowledge.”–is a mistake on Google’s part.

As David notes, the notion of programming tools for the rest of us is nothing new. It dates at least to the mid-1960s, when a couple of Dartmouth professors came up with BASIC, a language designed to let liberal arts majors create mainframe programs, and lives on in products such as RunRev. The best of them do indeed make programming more approachable. But there’s no such thing as writing programs without knowing programming. Like David says, it’s still programming even if you’re dragging around blocks rather than hammering out code.

And programming anything of consequence requires both a worthwhile idea and considerable planning and patience. Even if the tools you use are less intimidating than a traditional language, you can’t just whack out an application effortlessly. Suggesting otherwise is like telling someone that the right software makes it a breeze to write a concerto or design a house.

The right mindset helps, too: There’s a reason why some of the most accomplished programmers in history have been very young people with little or no formal training. The right-brained among us (like me!) are always going to have more trouble with this stuff than those who are more in touch with the parts of their brains in charge of logic and organization.

After thirty years or so of experience as an amateur software developer with everything from BASIC to Forth to Pascal to JavaScript to PHP, I’m also instinctively skeptical when a programmers assures me that a programming language is easy enough for us normal people. Programmers just aren’t very good at figuring out how to make programming easy–if they were, all programming languages would be far more inviting, and there’d be less need for things like Google App Inventor.

I don’t mean to be a wet blanket: I grew up on BASIC, and the Cranky Old Man inside me still thinks that PCs were better when just about everyone who had one knew at least something about programming. If all App Inventor does is make it possible to build Android programs without delving into the minutiae of Java, it’ll be very cool. But it’ll still be programming, and it’s best if everyone involved understands and accepts that.


Read more: , , ,

10 Comments For This Post

  1. JimC Says:

    Interesting timing: I just got my invite to Inventor.

  2. John Baxter Says:

    Now you just need to combine that FORTRAN card with an IBM-010 punch to get some work done. (For kids: the 010 had a button for each card row, a "hold" button so you could multi-punch, and an advance button so you could leave a blank.

    It helped to know the card code.

    I got a lot of work done on the no-waiting 010 when the fancier punches were busy.

    I also remember one comment from the source code for an early FORTRAN compiler, which I read while at MIT:
    (I have no memory of what the DOG subroutine did.)

  3. Harry McCracken Says:

    When I was in college, punch cards were obsolete. But they hadn't been obsolete for all that long: The Boston University computing center still had enormous stacks of them everywhere…

  4. Bart Evans Says:

    Let me know if you would like to have a PDF scan of my copy of the original Dartmouth College Computation Center "BASIC" Manual, dated 1 Jan 65. A handful of us were the original high school test group back in New Hampshire. At the first "user review" we requested (and got) several items, including 1) a way to renumber lines (RENUMBER or REN) and 2) a way to supply data while the program was running (INPUT), which gave birth to games. Ah yes, the good ol' days. It sure beat using a slide rule.

  5. Harry McCracken Says:

    Very cool! I'd love to see it…RENUMBER was one of my favorite commands.

  6. David Says:

    The reason why tools like this fail is because the programming language is but one piece. I've been a developer for 15 years and you've got to know a bit of everything to do this job. I guy who is an expert at say Java or C++ but knows nothing of networking, software design, RDBMS, security, and the problem domain that you are addressing is ultimately not every useful.

    It takes a wide range of technical knowledge to do this job. As long as the focus is just one the language such tools will never succeed, IMO.

  7. Dave Barnes Says:

    Love FORTRAN, don't like Fortran.
    Love COBOL, don't like Cobol.

    IBM 029s were such a huge advance over the 026. We used to fight (well, as much as nerds fight) over who would get the 029.

  8. Jeff Richardson Says:

    Harry, were you a high school debater? I like the title of this post, but I would think that only former high school debaters would get the reference. When I first started high school debate in 1983, it was common to use old computer punch cards to hold our debate evidence. Now, on the other hand, I can't even think of the last time I saw a punch card.

  9. Harry McCracken Says:

    Wow, no, I never debated. But I was in college in 1983, and there were still gazillions of punch cards at the computing center. As far as I can remember, it was the first and last time I ever saw any in the wild.


  10. Andrew Says:

    I've tried App Inventor and had a very mixed experience; compared with installing Eclipse/Android SDK/Java and getting it working, it's a breeze. I found it easy to use – but I am used to writing in Visual Studio. BUT, the "program" I wrote with app inventor simply didn't work. I would describe App Inventor as being in early Alpha. Mind you, Android development under Eclipse is probably at early Beta!