Hacker News new | past | comments | ask | show | jobs | submit login

We're teaching recipes, when really we should be teaching self-sufficiency.

Too many new learners are stuck unable to make the leap out of the browser based IDE and into running their own code locally on a machine or on a server.

I am a self-taught programmer. I see what people in this thread are getting at, and I believe I stumbled my way into that realm of knowledge by accident.

Learning multiple languages (of different paradigms) led me to implement code in one language to one in another. Even though the first set may have been heavily based on some tutorial, when translating my own code, I had to be able to reason about it, break it apart, and re-compose it.

This line of thought helped make me more capable of talking about and thinking through my code as an idea, where the implementation was just an exercise.

If anyone else is teaching themselves, I would advise the following:

+ Learn a high-level OOP language

+ Learn a high-level functional language

+ Translate programs between the two, focusing on really working with the respective paradigm.

+ Move on to something lower level. Many people will say go with C to learn manual memory management. I found Rust interesting, if not difficult at first. Up to you, just seek lower-level understanding.

+ Learn an assembler, fake or real. Shenzhen I/O and Human Resource Machine are good introductions to this.

+ Build skills in your languages through katas. Learn to think and write in a language with minimal reference. This is simple, persistent, repetitive practice.

+ Read about a discrete math you find interesting. You will likely not be as strong at math as educated people. Discrete maths can help at least give you some good flair.

+ Seek constant review from peers.

+ Don't always agree with peers. Find ways to defend your viewpoint. Good arguments- not "Java sucks." Be able to say why you have the right idea.

+ Learn simple circuits. They help you think atomically. There are even sites that have virtual breadboards so that you can experiment and learn for free.

Recipes can work, but they are just the first step. Learning how to "remix" a recipe and make it your own is the next. It's a long journey, for sure. I would agree that online resources that are the most visible are generally very entry-level and hand-holdy. I would also add that there is a vast amount of deep knowledge freely available for those wishing to go further.

I relate to this so hard--about two years elapsed between when I "learned" Javascript on Codecademy and when I first used it in a real project. These courses teach you syntax, and do a pretty shit job at even that.

Author of the paper being discussed here. Re: self-sufficiency, our evidence agrees. You might be interested in this paper from my lab, which successfully attempts to teach self-regulation skills to novices:

Loksa, D., Ko, A. J., Jernigan, W., Oleson, A., Mendez, C. J., & Burnett, M. M. (2016, May). Programming, problem solving, and self-awareness: effects of explicit guidance. In Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems (pp. 1449-1461). ACM. http://faculty.washington.edu/ajko/papers/Loksa2016Programmi...

Andy Ko Associate Professor University of Washington http://faculty.washington.edu/ajko

Thanks for the link I'm just reading your paper now, using Cloud9 IDE is an interesting choice which I am not sure is beneficial to the learners..

I think self-sufficiency should include building a local environment you can work work in without having to rely on some SAAS / Cloud service based IDE.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact