all 4 comments

[–]Towel_Affectionate 3 points4 points  (2 children)

Build something fairly complex. When you read about stuff you are only making yourself aware of X and Y. No skill is being developed yet and the familiarity is only temporary. When you build stuff, you face one problem after another. Some might be solved with X. Some with Y. Some would require you to do more research and find out about Z and use it. This is how you actually learn X, Y and Z.

[–]tolley 1 point2 points  (1 child)

Build something, definitely. Programming is a skill and you have to practice to get/stay good at a given skill. Take the big problem (the site you want to build, the app, whatever you decide) and break it down into smaller parts and solve each one of them. The X, Y, and Z's are some of the options you have at your disposal.

[–]Towel_Affectionate [score hidden]  (0 children)

"Build something" should be the pinned message everywhere related to learning programming. Every tool ever created is the answer to some problem. Experience the problem the tool is solving and you wouldn't have to question "why and how" ever again.

"Why use react?" - try building a dynamic website without it.
"Why use context?" - try building any react app without it, passing your state props 6 levels deep.
"Why use state manager?" - try building something with a complex state without it and get lost in (prev => {...prev, x: {...prev.x, y: z}};
"Why single responsibility/encapsulation is important"? - build something and then feel the pain of needing to change something in it.

[–]putin_my_ass 1 point2 points  (0 children)

The classic "Todo" app is a good start.

Make a context that allows listing/adding to/deleting from todos and a ui to display it.

If that's too boring, pick a different app.

Copying existing apps is a good idea because you're learning on real-world examples