
Ask HN: How to Self-Learn Programming? - __e__
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.<p>I don&#x27;t have enough money and time to join any course or bootcamp.<p>Please give me some advice to self-learn programming.
======
triptych
"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.

------
rolph
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...](https://developer.mozilla.org/en-
US/docs/Learn/Getting_started_with_the_web)

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/](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/](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...](https://developer.mozilla.org/en-
US/docs/Learn/CSS/Introduction_to_CSS)

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

------
silasdb
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.

~~~
gjvc
>> 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.

------
croh
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.

------
z3t4
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.

------
thanatos519
Find a problem you want to solve.

Solve the problem.

~~~
simonblack
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.

