Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Laya the open source version of Jev(convaiinnovations.com ↗)
    130comments
  2. A graphical desktop for the ZX Spectrum(github.com/mindbox77 ↗)
    44comments
  3. Tin: full-text search for Postgres(planetscale.com ↗)
    33comments
  4. AI-generated posters don’t have to be horrible(john.hartnup.uk ↗)
    441comments
  5. Human brain is two separate organs, Stanford Medicine-led research finds(stanford.edu ↗)
    179comments
  6. “The Secret Life of Circuits” is here(coredump.cx ↗)
    51comments
  7. Black Holes or Black Hole Stars? Astronomers Spar over 'Little Red Dots'(quantamagazine.org ↗)
    11comments
  8. Android 17 is the first since 3.x to add new APIs without releasing to the AOSP(grapheneos.social ↗)
    546comments
  9. Asking Authors About Their Own Papers(medium.com/tmlrorg ↗)
    31comments
  10. Agreement between the USA and Denmark (1951,2004) [pdf](state.gov ↗)
    7comments
  11. I built the fastest PHP webserver in the world(qbixserver.com ↗)
    23comments
  12. San Francisco Onion Futures Company(onionfutures.com ↗)
    111comments
  13. New evidence for hidden chambers beyond Tutankhamun's tomb(nature.com ↗)
    3comments
  14. GPT-6 Astra Solves a WWI German Radio Cipher(prinzai.com ↗)
    131comments
  15. If math is more than proof, we need to better celebrate the rest of it(terrytao.wordpress.com ↗)
    187comments
  16. What Zig felt like, coming from Rust(besok.github.io ↗)
    103comments
  17. Cloudflare Quick Tunnels(cloudflare.com ↗)
    301comments
  18. Learning Another Language May Be One of the Best Ways to Keep Your Brain Healthy(theconversation.com ↗)
    38comments
  19. How to Write with an LLM(sockpuppet.org ↗)
    360comments
  20. You can run Git on object storage if you re-make packfiles(tigrisdata.com ↗)
    24comments
  21. Communication by means of modulated Johnson noise(pnas.org ↗)
    18comments
  22. Saving another 100TB of RAM(cloudflare.com ↗)
    89comments
  23. SDCC – Small Device C Compiler(sourceforge.net ↗)
    23comments
  24. Science Is Open Software(jepedersen.dk ↗)
    50comments
  25. Ray Ozzie and the Optimism of Being Early(reproof.app ↗)
    10comments
  26. Why building a Rust LSP is hard(rust-glancer.github.io ↗)
    44comments
  27. From Stonemasons to Carpenters(thelastsoftwareengineer.substack.com ↗)
    4comments
  28. Ctenophores: Wonders of Biology(quantamagazine.org ↗)
    7comments
  29. OpenJev(openjev.com ↗)
    278comments
  30. The first new cat species discovered in 100 years(nationalgeographic.com ↗)
    122comments

Why is Learning to Code So Hard?

23 pointsby 13y agostartuprob.com
28 comments
13y agoHN ↗

Why is learning to be an architect hard? Why is learning to be a lawyer hard?

Because it's f*cking complicated!!!

13y agoHN ↗

Right!! Why do so many people think everything should be easy?

Oh, I know why - their "self-esteem" has been carefully protected from reality throughout the years they spent being indoctrinated in the state school system.

13y agoHN ↗

For the same reasons that many people find learning mathematics so hard: it requires abstract thinking and the ability to layer abstractions on top of one another.

I think anyone can learn to code, or learn maths, but there's no doubt that some folks are MUCH better predisposed to it. That said, some good tips in the article.

13y agoHN ↗

Came here to say exactly this. The answer is quite obvious, but somehow the question still pops up from time to time.

13y agoHN ↗

I found learning to code easier than learning to write in my native language. I think some people are just better suited to some subjects.

That said, I never did enjoy writing but always enjoyed programming, so I think an earlier commenter hit the nail on the head when he said it's down to having enough interest in a subject to learn things properly: http://news.ycombinator.com/item?id=4933004

13y agoHN ↗

Conversations about "learning to code" frighten me because they overlook a necessary foundation in engineering concepts like abstraction and the value of simplicity. If you're looking to hire software developers, stop interviewing "coders".

13y agoHN ↗

Truth be told!

I dropped out of college to learn to program, thought I could teach myself everything. The issue is that tutorials and books gloss over the theory.

It wasn't until I returned to college for a CS degree that my eyes were opened to what I was missing.

Why is this algorithm better than that algorithm? BigO... What does the compiler do with my code? PL... How does the code I write interact with the OS? What is concurrent vs parallel? amdahl's law...

why can for i ... for j... be better than for j for i

pass by value vs pass by reference which languages, when...

How many people use languages these days that require them to manage memory themselves?

Coding is hard because coders don't learn the theory of computing and the abstract concepts that extend beyond any particular language.

