I’ve always learned by doing.
a) I have a need or desire.
b) I identify a language that I think will get me there.
c) I get a compiler and learn the basic steps from start to finish that take me from code to final product.
d) I find short complete programs to do some basic things that will lead me to my goal.
e) I copy and paste them in. Compile them, run them, try to make sense of what the language is saying.
f) Once I know the whole process from start to finish, THEN I start piecing together bits of code other people wrote to accomplish what my need/desire is.
The difference between d and f is:
With d, I want to understand the process of using the software and getting some quick satisfaction that “Hey, this works!”
That REALLY goes far. Confidence boosting is a big part of programming, unless you’re a masochist and enjoy suffering incessantly before getting any kind of result.
With f, I’m actually working towards my goal.
I learn the language as I need to.
When you consider that a LOT OF CODE is already out there, the likelihood of you NEEDING to “write from scratch” is really small.
It’s important to UNDERSTAND it all, but to make it function usably, you don’t have to write it from scratch, at least not at first.
From there, you build upon your small victories to greater and greater ones.
At some point, you’ll want to try writing from scratch. Once you’re comfortable with the easier successes, you’ll ‘get the bug in you’ and WANT to learn from scratch for its own sake.
But you don’t always even have to get to THAT point if you don’t want to.
At the same time, I enjoy the theoretical. I like understanding the strengths and weaknesses of a language. None of them are perfect. None of them. Some are general purpose and can do a lot. Some are more specific in their purpose.
At one time, long ago, i would’ve recommended some form of BASIC to start with. [it’s what I learned on so of course it was a favorite. Yes, line numbers and everything ]
But now, I tend to recommend that people start with Python.
I’ve never mastered Python myself enough to write raw in it, but I’ve fiddled and can read it just fine. I found a thing that does a mock Raspberry Pi Minecraft on the PC which allows people to use Python code in Minecraft just like the Raspberry Pi people can with their Minecraft.
Followed a similar procedure to what I said above.
I made it do a few things. Understood it to my satisfaction, enough that if someone said, “MAKE MINECRAFT DO [x] USING PYTHON”, i’d find a way to do it and feel comfortable at it, but not enough to write it raw yet.
You can also sit back and watch for a bit to get a “feel” for things. One of the reasons why “Let’s plays” are popular on Youtube is that you can live vicariously through the people playing. The same thing works when learning programming.
You watch it, get a feel for ambiance of the language. A good instructor will make you feel at ease even if you don’t follow along at first.
Then when you feel “Hey, I can handle this!” then move over to the tutorial that people recommend (or use the Youtube videos as they instruct you if that works for you).
Everybody’s learning style is different. The reason why I recommend easing yourself into it is because too many people spent aimless months learning a language, getting caught up in the minutae and in the end tossing it all aside because they felt they were fighting an uphill battle against a force greater than them.
You need to feel in control at all times. Confident.
Here’s some playlists: