Settings

Theme

Why Johnny can't program (2002)

bricklin.com

36 points by semicolondev 10 years ago · 36 comments

Reader

learning_still 10 years ago

Excellent article. The one thing I disagree with is IDE's. I think that they actually present an overly complex interface that is daunting to the new user, not helpful. Ditching IDE's and switching to a text editor and CLI has made every aspect of programming easier for me to understand. As a new user, the price I paid to be able to click a button and run my program, was far greater than the price of learning how to run it from a CLI. I wish I had listened sooner to all the people telling me not to use IDE's.

  • blakeyrat 10 years ago

    When you say "IDE" you're probably meaning something like Visual Studio. Ok, fair enough.

    Now think about something like HyperCard. That's an IDE. It's eminently usable and learnable (even friendly), and yet still does all the things an IDE does.

    "IDE" doesn't have to be Visual Studio. There have been friendly IDEs in the past, and there's no reason they couldn't be built today except nobody's doing it. There's actually a nasty trend in software development right now that can be summarized as "they're programmers; they don't need usability or discoverability". Look at Git for an example. Ugh. This trend can not die quickly enough for me.

    • cbd1984 10 years ago

      I find git extremely usable, and I despise IDEs that hide anything from me.

      Every hidden thing is a thing that, when it goes wrong, I can't fix. Something "goes wrong" when it's either not working as designed, or it's broken as designed and needs to be reconfigured or otherwise changed: The IDE handles the wrong language, for example, and needs to use a different compiler and have different highlighting and formatting rules.

      IDEs that only handle one language are beneath contempt.

      • nickpinkston 10 years ago

        Sounds like you're a power user, not a novice.

        • cbd1984 10 years ago

          > Sounds like you're a power user, not a novice.

          Smile when you say that. ;)

          "Power user", to me, means someone who knows a lot of trivia about specific software but no underlying theory; none of their knowledge transfers to any other system, so their domain knowledge is constantly being obsoleted. Having some power user traits is inevitable and desirable, but being just a power user is a stage you should strive to outgrow.

          I admit that that's just a knee-jerk reaction based on my idiosyncratic definitions.

    • learning_still 10 years ago

      I completely agree with you. This problem with IDEs is not in the concept but in the way in which it is most often executed.

  • lfowles 10 years ago

    I agree with that to an extent. IDEs are certainly a powerful tool at some fuzzy point in your programming career when you've had enough of the ancillary details and want an environment to help you code. Most IDEs are a distraction to just learning, however, and VB in particular helped me construct a world view where everything in the computer was some big black box I couldn't hope to figure out. Of course, part of that might have been trying to develop on Windows too.

  • nickpsecurity 10 years ago

    I agree with rileymat on Visual Basic, version 6 especially. Combining that with partly made apps lets people learn the stuff incrementally as they need it. You don't need to know the IDE past step-by-step instructions on adding, compiling, etc. People even temporarily dodged the debugger with the dreaded, but useful, debug-by-print-statements method.

    The 4GL's like WINDEV made this more the case. We saw it on the command line side with COBOL. That and what happened with 4GL's in general should be a lesson that whatever we build for new users better (a) be consistent with more powerful stuff, (b) easily integrate third-party code, (c) be easy to port, and (d) do good practices by design in case we're stuck with it for 50 years. :O

  • k__ 10 years ago

    This.

    I liked the debugging features of IDEs when I had to maintain a gigantic PHP codebase. The hours I stepped through code after one click :D

    But after I started with JavaScript, which brought graphical debuggers inside the runtime (Browser) I didn't need this feature anymore...

    Also IDE get features slower, Atom and Sublime often have more up to date plugins, which allows the use of more alternative languages like LiveScript.

  • rileymat1 10 years ago

    It may cause future problems, but things like Visual Basic with the graphical interface are very easy for a child to understand (or at least me). As the artifacts that you are interacting with in the GUI are in the programming environment.

    • learning_still 10 years ago

      I think it's much simpler to learn 10 commands in the terminal and use text files than try to grasp what's going on in an IDE. I understand the corner case for GUI building. My first language was C# and this is how I learned how to program. I had no idea what was going on. I had no idea how events worked and the Property Inspector seemed to have a million nuances. I didn't care about learning how to program. I just wanted to make my ideas a reality. The result of this was a lot of frustration. I would say if you are just trying to get something done. You have a product or an idea that you just need to make a reality as soon as possible. If you don't have the patience to wait a month before you can make a GUI, then sure IDE's will do a lot of things for you. But if you plan on programming for more than 6 months, it's worth it to do it the simple way, that makes sense to you. Even if that means you won't be able to get a GUI up and running in 5 seconds.

      • Zergy 10 years ago

        > I think it's much simpler to learn 10 commands in the terminal and use text files than try to grasp what's going on in an IDE.

        This is true IMO. However you don't need to understand what the IDE is doing to use it now do you? A new user needs to learn nothing more than how to use the project creation wizard, and hit the play/stop button button.

        As someone who teaches high school children how to program I assure you from experience and an IDE is much, much simpler than diving into the terminal.

        • learning_still 10 years ago

          But that's the point. I didn't need to understand 10 commands in the terminal to run the application. A very small barrier. What IDE's did was create a huge barrier between me and all the other programmers. If something broke or I needed to learn something new, it was all in the context of this magical black box. I wasn't learning how to use my computer. I was learning how to use someone else's program. I could get from point A to point B without knowing what was going on, but ultimately that just caused a lot of frustration. How long would it actually take you to teach a student to compile and run a program written in C?

          This example requires the user to be able to do the following that an IDE would not:

          - copy paste a file path to the terminal

          - cd [pasted filepath]

          - make [file name]

          - ./[filename]

          http://c.learncodethehardway.org/book/ex1.html

          Versus throwing them into a black box where they are overwhelmed with buttons and gizmos and are encouraged to give up on the idea that they will ever know what's going on. Do you honestly think it's not worth the time to teach students how to use the terminal?

          • douche 10 years ago

            Then you have to learn how to write makefiles, which means you need to learn at least a little bit about gcc.

            Oh, you're on Windows (like 90+% of normal computer users), well there's this thing called Mingw, or you can use Cygwin, which you use in this thing called a command-prompt, which you've probably never used before. Oh, and make sure you have your PATH environmental variables setup correctly. What's an environmental variable?

            It's all turtles. Much easier to open Visual Studio, add a project, type out a main method, and hit compile & run. It's a shame QBasic isn't around by default anymore, limited as it was. Which, come to think of it, was a stripped-down, basic IDE.

  • WalterBright 10 years ago

    All anyone needs is a text editor and a compiler :-)

  • curiousjorge 10 years ago

    when you are dealing with a small project notepad++ might be fine but large codebase and frontend development it would be counter productive to not use IDE

    The 'complexity of IDE' is overrated. Once you've memorized the hot keys, it makes a world of difference, running grep to find a piece of code you don't remember hidden under layers of inheritence. You are setting up for failure if you act like a luddite.

    • learning_still 10 years ago

      The article is about why so many people were able to customize their myspace pages but not their internet browsers. It's about the transition of a new user to that of a programmer. My response is in the context of the article. It has nothing to do with whether or not IDE's are good or bad for advanced users with large projects.

Retric 10 years ago

I take the opposite view. Programming is fairly easy and many people do it without realizing it. EX: Adding waypoints in StarCraft pathing for new units.

Professional programming like professional dancing is simply taking that same idea several steps further.

  • dang 10 years ago

    > Programming is fairly easy and many people do it without realizing it.

    Most of all in spreadsheets, which the author invented!

    I like Jerry Weinberg's phrase for this: oblivious programming.

  • pvg 10 years ago

    The opposite view of what? Because the author discusses your point directly and at length -

    "[...] this is not to say that many people can't get immersed in systems that require such understanding. They do in many parts of their lives. For example, lawyers and tax accountants routinely work with such complexity in their contracts and planning. Doctors work with an untold number of variables. Someone planning a big party has to work out the food, matching paper goods, favors, invitation list, entertainment, etc. Yet, all of these people rarely program computers in addition. It's just that people who aren't professional or hobbyist programmers usually don't want to get so immersed in something that is infrequently done and not part of the rest of their lives. The question really isn't "Why Johnny can't program" but rather "Why Johnny won't or doesn't choose to program"."

    • orionblastar 10 years ago

      It is having an interest in learning how to program. Not everyone has it. That is why there isn't much diversity in people hired for programming jobs, lack of interest in programming by women and minorities. I'm sure women and minorities can program and learn how to do it, just that a lot lack the interest and do something else instead.

      There are exceptions like people in India that get a free college education and take up programming to get a good paying job in the West somewhere.

      • pvg 10 years ago

        Not sure I understand how that's related to the article either, to be honest.

    • Retric 10 years ago

      I think your confusing things that look like programming problems to you, with things people actually use programming to solve. Millions of people have actually programmed a DVR. Programmers on the other hand tend to look at lot's of problems and thing "let's use code!" even if it's not actually a good idea.

      Whiteboards are often a better solution than computer systems when it comes to patent care, because they simply have fewer ways to fail.

      • pvg 10 years ago

        That was a quote from the article, not something I'm confusing so I still don't quite understand your point.

        • Retric 10 years ago

          "It's just that people who aren't professional or hobbyist programmers usually don't want to get so immersed in something that is infrequently done and not part of the rest of their lives."

          His view, if a wedding planner (someone that did this regularly) was a programmer they would use it to solve problem X. My view Problem X is generally not a programming problem. In comparison problem Y ex:(programming a DVR) is a programming problem and millions of people used programming to solve it.

          • pvg 10 years ago

            That's not how interpret what he's saying at all - he's saying that there are activities/professions that require detailed modeling and knowledge of complex rules and systems but people who engage in them don't usually take up programming for any reason, not 'they don't take up programming for the professional needs'. And what you're contrasting as a 'programming problem' mostly doesn't fit his definition of programming, either.

            • Retric 10 years ago

              He clearly has a flexable definition of programming: "There are some hybrid forms. ... (Trellix's TWE web site authoring system is built this way.)" And DVR's seem to meet this definition of specification through menus style programming especially when you get into GC.

              Yet, I don't see any way a weadding planner can save time and really automate things at a high level. Use an online calendar, manage invitations through an electronic address book etc sure. Get a computer to do seating arrangements, yea not worth the effort.

              http://www.toptableplanner.com/blog/wp-content/uploads/2010/...

    • Terr_ 10 years ago

      > Someone planning a big party has to work out the food, matching paper goods, favors, invitation list, entertainment, etc.

      So? Many people solve specific crosswords, but that doesn't mean they can write a generic crossword-solver. The underlying skills are very different.

  • learning_still 10 years ago

    The article agrees with you. It tries to explain why millions of people can add waypoints in SC, but can't build a greasemonkey script for their facebook.

