Well lets see. I started playing with computers when I was about 10 (1986/87) when my brothers convinced my parents to buy us a TRS80 (TRASH 80) from Radio Shack. A year or two after that we started using Apple II's at school. In middle school (age 13 to 15 (or so)) we used Apple IIc's and then Macs (Plus/SE) in Gr. 8. When I got to HS (15/16yrs old) we were a completely Mac school and I started out in my first HS computer class using old Mac 128/512s and Pluses. Gr. 10 programming was done on Mac SEs/Classics (16Mhz/20Mhz). Anyway by the time HS was over we were running Mac LC IIIs/475s (68040 Motorola Processors at 60Mhz and we had a few Pentium based systems for CAD etc in the tech wing). I had taken programming all through HS and was in the first year we actually had a Gr. 13 Computer Programming course (one of my fav courses of all time). When I started college I had a P133 and went in to Business IS. etc, etc....
I learnt to type through my programming classes, I almost failed Gr. 9 typing (damn I hate typewritters, electric or not).
Through this all the teachers bored the crap out of me and continually ticked me off with their lack of knowledge. I always knew more about hardware then them through reading and being part of the 'online' community (BBSs then the 'Net). I taught myself to program in Basic on my TRS80, then Pascal on a Mac, pascal on x86 in College, then C++, VC++, etc... Now I program in Java (JAVA RULES), and all my computer knowledge is essentially self taught from playing and reading. The best way to learn is to do, and the best way to do is to think up something you could use and build it from scratch. You can never learn to much and you can never read to much, the things you come across may not have any immediate application for you but almost always come back to you. All the information you need to learn to Hack/Program/Play is available in books and online.
To this day I can say without a doubt that I know more about hardware then 99.9% of the people I work with and consort with outside of work (all of whom are "computer" people), simply from my reading here. I do have to admit that there are those in the company that can program circles around me, but they're mostly the 'old timers' (ya know the ones who started with punch cards and Cobol).
To stay at the top of your game and ahead of the crowd all you have to do is read, and play. Don't "work" at computing, whether it be, programming or gaming, always make sure it's fun. Once it becomes "work" you are either in over your head or doing the wrong thing with your time. Whatever you do should always be fun and challenging.
Read Phrack, read 2600 newsletters, read anything amuzing you can get your hands on, etc.... not because you need to know how to hack this one particular thing right now, but because these guys come up with some kewl stuff, and because there is always (always) someone who knows more then you (see my sig).
People think you need lots of Math background in order to do programming etc.... This is complete BS as long as you can think Logically it barely matters whether or not you can add 1+1 because you can find advanced formulae etc... online, and make the computer do 98% of the work for u.
Sorry that was so long, I just wanted to get some of that out, and obviously stress that it's all about having fun and challenging ones self.
Thorin