Ask HN: How to Self-Learn Programming?

2 points by __e__ ↗ HN
I am self-learning programming for building web apps. Self-learning is not working. I am constantly switching from one language to another, Python to JS, or HTML, or CSS.

I don't have enough money and time to join any course or bootcamp.

Please give me some advice to self-learn programming.

8 comments

[ 3.0 ms ] story [ 24.8 ms ] thread
Reading articles, stack overflow, language spec. Doing my own lab. Reading others code. Talking with other programmers. Discussion boards. IRC. But most importantly: working on real projects.
"I don't have enough money and time to join any course or bootcamp." If you don't have time / money how do you expect to learn? There's freecodecamp, udemy, MDN. Start a side project or join an open source project and complete tasks in those projects. You are focused more on the act of learning, and less on the doing of the things you want to learn. Learn by doing. Go make a crappy web project on github and link it to a netlify domain. Takes 10 minutes. Then do it again and again, getting better each time. Go on fiverr and take on some simple HTML projects.
Have a deadline, say, 3 months. Choose one language (no framework). Have one project (a bookstore system, for example).

Read official documentation/tutorials as you develop.

You may not like the language. You may not like the project. But finish the job with the tools you chose.

>> You may not like the language. You may not like the project. But finish the job with the tools you chose. <<

Real-life life lesson right there.

start building something simple e.g. website ripper choose any stack. it doesnt matter.

important thing to understand is - webapp are becoming more complex these days. so getting whole picture will take some time.

you can try below simple project too.

1. build library project using python. take name of books as input and add/delete/update/list in database like mysql.

2. now build new database to add/delete/update/list name of students

3. then add relationships to manage books borrowed by students

4. do same thing using web. take input from webforms and store in mysql. retrieve them again. for backend you can try flask framework.

Find a problem you want to solve.

Solve the problem.

Very concise and to the point. My effort is quite a bit more verbose:

Get yourself a project. Any project, but preferably not too minor. Write that project in your new language. Many times while doing that, you will need to do a few days or more of solid studying of the new language to get yourself past a hurdle that's blocking your progress.

Eventually, you will complete the project. Now, throw that one away. It was just to 'show you the ropes'. (That's commonly said as "Build one to throw away.") Now do that project again with your new, greater, basis of knowledge.

Repeat that with several projects. You now have a fair level of self-taught programming in that one language.

Repeat that process again but using a different language. There will be hurdles again, but different hurdles.

Now you know programming to a reasonable level.

Rinse, repeat. Rinse, repeat. Rinse, repeat.

learn the way the internet learned, first look at html. learn how the language works, then start "reading html and practice understanding it. then go for JS , then CSS. Here is a catchall of sorts where all 3 and more! are discussed:

https://developer.mozilla.org/en-US/docs/Learn/Getting_start...

i suggest find someplaces like this to retrieve some skeletons so you can see simplicity then learn to flesh it up, start small just make a page that says hello world, and displays a kitten pic , or some such thing:

https://linuxwebdevelopment.com/html5-boilerplate/

how you learn is important top down or bottum up. do you look at the big picture grand scheme and dissect it to find what parts make it up? or do you look at fundamental pieces, and examine how they relate to each other and function as a group?

here is a place to experiment with JS script so you can edit a snippet and see how things change:

https://jsfiddle.net/boilerplate/react-jsx/

keep in mind there are many flavours of java, but basically its a programme sitting inside the html.

CSS can be confusing to read if you have no context for it.

https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduct...

basically CSS is a way of enforcing a certain look or layout but there are some cool tricks that can do things like animations, or changing fonts formats and images according to some event in the browser.

frameworks come up, this is a not basic aspect