I need to preface this by saying that I just turned 60 yesterday and got my first (official) job in 1973 as a field service tech working on equipment that used TTL. (Some of those 5v power supplies could double as arc welders.) I started programming in machine and assembly as the equipment I worked moved to micro-processors and have never looked back.
That said, I have to disagree somewhat with this statement by davido: "Nowadays the barrier to entry in programming is higher, I think, than it used to be."
My reason for doing so is that one can get a *nix box up and running for a relatively low cost, probably less than $150 or even lower. Such a box has a full-blown development environment that I would have killed for back in the day when I had to wire-wrap my first 8080 board.
Given the huge amount of information available for free today on the 'Net (remember how expensive it was to build a decent library?) I would argue that it is easier than ever before to learn how to program in any language one desires. Naturally, this only underscores the point that user groups (especially those for C and Perl) continue to play a vital role for those who wish to learn, either on their own or in a formal setting.
The short, simple answer to the OP question of where does one begin is the same as it was back then: Get your hands on a machine, read and play! (Then lie through your teeth to get that first gig and learn quickly enough to do the job that no one will care that you did so.)
On time, cheap, compliant with final specs. Pick two.
In reply to Re: Where does the new generation of programmers begin?