Hacker News new | ask | show | jobs
by mei0Iesh 3854 days ago
Where was the proof presented for this? That idea doesn't sit well with me at all. Maybe they meant to say that it's hard for most people to want to sit still and stare at text all day. It's hard to ignore urges to go out rather than stay inside and read tutorials on the web.

I don't think programming itself is hard. Most people program. It's just that they do it without thinking about the steps they're programming, and they do it without a computer. Parents program all the time, "If you don't finish your homework before 7 PM, then you will not get dessert!"

I think this is an article, and one with votes on here, because it's flattering the audience. Maybe say complicated mathematics is hard. But not "coding". That's what dumb people like me do who prefer to stay inside and play around with text on a computer. Of all the possible jobs I can think of, coding is near the bottom of the list in terms of difficulty. Anything involving a jackhammer is much rougher.

2 comments

Your perspective is incorrect.

I've made my living by teaching beginners to code. I have been doing it for the better part of two decades, and I specialize in teaching students that have little aptitude for it.

I make my students code FizzBuzz. It is literally the 106th project I make them do. That is, they have completed 105 complete computer programs before getting to FizzBuzz.

And many of them still struggle with it. The nuance of else/if needing to be ordered in a certain way is something they still don't have a good grip on.

Programming a computer is very very hard for most people.

The ill-conceived notion that parents giving children procedural instructions is somehow like programming brings me to a question for you as a teacher.

I've noticed that the industry really prides itself on algorithms and this is commonly reflected in interviews.

However, it seems to me that merely discussing algorithms, however clever they might be, is actually an intuitive human activity not unlike the example of the parent verbalizing procedural instructions to their child. Therefore, I would argue that algorithm design, though clearly an intellectual challenge in its own right, does not target the essential part that makes programming hard and inaccessible to so many people. (Disclaimer: a high-level algorithm discussion is usually followed by whiteboard coding, which I'm ignoring in this critique as a separate kind of activity).

Do you agree with this claim that algorithm design is not actually the thing that makes programming so difficult for laypeople? Can you give your take on what does make programming hard or what students struggle with the most?

I think algorithm design is hard. Most students/people can't break down a problem into small enough steps for the computer to do them.

Are you familiar with the concept of "chunking" in memory research? Well, computers don't chunk but humans do. Humans tend to think about their algorithms in terms of the chunks they already know, but for computers sometimes each chunk has to be broken down into much smaller sub-steps.

And that's non-intuitive and hard. When explaining stuff to a human you get immediate non-verbal or sometimes verbal feedback if they don't understand the chunks, but computers just give a syntax error.

SECONDLY. Students have trouble making an accurate mental model of what the computer is doing at each step, so they can't trace through the code, much less create new code.

Those are the two biggies, in my experience.

It sounds like what you're describing is not figuring out at a high level what to do, but formalizing that into low-level instructions for a computer. This goes exactly to my point. What I meant by "algorithm design" is strategy selection, which I want to be careful to separate from strategy formalization for a computer. It is the latter that I think laypeople struggle with the most, however, the fascination with algorithms often drives attention to the former. For example, it's easy to be impressed by the cleverness of binary search, but it's actually relatively straightforward to understand as a high-level concept. The harder thing for a layperson is to formalize binary search into a working set of computer steps. I think there is a certain cognitive bias at play, where the formality of fine detail seems lowly and menial, so we want to skip over it, in spite of the fact that it's actually the biggest hurdle for most people to overcome.
> Where was the proof presented for this?

The evidence presented is fairly poor, and consists of:

(1) failure rates of university first courses in programming for majors (which could indicate how hard it is to learn programming -- or how poorly designed university first courses for majors in the field are for the audience they attract.)

> I don't think programming itself is hard.

Actual coding isn't all that hard, once you have the foundations. But structured problem solving is a key foundation, and isn't all too often deliberately and effectively taught outside the context of programming (and, unfortunately, often isn't effectively and deliberately taught with programming, either, but programming seems to be the most common context where it is taught.)

> Most people program.

I don't think that's even approximately true. Most people do not plan out detailed step-by-step process from inputs to desired outputs that are expected to be successfully implemented by an execution agent that is perfectly literal and exact and exercises no independent judgment and has no ability to fill in the blanks and do what you probably meant given their understanding of the desired outcome even though you failed to specify it.

Even preparing step-by-step procedures for human agents is hard, not done a lot by most people, and done poorly by most people who do it, because most of them do so without good training.

System/process analysis skills that underlie both programming and procedure development may not be hard, but they are not skills that most people are taught effectively.