Live data from Hacker News

Why Learning to Code Is So Damn Hard

vikingcodeschool.com

241–250 of 270 posts

Re: Why Learning to Code Is So Damn Hard

#241

Earlier quoted context omitted.

What you're saying is true and I used to be optimistic about it like you, however I stopped believing that it is feasible for most adults after failing to teach family members the basics or junior colleagues to become better. Maybe I've been a bad teacher, however the thing I noticed is this - yes, if you put enough effort, Ok, we can probably do anything, like learning to play the violin or do programming, except th…

Actually you can't ever learn to play a violin properly unless you have an ear for music. There is a threshold of minimal talent that you can't jump over just by practicing, you either can hear it or not. While there is no such obvious threshold for e.g. math or programming (for a person with an average IQ), I think we could talk about a kind of a threshold defined by the concentration and willingness to invest time…

Most people could run in marathons successfully, unless they are sick or something. It's what the human body was built for. And if you are going to argue that playing the violin requires an ear for music, as if that's so uncommon, then I could also argue that programming skill depends highly of intelligence.

> Losing weight is also dead simple

No it isn't, because weight gain and loss highly depends on one's metabolism. Say that to a diabetic and you'll probably get punched.

Re: Why Learning to Code Is So Damn Hard

#242

Earlier quoted context omitted.

What you're saying is true and I used to be optimistic about it like you, however I stopped believing that it is feasible for most adults after failing to teach family members the basics or junior colleagues to become better. Maybe I've been a bad teacher, however the thing I noticed is this - yes, if you put enough effort, Ok, we can probably do anything, like learning to play the violin or do programming, except th…

Actually you can't ever learn to play a violin properly unless you have an ear for music. There is a threshold of minimal talent that you can't jump over just by practicing, you either can hear it or not. While there is no such obvious threshold for e.g. math or programming (for a person with an average IQ), I think we could talk about a kind of a threshold defined by the concentration and willingness to invest time…

> Losing weight is also dead simple, just as quitting smoking or getting off drugs, but many can't do it. Learning is no different, it takes certain minimal level of power of will to be able to make it.

You say that losing weight is dead simple, and that you need minimal level of will power to achieve it, but then you say that many people can't achieve it.

Can you see there's some disonance there?

Re: Why Learning to Code Is So Damn Hard

#243
post #242

Earlier quoted context omitted.

Actually you can't ever learn to play a violin properly unless you have an ear for music. There is a threshold of minimal talent that you can't jump over just by practicing, you either can hear it or not. While there is no such obvious threshold for e.g. math or programming (for a person with an average IQ), I think we could talk about a kind of a threshold defined by the concentration and willingness to invest time…

> Losing weight is also dead simple, just as quitting smoking or getting off drugs, but many can't do it. Learning is no different, it takes certain minimal level of power of will to be able to make it. You say that losing weight is dead simple, and that you need minimal level of will power to achieve it, but then you say that many people can't achieve it. Can you see there's some disonance there?

But "simple" doesn't necessarily mean "easy". The simplest way to get a boulder up a hill is to push it with enough force.

Re: Why Learning to Code Is So Damn Hard

#244
post #71

Earlier quoted context omitted.

Unless you're doing Rails, in which case it'll be read as a magic method and guess what you meant :-P Seriously, that was a major sticking point for me having programmed for a long time: going from "if you have not declared that identifier, game over" to "magic happens".

I've been teaching myself off of online resources and 'magic' was what I hated most along the way. I can't debug magic. I've ended up digging so deep to understand things that I'm covering assembly now. It's painful, but going so far has made everything else make a lot more sense. Data structures are easier to conceptualize and will be easier to work with (for example). But most people I know don't get this far when…

You need to keep in mind that "magic" is only sufficiently "advanced" (or rather obfuscated) technology, but omeone somewhere said something along the line of "Things that work as if by magic also break as if by magic" .. I've been looking for the reference ever since.

Re: Why Learning to Code Is So Damn Hard