EOR.

13y agoHN ↗

The essay doesn't say when those experienced programmers started learning to code.

13y agoHN ↗

I tend to be a bit of an evangelist in whatever endeavor I'm currently engaged. I'm a big mouth. There, I said it. With that out of the way, this tends to put me in the teacher's seat once someone says, "Ok, Brad, show me what's so cool about this thing you're always talking about."

What I've observed is that there are two types of learners. One set of learners starts from a set of instructions. These instruction sets are simple, enumerated lists. The learner executes the steps and looks at the outcome. As they advance, they might begin to explore deviations in the steps. Reasoning like, "What happens if I swap steps 2 and 3?"

The other type of learner cares less about the steps and more about the concepts behind the steps. They begin by asking, "Why do I do step 1" or "How does step 1 work?"

Everyone I've taken under my wing who engages in the enumerated list approach hits a wall at some point. When the complexity of the enumerated list extends beyond their ability to tweak inputs, they become frustrated, and ultimately give up.

The latter group tends to get further, but it's not a free pass to stardom. Many still hit a conceptual complexity wall where they fail to grasp some of the more abstract concepts.

The former group far outnumber the latter, in my experience. I'd posit that what makes learning to code so hard is that it is more accessible to a means of learning that fewer people possess.

13y agoHN ↗

I think he hit upon the main point at the very end. If you wanna' learn something, and I mean really learn it, you've gotta' be invested in it - and there's no better way to do that then building your own projects. Saying I want to learn to code, and having to learn to code to see your idea come alive are two different animals of motivation.

13y agoHN ↗

"Too many developers want to stay in their comfort zone."

Too few employers are willing to pay for learning and evaluation.

13y agoHN ↗

Sudden leap in difficulty – Nearly everyone noted that at some point in their learning they stumbled upon a sudden leap in difficulty that crippled their ability to grasp the follow-on concepts

I have hit this in every subject I've studied where I wasn't really motivated to learn the material. The reason this happens is that you reach a point where suddenly all the basic concepts start supporting the follow-ons. If you never really learned the basics, you will be lost. For example this happened to me with foreign languages. I had no real interest in learning French, but a foreign language was required in school. The first year was easy: basic vocabulary, stock phrases, and simple rules of grammar. The second year was not too bad either. But I never really learned anything... I would cram before exams and get decent scores, then promptly forget the material. Third year, when you actually had to put it all together... I was sunk.

If you're studying something, and can't motivate yourself to really learn the basics, you can only go so far. If you're studying computer science because you heard the jobs pay well, but you don't really care about learning the first and second material, you will hit that "leap of difficulty" at some point.

13y agoHN ↗

Coding requires effort, which is acquired like any other skill such as reading/comprehension. Many people try to run before they even learn to walk and this is when the sudden leap in difficulty is encountered. It took me years( read - coding time and effort) to move from novice to an intermediate programmer and this occurs each time you want to move up on your skill level. You need to commit effort, and no doubt you are going to fail before you succeed. Pair programming, code reviews , mentoring etc ...appropriate to your own individual learning ability is paramount for success.

I personally found: 1. Code imitation - coupled with understanding 2. Code reviews - of a next level programmer 3. Blogging/Q & A(Stackoverflow sort) 4. CONFIDENCE as important in becoming a better programmer.

13y agoHN ↗

Why is learning to read and write so hard? It seems natural to you now, but when you were in 1st grade, it was a pretty big challenge...It's not that it's "hard" or "easy" - the most interesting thing is that you chose to do it. Maybe a better question is "Why don't more people choose to learn coding?".

13y agoHN ↗

I found that I underestimated how hard it was for me in the beginning.

I had to learn C in university and I applied for BA first and thought coding is for monkeys (What an arrogant prick I was...). I hated it, I didn't understand anything first but I struggled trough. At some point it made "click" and I loved it ever since.

The funny thing is, afterwards I was biased in believing coding is easy and it has been for me from the beginning. It took me a while to realize how hard it was for me to start.

Anybody here with a similar experience?

13y agoHN ↗

Why do we think that coding is at all unique in this regard? Have you looked through your standard fare cook book? The leaps from step to step are sometimes astounding. Yet folks are usually able to pick that up. Same for sewing. Show me the typical sewing pattern and it looks like someone dropped some lines somewhere. How is anyone able to learn that?

13y agoHN ↗

It never ceases to amaze me that the IF..THEN..ELSE concept seems to be beyond the ability of my wife to comprehend, but she can do things with knitting needles that are far more complex. She once tried to explain a "simple" knitting concept and all I could do is nod and realize that this is what she feels like while looking at a computer screen.

13y agoHN ↗

The thing I notice about people who are frustrated about how difficult it is to code is that they don't give themselves enough time. Learning how to code, like any good craft, takes time and that's something most people cannot understand because of all the flashy and motivating books and tutorials out there. "Learn Ruby on Rails in 24 hours blablabla". I would say 3 years is a good start for the total beginner.

13y agoHN ↗

Learning to code is hard, and everyone's specific struggle is unique. The key issue though is why do they fail to learn, and that answer is the same for everyone that fails: they give up.

All kinds of mental talents can be helpful for learning to code, but tenacity is probably the most important. Better learning materials can be great, and they're getting better all the time, but they are still no substitute to an unshakable commitment to being a developer.

For my 12th birthday in about 1980, my grandparents heard I liked computers and bought me a college level textbook on microprocessors. I didn't understand a word of it when I first read it really. But I did read it, and re-read it, for a couple of years. And it's one of the key reasons I wasn't afraid of doing assembly language a while later when I got my first computer. The book was a terrible way to learn, and it was completely at the wrong skill level for me. But I was really into it and made up for my lack of capability with a tremendous commitment and huge amount of time, slurping up every bit of information on computers I could find.

You've only lost when you quit fighting.

13y agoHN ↗

This is an incredible answer - persistence is absolutely key. What I'm exploring is how to make persistence efficient. How can we make it so that people don't have to spend that horribly inefficient time reading a textbook like that?

13y agoHN ↗

Because it should be.

That's actually not the correct answer. For most developers, it's not hard. Not only is it not hard, it's a joy to learn a language, or two, or eight. If this is a struggle, perhaps this is a barometer that you're on the wrong path.

I'm not saying coding should be limited to the elite. If you want to learn code because there's something burning inside of you, that's awesome. However, I'm thinking of the MBA founder who decided the startup thing was the ticket. They discover they need a developer, and that's expensive.

"Hey, this can't be that hard! I'll just learn to code!" I see this movement, and it's scary. Not scary because it's a threat to me. Scary because I'm a decent developer (been doing it sine 1998), and there's a lot of mean scary people who are smarter than me who want to break into code I've written. I can't imagine how insecure code from someone who wrote their first line 6 months ago. Learning is cool, we were all there. The idea that production apps are being launched based on this experience level definitely isn't cool. I might be totally off base here, but I feel like this is a rising trend. Crackers are going to have a field day with all the superduper.ly's out there.

It takes 3-5 years to get a marketing or management degree. Anyone who thinks they are going to learn to code in 3 months and build the next Instagram is so delusioned they make the most southern Baptist church look like a center for logical discourse.

13y agoHN ↗

I think part of it is trying to learn the wrong thing. I am self-taught and still struggle, but I found one big breakthrough came from returning to principles.

A lot of people who want to learn to code jump into a language and as soon as they finish "Hello World", they go headlong into a full scale project. This is the main culprit behind the unhelpful "help" sections alluded to in the article. If you don't understand the basics, that inevitable bump in difficulty becomes insurmountable. It wasn't until after I went back and figured out basic algorithms, how to properly use and test with an IDE and other little, less "sexy" details that learning to code became manageable.

13y agoHN ↗

Some people find it hard because they are not interested enough to really take the time to understand it.

Others just don't have the mind for it, like how some don't have the body to dance or play sports at a professional level.

There are, indeed, some concepts that come naturally to only a handful of people (kernel development is hard for me; interesting, but hard), but I think the fundamentals are pretty easy to grasp for most of the mainstream languages.

Some concepts are just plain

13y agoHN ↗

Thanks for the great post.

You mentioned to contact you if anyone is interested in mentoring/being mentored but I couldn't find any email on your blog except the one for makersacademy...which is for something else?

13y agoHN ↗

Having a meaningful and interesting project to complete that can also grow with you helps a lot. I was fortunate enough to be paid as well.

When you need to get something done to complete the job it's a lot easier to force yourself to concentrate and learn. I can imagine if I didn't have that motivator I'd be too tempted to just leave features out if they were too difficult.

13y agoHN ↗

It's still hard, but it's getting easier. The open source movement and free resources like Github, EdX, Coursera, etc. are all making it much easier. The information is all out there on the internet and most of it is free. It's a matter of setting aside the time and digging into it.

I'm not a good programmer by anyone's standard yet, but I'm reaching the point where it's becoming a serious hobby for me. I audited my way through the first couple computer science courses (in Java) offered by my university, which posts all the lecture slides and homework online. Then I worked through the university's web programming course while I wrote an ad-hoc reporting web app for my employer in PHP. I just finished the two edX courses in Ruby on Rails and am writing a Rails app in my free time for practice. Now I am starting an iOS development course to learn Obj-C and the iOS SDK. Also planning to take online courses about databases, algorithms, and security soon. I have a LOT left to learn, but that's part of what motivates me.

Point is, though, if you want to learn programming, there has never been a better time. The availability of free and inexpensive learning resources is greater than it has ever been. As long as you invest the time and approach it with curiosity, determination, and patience, you will learn it.