I've come to realize there's a lot hanging on the personality of each programmer.
If there's no hard work, you're only going to get a superficial knowledge of things, and that may prove insufficient in the long run.
I had a lot of trouble getting started with programming because I could not even see myself going anywhere without first getting the electronics right, and that ended up working on my favor in more ways than just an edge on the understanding of bitwise operations as I'd begin to learn assembly.
The math is also important. Don't fall for this "you don't need to be good at math to be become a good programmer" garbage. It just ain't true, your algorithms will stink and you'll end up doing a lot of things so inefficiently they may sometimes not work at all. The better the math, the better the programs.
A mere BASIC interpreter will give you enough of an idea about what programming is all about, and that can be very encouraging to people still beating around the bush, not knowing where to start and what to expect because it all seems so complicated from without.
If you get lost programming the alarm on a clock, if your math's not gotten any better since elementary school and you don't honestly have a genuine interest in knowing what makes computers tick at their most fundamental level, this tutorial will get you going in no time, but you'll first need a TRS-80 Model I Level I or an emulator such as TRS-32 plus the Level I rom.