Slashdot Mirror


Learning To Program Is Getting Harder (slashdot.org)

theodp writes: While Google suggests that parents and educators are to blame for why kids can't code, Allen Downey, Professor at Olin College argues that learning to program is getting harder . Downey writes: The fundamental problem is that the barrier between using a computer and programming a computer is getting higher. When I got a Commodore 64 (in 1982, I think) this barrier was non-existent. When you turned on the computer, it loaded and ran a software development environment (SDE). In order to do anything, you had to type at least one line of code, even if all it did was another program (like Archon). Since then, three changes have made it incrementally harder for users to become programmers:
1. Computer retailers stopped installing development environments by default. As a result, anyone learning to program has to start by installing an SDE -- and that's a bigger barrier than you might expect. Many users have never installed anything, don't know how to, or might not be allowed to. Installing software is easier now than it used to be, but it is still error prone and can be frustrating. If someone just wants to learn to program, they shouldn't have to learn system administration first.
2. User interfaces shifted from command-line interfaces (CLIs) to graphical user interfaces (GUIs). GUIs are generally easier to use, but they hide information from users about what's really happening. When users really don't need to know, hiding information can be a good thing. The problem is that GUIs hide a lot of information programmers need to know. So when a user decides to become a programmer, they are suddenly confronted with all the information that's been hidden from them. If someone just wants to learn to program, they shouldn't have to learn operating system concepts first.
3. Cloud computing has taken information hiding to a whole new level. People using web applications often have only a vague idea of where their data is stored and what applications they can use to access it. Many users, especially on mobile devices, don't distinguish between operating systems, applications, web browsers, and web applications. When they upload and download data, they are often confused about where is it coming from and where it is going. When they install something, they are often confused about what is being installed where. For someone who grew up with a Commodore 64, learning to program was hard enough. For someone growing up with a cloud-connected mobile device, it is much harder.
theodp continues: So, with the Feds budgeting $200 million a year for K-12 CS at the behest of U.S. tech leaders, can't the tech giants at least put a BASIC on every phone/tablet/laptop for kids?