nickpsecurity 10 years ago

Good article. Yet again, benefits of BASIC and Pascal kick in. Note that these are still maintained with idustrial-strength tools and IDE's available. Just gotta develop courseware that takes people through a series of problems incrementally learning the language while letting them ignore the rest of it. Gradually pick up both the features, thinking style, and good practices. Eventually can do the whole thing with the whole language and it's already a production language. :)

On a side-note, the questions the author asked were partly solved with efforts like Scratch. That project made a form of programming as easy as playing with Legos. What kids did from there was amazing. Might be lessons to apply in the adult tools.

https://scratch.mit.edu/

RussellDussel 10 years ago

HTML is a programming language?

Makes me think there's a very grey area between declarative programming languages and just plain data. If writing HTML is considered programming, does that make a draftsman drawing up building plans a programmer?

  • kruczek 10 years ago

    It isn't. HTML is not Turing-complete. It is a markup language, which describes structured data, but does not describe any dynamics of that data.

snlacks 10 years ago

Amy Wohl's comment is true, but I've realized I can't pick out the right visual tools in any field on the computer unless I already know what I'm doing. This of course doesn't apply in a business setting where environments are set up for you.

Text based tools are easier to keep modular and advance the process. Without someone doing it, the visual environments seem to stagnate (anecdotally).

fredgrott 10 years ago

Some do programming..others are at the higher level of software management..

An example..in android programming I spend some time marking up my classes with annotations telling the compiler which way I mean some java method or statement to be treated by the compiler which improves the management of the software dev process by reducing the error count down significantly

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection