Programming has a very low barrier to entry in the United States. You need a computer, not a particularly recent one, and time. I'm told that proficiency with English is also helpful (I speak English natively, so I can't comment on how helpful). Internet access can be had for free at libraries/schools to download tutorials and software.
I know several people who learned to program on scavenged 386s and 486s in the late 90s and early 2000s. These could be had for free from some places (they were being thrown away) or cheaply from a garage sale. You could get a copy of Linux to run on a 386/486 from a local users group or by downloading it slowly and putting it onto floppies at the library (assuming your begged/borrowed/scavenged machine didn't have a cd-rom). A copy of Red Hat Linux, SuSE, Slackware, Debian, FreeBSD, or Mandrake had everything necessary to teach you Python, Perl, Bash, Makefile, Emacs Lisp, or Awk in 2000 (tutorials, compilers/interpreters, intermediate documentation). If you could get net access, a whole other world was opened up.
This was my path, but I've met many others who progressed similarly. Scavenged hardware and addiction to the power instead of sports, dating, etc can pull you out of the trailer parks, high rises, or hoods. (Not that you couldn't do multiple things, but if you're poor in the states, you probably had to work from the time you were legally able and combined with school leaves little time left for multiple hobbies.) Other trades don't have such a low barrier, which practically means they are limited to those who can progress through a college path.