Live data from Hacker News

Is learning to program inherently hard?

computinged.wordpress.com

11–20 of 69 posts

Re: Is learning to program inherently hard?

#11
post #2

Is learning to ride a unicycle hard? It is if you don't have inherently good balance. Is linguistics hard? It is if you don't have a good associative memory. Is math hard? Is carving a wooden bowl on a lathe hard? Is pro-Hockey hard? Is sculpture hard? Metal working? Philosophy? Music? The percentages of people with specific inherent skill sets will vary widely in society, so 'hard' is best defined as 'requiring a sk…

Is learning to ride a unicycle hard?

I think the difference here is that riding a unicycle is a fundamentally bounded problem: you balance, you move your feet, you do a couple of other things. By contrast, programming is effectively unlimited in its potential problem domain.

Philosophy? Music?

These are both hard to do really well, but they have a much greater margin for error and often aren't provably correct or incorrect. When I write an academic paper, if I have a typo on the fourth page, the entire rest of the paper won't catastrophically fail. When I write a program, however. . .

Hard is relative.

Very true! But some fields still, at least to my mind, feel harder than others. One (limited) way you could look at "hard" is in the context of universities: I've seen dropout graphs for various majors. It's not at all unusual for someone to go from electrical engineering to com, or CS to English, but I've yet to hear any English majors say, "English was too hard for me, so I switched to Chemical Engineering."

Re: Is learning to program inherently hard?

#12
As a 'business' guy, I taught myself to program so that I could communicate effectively with my team. It was damned hard - partly because I was doing it on an evening and (if I'm honest) I wasn't that interested in it... at first. The more I learned though, the more that I understood that its about solving problems and as soon as my brain understood that it was a challenge it became more fun. I will admit that I am still not a very good programmer. I'm slow, but I treat it as a hobby now and whilst its probably amusing for the people on my team I enjoy the feeling I get when I create something.

To any of the non-programmers on who read HN a lot, I'd recommend doing what I did

Re: Is learning to program inherently hard?

#13
Hard? It's easy to write one line of code that works. Anyone can do that. It's easy to write two lines of codes that works. Anyone can do that. Now you just continue. See, not too hard!

No, of course the complexity grows for each new instruction - and that's why it's hard. Software engineering is about managing this complexity. Programming is the easy part.

Re: Is learning to program inherently hard?

#14

Programming is hard, period. Knuth has noted that its so difficult for him that when he is programming he can't teach courses, and he's among the best programmers in history. Jon Skeet wrote a blog on the topic: http://msmvps.com/blogs/jon_skeet/archive/2009/01/29/program... Jon Skeet is right. Programming is hard, except the most trivial tasks. And anything that is not trivial is probably broken. But we're OK with t…

"Programming is hard, period. Knuth has noted that its so difficult for him that when he is programming he can't teach courses, and he's among the best programmers in history."

This reminds me of something I've read about writing:

"A writer is someone for whom writing is more difficult than it is for other people." -- Thomas Mann

I wonder if this also applies to programming.

That is, perhaps the reason programming for Knuth is so hard is that he has such high standards and that he's working on such difficult problems.

Re: Is learning to program inherently hard?

#15
post #8
post #5

I think he got it spot on with the mental model stuff. People fail at programming because they've learned to always use plug-and-play formulas instead of properly understanding what's going on. This approach fails absolutely with programming. There are no shortcuts.

I don't fully understand what's going on. However, as long as someone design the black box carefully, I can figure out what it can't and can do.

Thanks to the law of leaky abstractions, that will always bite you in the end (provided your are doing something complicated enough).

http://www.joelonsoftware.com/articles/LeakyAbstractions.htm...

Re: Is learning to program inherently hard?

#16
post #8
post #5

I think he got it spot on with the mental model stuff. People fail at programming because they've learned to always use plug-and-play formulas instead of properly understanding what's going on. This approach fails absolutely with programming. There are no shortcuts.

I don't fully understand what's going on. However, as long as someone design the black box carefully, I can figure out what it can't and can do.

You still have to have a mental model of how the box works. A for loop is effectively a black box too.

It's not about knowing all the details of how it works, it's about making a mental model.

Re: Is learning to program inherently hard?

#17
post #10
post #9

Programming is like most things in life: hard if you have no affinity for it, much easier (but not necessarily easy) if you do. I see programming to have a lot of parallels with being a combination mechanic and automotive engineer. A mechanic fixes cars, diagnoses problems, tunes a car and so on. It's really a lot like (code) reading, testing, debugging and maintenance--all key programming skills. An automotive engin…

What is affinity? I just learned programming just like how I learn the artistic craft: Through sheer practice. (Now, ironically, I actually make more money doing my lesser skill in art than I do in programming)

[deleted]

Re: Is learning to program inherently hard?

#18
I would note that the author jumps between "teaching programming is hard", "programming is hard" and "learning programming is hard". None of these are equivalent statements about a field in general (even if they're all true here).

Still, it seems like in fact saying things about "programming" might also being inherently hard!

I mean, we can say that the halting problem is inherently but the halting problem doesn't reflect the day-to-day practices of the working programmer. Yet how do we characterize what does? The boundary between programming and using computers is fuzzy and given Church-Turing, just about defined activity can be encompassed in using a computer (a lot of machinists have become "programmers" of numerically controlled machines but this use is more similar to artists using Photoshop than software engineers using c++). One might argue that the advance of computer technology will create more and more professions which involve the high-level use of computers but won't be "programming as such" (spread-sheet use, UI design, etc).

By that token, if "real programming" is what's left when you've codified the other occupations, one could argue that it is inherently hard. But we're still a bit at the level of tautology.

Re: Is learning to program inherently hard?

#19
post #2

Is learning to ride a unicycle hard? It is if you don't have inherently good balance. Is linguistics hard? It is if you don't have a good associative memory. Is math hard? Is carving a wooden bowl on a lathe hard? Is pro-Hockey hard? Is sculpture hard? Metal working? Philosophy? Music? The percentages of people with specific inherent skill sets will vary widely in society, so 'hard' is best defined as 'requiring a sk…

Is learning to ride a unicycle hard? I think the difference here is that riding a unicycle is a fundamentally bounded problem: you balance, you move your feet, you do a couple of other things. By contrast, programming is effectively unlimited in its potential problem domain. Philosophy? Music? These are both hard to do really well, but they have a much greater margin for error and often aren't provably correct or inc…

When I write a program, however. . .

It might not catastrophically fail, but it might mean anything from not compiling through to not outputting a newline or create a possible security issue via a buffer overflow.

Like the majority of things in life, it comes down to shades of grey, and that's why it's tricky at times ;)

Re: Is learning to program inherently hard?

#20
post #2

Is learning to ride a unicycle hard? It is if you don't have inherently good balance. Is linguistics hard? It is if you don't have a good associative memory. Is math hard? Is carving a wooden bowl on a lathe hard? Is pro-Hockey hard? Is sculpture hard? Metal working? Philosophy? Music? The percentages of people with specific inherent skill sets will vary widely in society, so 'hard' is best defined as 'requiring a sk…

'hard' is best defined as 'requiring a skill a smaller percentage of the population possess

I disagree about the 'skill' bit. Skill can be acquired. There are many skills that few possess that many could acquire, if they wanted to. For examples, consult the Guinness book of world records.

Post reply on HN