11 of 408 comments (clear)

  1. No by Anonymous Coward · · Score: 0, Insightful

    It's getting dumber.
    Abstract concept after illogical process.
    Teach people how these machines really work and kids can do it.

    1. Re:No by 0100010001010011 · · Score: 5, Insightful

      People from the 50s would say the same thing about your life and not knowing how woodworking, plumbing, electrical wiring, cars, etc worked.

      Your life is built on abstraction. How well do you know how most of the machines that run your life work?

      I'm sure some polymath will come in here proclaiming they own a homestead, repair their own cars, build their own silicon chips, et al but the reality is that for you to get any depth in a subject you have to neglect the depth in others.

      I learned to program on Hypercard at ~14. Scratch and NodeRed look like great modern day equivalents for the same age. A 14 year old doesn't need to know how to bit bang with assembly but a high level introduction may lead them down the road of wanting to know.

    2. Re:No by Z00L00K · · Score: 4, Insightful

      Basic of today is Python. It's decent for beginners.

      Back in the 80's computers were a lot simpler and you could assert full control over every aspect of them - and discover the actual limits of them. All you had at that time were information provided in the manuals, either for the computer or for the chips in the computers and by others - and often shared in computer magazines.

      But the problem with computers today is that even if you have the computer with even Linux installed on it you don't have full and total control over the computer. With Windows you have even less control over your computer and can only do what the great leaders in Redmond decides you should be doing. Also look at the Management Engine that is completely outside the control of the person owning the computer. And there's a huge amount of functionality that's provided only if you sign a NDA and pay a huge amount of money. The UEFI is also adding constraints to computers today that weren't an issue in the 80's.

      Today the best bet is still regardless of stated above to do development work on Linux, at least there the ability to access the code of others for learning still exists and you can make your own mistakes. The environment that's most similar to what could be experienced in the age when teenagers and even younger were starting with computers is probably the Raspberry Pi and Arduino.

      What we miss today is also all those small teams of programmers that made for the time really awesome graphic demos on Amiga and PC in ways that really looks good even today. Some of that was done by "cheating" by modifying the color palette instead of just drawing the full picture over and over again. But why waste CPU cycles on redrawing a whole picture for recurring graphics?

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  2. One word: JavaScript by TheRaven64 · · Score: 3, Insightful

    All computers these days come with a web browser. Modern web browsers include rich debugging facilities. It's never been simpler to start writing programs. You can start with simple text output and progress all of the way to 3D OpenGL graphics or 2D vector and composited raster graphics with the canvas.

    --
    I am TheRaven on Soylent News
  3. software availability and incentive changed too by isj · · Score: 3, Insightful

    Nowadays you can get pretty much any niche program you need. In last millennium access to programs was much harder, so sometimes you had to figure things out yourself. That means that people now have less need to dive into the technical details about eg. printer drivers and configuring them. Now you just download the latest driver from the manufacturer, or perhaps it worked out-of-the-box because the driver was included in the OS.

    I'm not saying it was better in the good old days. But you did have the need to be a bit technical when computers didn't do everything you wanted. And that gave some people the push to going deeper and making programs.

    Car analogy: it is harder today to become a mechanic, because the engine is typically just a big inaccessible block. No more easy access to spark plugs, carburetor, or adjusting the choke. Is that sad? Maybe.

  4. Why? by ELCouz · · Score: 4, Insightful

    Why the sudden push for kids and newborns to know how to code? .... Like this will miraculously improve their life later on...

  5. Are they serious? by alvinrod · · Score: 5, Insightful

    I think that they're completely wrong and that learning to program is so much easier today than at any point in history.

    First of all, there are a wealth of online resources that anyone can access with a web browser than there are loads of them that are freely available. There are loads of websites, videos, etc. dedicated to learning programming languages. Some like Python or Java have such an abundance that it's almost difficult to be able to determine which to use. On top of that, there are plenty of websites like Stack Overflow that are dedicated to answering people's questions, so you can even get by with learning on your own outside of a classroom and still be able to get some feedback and mentoring from more experienced programmers.

    Development environments are easy as hell to install. You can a one-click installer from Oracle that will install and configure the JDK and an IDE for you. Most languages don't even need an IDE at all and just require running a script you can bang together in any text editor. It can't get much easier than that. Similarly, most kids figure out how to use a GUI on their own through trial and error. Their parents certainly didn't teach them how to become proficient computer users. Cloud computing has made things like Scratch possible where children can learn programming concepts and share their programs with friends and others. I fail to see the merit in any of the points that they make.

    If programming seems hard, it's because it has become so widespread that we're trying to teach it to everyone instead of as in previous generations where people mostly seemed to seek it out and dedicate their own time and efforts towards it. It looks like the past was more successful because we don't see the people who tried and failed in the past. The old generation that seems to understand it more intuitively or didn't struggle as hard are the survivors of far more niche group.

  6. Programmer like mechanic? by tgibson · · Score: 3, Insightful

    Cars have become easier to use (GPS, stick shift is a rarity, who changes their own oil anymore). The technical innovations underlying today's vehicles certainly makes it harder for users to become mechanics. A person may be introduced to the intricacies of car repair/maintenance by a friend or relative, or by taking a training course. I don't believe making cars more mechanically accessible is going to significantly increase the population of mechanics. By and large those who become mechanics have both a knack and passion for it.

  7. Nonsense. by Qbertino · · Score: 3, Insightful

    It's way easyer. The incentives may be lower, that's for sure. Unreal tournament is way more fun than going through the first bits of coding, but getting into programming is easyer.

    You need an editor and a browser and perhaps an active internet connection and your good to go. All this is bog standard these days, you can even do it on a phone.

    --
    We suffer more in our imagination than in reality. - Seneca
  8. They simply do not WANT to learn. by Voice+of+satan · · Score: 3, Insightful

    I am a happy nerd.

    I love my nerd world, my nerd friends and colleagues. But there are simple stuff that doesn't go trough our thick skulls. It never came to your minds people do not learn to program simply because they do not specially desire to do so ? They do not consider it an important skill, they have no curiosity about "how it works in the inside" and often consider an electronic device that needs any intellectual effort a poorly designed device.

    I loved my commodore 64. I learned to program a little bit on it. But it is because i was curious and educated by parents that encouraged that trait. If we lived in a world where computers were ubiquitous but similar to commodore 64's, they would not learn to program because you have to to make a C64 work. They would buy consoles.

    I have similar conversations with some of my nerd brethren about maths. I mean, the few ones that more or less realize that most people know very little maths. They speak about the difficulty of some abstract concepts, the quality of the teachers, the small number of math hours at school. But they do not get that most people do not desire to become whiz kids. Eventually they find them annoying, or pedant, or arrogant. They are not curious and are not raised to become that way.

    They may be embarrassed by the social consequences of their ignorance. But it is a pecking order question for them, nothing more.

    Same kind of reasoning when talking about why people are not athletic while they have an able body like everyone else, etc...

  9. Backwards by zieroh · · Score: 5, Insightful

    I was a programmer when the Commodore 64 came out, and I'm still a programmer today. So I think I'm reasonably qualified to comment on this topic.

    There is in fact an increasing gulf between computer users and computer programmers, but TFA has it completely backwards. It's not getting harder to code. There are two (and only two) factors at work here:
    1. Computers have gotten substantially easier to use by non-programmers. My parents wouldn't have been able to do anything with my Commodore 64. But they can use a modern computer for normal user-level tasks just fine.
    2. The expectations of what software should do has increased substantially, which means programmers need to be able to create much more complex code to meet minimum baseline expectations. At the same time, though, modern software development has rapidly evolved over the years and now offers better tools, better frameworks, better access to information and documentation, better back-end services (e.g. "the cloud"), better debuggers, and a whole host of other improvements that allow one programmer to do more than they were ever able to do before.

    I will concede one point here: programmers today need to be familiar with a lot more different things (e.g. frameworks) than the days when they had literally no frameworks at all. That said, programmers need much less depth in their understanding of those various pieces, since documentation is literally a mouse-click away in nearly any decent IDE.

    Also, it's called "IDE". This "SDE" acronym is just bullshit and demonstrates that the author of TFA is a bit light on actual industry experience.

    --
    People who say "sheeple" have about as much sophistication as an AOL user, and in fact are probably actually AOL users.