#245
I think one big problem is the expectations. People think that they can learn a lot of programming in 3 months or 1 year or something. I think it takes a lot of time, unless you happen to be "hardwired" for it. As someone wrote there are a lot of developers coming out from an education which still has a lot to learn. That means you might need 3 years of education and 1-2 years of practical work experience to actually learn. Or you could start when you're 8 and do it by yourself for over 10 years. When you are 20 you probably knows a lot about programming or you will have stopped already. Try to explain to people wanting to learn how to code that it might take 3-5 years, then they can choose if this is something they want. Or sell simple 1 year courses but explain that they will only learn a small subset then.

Re: Why Learning to Code Is So Damn Hard

#246

When I was in college, one CS professor explained the difficulty of coding to me in terms of discreteness vs continuity. In the real world, things are continuous. If you accidentally build your structure with 9 supports instead of 10, then you only lose 10% of the strength of the structure, more or less. The strength varies continuously with the amount of support. But if you're writing a 10-line program and you forge…

> But if you're writing a 10-line program and you forget one of the lines (or even one character), the program isn't 10% wrong, it's 100% wrong. (For example, instead of compiling and running correctly, it doesn't compile at all. Completely different results.) This is where the beauty/simplicity of some programming languages, namely, intepreted languages (e.g., Python), comes in: if a bad line of code never gets exec…

> This is where the beauty/simplicity of some programming languages

Simplicity? Yes, probably (at least as long as I am writing the code and not debugging it). But definitely not beauty. I find this particular behaviour the ugliest part of interpreted languages. I may make a small typo, incorrectly capitalize variable name or forget a quote and nothing will tell me that my code is wrong or where exactly it is wrong - it will silently skip the error and happily show me wrong results.

Re: Why Learning to Code Is So Damn Hard

#247
post #230

Earlier quoted context omitted.

there are continuous programming languages out there - DNA is one such one i guess. But i don't think the discrete vs continuous nature of a programming language is what makes it difficult. It's more that a person's mind may not conceptualize tasks algorithmically, and to switch to this frame of mind is difficult for someone who isn't already in this frame of mind.

That's a good point. DNA as a programming language has to be at least somewhat continuous, or else evolution has nothing to optimize because every change has a random effect.

DNA is discrete. It can be precisely represented symbolically.

Re: Why Learning to Code Is So Damn Hard

#248
post #208

Great post. Something to add: This cycle not happened only once in a programmer life. IS RECURSIVE! Every time you start with a new language or tool or job, the cycle start again . But is added ANOTHER step: Overconfidence and blind arrogant OR indifference. This is revealed when somebody dismiss the new language/tool/programing job and because is more-or-less similar to previous knowledge and could learn the basics…

> Something to add: This cycle not happened only once in a programmer life. IS RECURSIVE!

I was going to say that this was nothing like my experience of learning to program, but it does quite accurately represent the process of adding new skills these days.

Re: Why Learning to Code Is So Damn Hard

#249
post #110

Earlier quoted context omitted.

I was 8 years old in 1970. My dad was working for NCR in Waltham, Mass. He'd bring home a honkin' huge teletype and an acoustic coupler on the weekends. I taught myself BASIC and got hooked on Hamurabi [0], my first computer game vice. How much paper did all of us go through back then? [0] http://en.wikipedia.org/wiki/Hamurabi

A lot of paper! Do you remember the first time you saw one of those newfangled "glass teletypes"? A terminal that printed out your typing and the mainframe's reply on a CRT instead of paper? Was your first thought anything like mine: "How do I look back at what I was working on a few minutes ago? There's no roll of paper piled up behind the machine! How do I see my printouts?"

Yes, I used a video display terminal for the first time in a computer lab full of strange gear at MIT 40 years ago. The computer had to have its initial boot loader loaded from a strip of perforated paper tape. The terminal had characters "drawn" by the crt tube's electron beam. If there were a lot of characters on the screen the first few lines would start to fade before the e-beam was able to back to the top of the screen. By keeping the overhead room lights off, we could see almost a full 24 lines of 40 character. It seemed so advanced compared to the punch cards that I'd used for years before. Those were the days!

Re: Why Learning to Code Is So Damn Hard

#250
post #118

Earlier quoted context omitted.

Wouldn't it be better to catch an error at compile time than throw an exception or have the app completely fail when a bad piece of code is run?

Depends on if you're trying to engineer fault-tolerant, robust systems, or trying to learn how to program.

Quite right. I was only mentioning it w.r.t. actual learning, not a more general use case. :/
Post reply on HN