Live data from Hacker News

Why Learning to Code Is So Damn Hard

vikingcodeschool.com

171–180 of 270 posts

Re: Why Learning to Code Is So Damn Hard

#171

I was never told learning to code was hard. I never found it hard. I found it fun. I was introduced in 8th grade by a friend who brought a listing to school of a small program he wrote in BASIC and it took off from there. I didn't have all the resources of the internet to help (this was 1980) Like the article mentions there's just a ton to learn. 6 months of Code Academy will help you learn basic stuff, variables, lo…

That's because you, like all of us that learned in the 80s, were very, very lucky. We started in a world where writing good, production code and learning the very simple basics of programming were the same thing. I started with a ZX Spectrum. You could use simple machine code, or simple basic. Libraries? What are those? The one barrier to get good was when you ran out of memory, and had to switch to machine code and learn memory saving techniques, but by then, you were as ready as anyone.

I compare it to wha we do today: My code uses libraries, that use libraries, that use libraries. Languages are huge in comparison. Sure, it's easier to do what we used to do 20 years ago, but nobody expects from us what we did then: Even someone that is just learning wants to do more. This is what builds the despair phase of the article.

It's a well known issue that both affects how we train new people and how we even manage large pieces of software today, so it's well talked about. For instance, the first talk of JSRemoteConf last night was all about this issue. Hopefully they make the recordings openly available soon.

Re: Why Learning to Code Is So Damn Hard

#172

Earlier quoted context omitted.

If you rely on your compiler to tell you that your code is correct, there are whole classes of bugs that are waiting to surprise you in production. I think that many years of developing large applications in Perl were really good for me. Perl is compiled when you run it, so you get the basic-syntax check that you get with other languages. But it's also very lenient, so you learn through experience to get your logic r…

There is a difference from RELY on compile to catch 100% of bugs, vs having an awesome type system that can take whole CLASSES of bugs and make them impossible to get past a compile. Is a statically typed language more likely than a dynamic language to work correctly in production, if both have 0 tests? Yes. Is either ideal? No. Can both be improved by adding a few tests? Yes.

I agree with you on all points, but the parent sounded like he was relying on the compile-time checks to determine correctness. I was making the point that that is a bad idea.

Re: Why Learning to Code Is So Damn Hard

#173
post #161

Here's where I disagree with other people - software development is special in that it requires focus, relentlessness, intelligence, creativity and I also find it interesting that many software developers tend to suffer conditions from the autistic spectrum. To me that's a clear sign that software development requires the mind to be hardwired in a certain way. And the thing is - I never needed handholding, which is w…

I don't really agree on the hard-wiring. I do think programming is more of a mind based pursuit rather than a socially based pursuit though. "Autistic" tendencies are for the most part due to lack of experience or disinterest in social aspects rather than from actual neurological hardwiring preventing you from picking up and acting on social cues. Other pursuits that are so interesting that the social factor isn't re…

Given that autism is a mental condition characterized by difficulty in communicating and forming relationships with others, involving an atypical brain development for some reason or another, I believe that this is evidence enough that social skills or lack thereof are influenced very much by the brain. We really shouldn't place so much faith in free will :-)

On mathematics and physics - if you'll notice, they share common traits that go beyond the lack of social interaction. Creativity is also required (well, not if you think about math or physics as learned in school), focus and juggling with abstractions as well. In fact mathematics is even more extreme, because with software development one usually gets much faster feedback from normal people. And it's not like you see mathematicians and physicists everywhere.

Re: Why Learning to Code Is So Damn Hard

#174

Here's where I disagree with other people - software development is special in that it requires focus, relentlessness, intelligence, creativity and I also find it interesting that many software developers tend to suffer conditions from the autistic spectrum. To me that's a clear sign that software development requires the mind to be hardwired in a certain way. And the thing is - I never needed handholding, which is w…

> Here's where I disagree with other people - software development is special in that it requires focus, relentlessness, intelligence, creativity and I also find it interesting that many software developers tend to suffer conditions from the autistic spectrum. To me that's a clear sign that software development requires the mind to be hardwired in a certain way.

I agree, and I don't think it's a good thing. As Crockford once said, we chose software because there's something wrong with us.

Re: Why Learning to Code Is So Damn Hard

#175
post #8

For me, by far the hardest part was finding the time. Learning to code on nights and weekends, when you've spent your most productive and focused hours at your job, is a nightmare. It wasn't until I was actually hired as a dev that I started to hit a steep learning curve, and I attribute much of that to spending 50 of my best hours/week coding, rather than maybe 20 of my worst.

I have the same issue. I've set aside 10pm-2am every weekday to learn how to code, plus entire Saturdays and Sunday mornings. I can, at most, manage 20-25 hours, usually when I'm already bogged down. I've been toying with the idea of quitting everything and going all-in for 3-6 months. Would that be 100% retarded or just about 70% retarded? I can live with 70%.

>Would that be 100% retarded or just about 70% retarded?

I'll go with "less than 70%". Or at least I hope, because that's what I did.

Coming from a Economics background (with a minor in Statistics), I took a job as a "data analyst" at a software company out of University. It was fun, but I relied on working with a programmer to get even basic things done.

Then came the "Data Science" wave. I thought, this is right up my alley! Except I needed to learn to program. I tried doing the tutorials and academies online, but was continuously stuck in the hand-holding stage. So I did the opposite of what is often recommended around here: I quit my job and enrolled in a 2 year Computer Programming course at a college. I'll be finishing up this spring. The enforced, formal structure and discipline has been a boon.

I feel great about having done it. I still feel pretty green, but I'm probably somewhere in the middle of the "desert" now. I credit school with having got me that far.

Re: Why Learning to Code Is So Damn Hard

#177

Here's where I disagree with other people - software development is special in that it requires focus, relentlessness, intelligence, creativity and I also find it interesting that many software developers tend to suffer conditions from the autistic spectrum. To me that's a clear sign that software development requires the mind to be hardwired in a certain way. And the thing is - I never needed handholding, which is w…

> Here's where I disagree with other people - software development is special in that it requires focus, relentlessness, intelligence, creativity and I also find it interesting that many software developers tend to suffer conditions from the autistic spectrum. To me that's a clear sign that software development requires the mind to be hardwired in a certain way. I agree, and I don't think it's a good thing. As Crockf…

I don't think it's a good thing either.

I also find the spread of autism terrifying. My wife works at a kindergarten and she has had to deal with children that have problems from the autistic spectrum, healthy enough to be allowed to integrate in a normal collectivity, problematic enough that adjustment is very hard - they simply stand out from everybody else. And she noticed an interesting pattern, those children usually come from families of engineers, mathematicians or software developers.

And maybe the sample is not representative of the general population, but it scares the bejesus out of me, especially since we have a son that is happy, loving, socially apt, smart and healthy, but that was a late talker and at 4 years old he still does mispronunciation for many words - this is another recent trend.

I have read a book at some point, can't remember the title, but especially in boys you have brain parts specialized for certain tasks and this happens when you've got certain parts of the brain underdeveloped, with maybe other parts overdeveloped. It usually goes away, once the child grows. Maybe this is just an evolutionary step, or maybe we are broken, I don't know.

Re: Why Learning to Code Is So Damn Hard

#178

Earlier quoted context omitted.

I think we're way past the point where mindlessly playing around and idle curiosity can reliably teach someone how to program. That might get them interested in programming, but it's one thing to print something to a terminal or change the text on an exiting page; it's quite something else to get a GUI app going or deploy Rails to a server. And GUI/web is pretty bare-minimum when it comes to keeping people interested…

It's funny you use walking as an example. I never told my son to "just walk" but I may as well have. No one taught him, he never asked how. It just never occurred to him that there was any option but to keep trying until it works. As far as I know everyone learns to walk this way. In my generation and before it, most of us learned coding the same way. (And self esteem for that matter.) Even if you do have the luxury…

You taught your son to walk by walking. He learned to walk because everyone around him was walking. That's undeniably the best way to learn: being in an immersive environment. That's akin to going to hacker school.

What I'm saying is 'just write something' doesn't help people who would ask the question 'how do I learn programming', It helps the people who ask 'how do I get better at programming'. You get better at walking by walking more. You get better at coding by coding more. You start walking by learning it from someone else, or by using something to pull yourself up (like a chair or a table leg). You learn programming by asking how and following their advice.

Your son didn't ask how to walk because he didn't know the question. Beginners don't ask how to deploy because they don't know what deploy means. "Just code" doesn't answer the problem of "how do I write a GUI app". It makes it seem like it's so easy that you shouldn't have to ask. And since you don't know the answer and no one will tell you, programming must be hard, or you must be stupid. That's what a teacher or a mentor offers. Advice. Not glib remarks.

Re: Why Learning to Code Is So Damn Hard

#179

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…

With respect to your CS prof at one of my favorite places (Go Cavaliers!), this is not an issue of discrete vs. continuous. If your structure can have either 9 or 10, but not 9.001, supports, it is discrete, not continuous, regardless of failure mode. And remove one of the 3 legs of your stool, and you probably wouldn't have 2/3rds of its support remaining, but whether you did or didn't would be an issue of proportionality, not continuity.

There are a lot of jumbled concepts here, most of which don't matter anyway, because what you are talking about is the phenomenon of graceful degradation. In the physical world, both natural and man-made, almost nothing at the macro scale is ever perfect, so the best designs tend to be those that remain good enough under the widest range of circumstances vs. a more common software goal of being perfect under perfectly controlled circumstances.

As software gradually moves out from the wall garden of a single mainframe to fill the world with interacting systems spanning diverse machines, sensors, communications channels, data types, etc., design for graceful degradation becomes more and more of a focus for professional software architects.

Coding in the gracefully degrading way is much harder than coding in the "if even one of your ten lines is wrong, you crash" tradition. The fact that even the latter is so hard for us humans means we will need more and more help from machines that learn what to do without being explicitly told by us.

Re: Why Learning to Code Is So Damn Hard

#180

Earlier quoted context omitted.

That is absolutely something that irritates me. I've just inherited a large RoR application, and the amount of "magic" and things by convention is driving me crazy. There should be answers to questions like "why is this the way it is?!" On a side note, if anyone has some great resources for RoR, I'd love to have them linked. I suspect my inexperience is the source of my problems, and I'm welcome to any assistance any…

The guides on the ror website are pretty good: http://guides.rubyonrails.org/ Which bits did you find were magic? The bits of convention I can think of you'd have to know about are: DB naming conventions - these are used so that it can do joins etc easily behind the scenes, they're pretty simple so not a huge problem I find. Rendering at the end of controller actions - it'll render the template with the same path as…

When learning Rails, I found the DB naming conventions confusing enough that I wrote a blog post summarizing how everything is supposed to be named when I figured it out, since nobody else seems to have:

https://shinynuggetsofcode.wordpress.com/2013/09/30/conventi...

Like a lot of the Rails stuff, it feels like amazing cool magic when things just work. But then when they don't work and do something weird instead of what you expected, it feels like it takes forever to figure out why, what was named wrong, and what it's supposed to be named.

Post reply on HN