w3cschools was a great help during this time, but I would say that my biggest help was trial and error. You have to get a lot of things wrong before your finally understand how to do them right.
Once I learned PHP I wanted an easier way to display data, and started learning markup, XHTML, CSS, etc. I used w3cschools again for this.
I read a few books at that time (unfortunately, they were online, and I can not for the life of me remember what they were, apologies) to help improve my skills and began to study typography. This mainly involved searching google for web typography, experimenting in photoshop and then creating the styles as close as I could in CSS.
About 7 months ago I realised that I needed more depth, I was not content with mere web applications. I started learning .cpp, using the visual express 2010 tutorials provided with the download and then I started searching for (once again via google) simple code examples. My time with PHP had taught me simple class architecture so it was not as difficult to pick up as a beginner would find it.
As I expanded my knowledge I found that I could not find enough online material, so I started a local "computer club", where I could meet like minded people. Via Coursera (the online stanford cryptography class was fabulous) and the club I have since gained what I would consider an acceptable level of programming with .CPP (and Python, but that is a whole other story.)
Along the way, I also added javascript, mysql and xml, but I left these out due to their connection to web design.
Anyway, this is just the path I chose, I dare say it was unconventional, but it worked for me.
If you are looking for advice, all I will say is this: Google is your friend, MiTx will definitely help you to improve once you gain an acceptable skill and coursera's CS101 class would give you the basic knowledge required to continue.
Also, on an unrelated note, congratulations, I have read HN for a very long time now, and I signed up specifically to reply to your question :)
Although, I'm also building a blog for my girlfriend, as she is "sick of tumblr" (lame, I know, but she begged me >.< ) and will likely pop it on here in a few days once it's finished.
At the time, I didn't really know how to solve code problems, how to effectively use docs, or how to use a debugger -- which they taught me. A lot of times they let me build the wrong thing then show me how I could do it better (doing research, learning how cookies work, and reinventing the wheel with web authentication, for example).
'Twas an odd, makeshift apprenticeship program, but it was perfect for me. At the time I didn't realize how lucky I was (I don't think they did either), but I am very grateful to have stumbled upon the opportunity.
I took some "computer programming" class in high school, but computers were still new-fangled to the faculty and it was entirely self-directed. I used the time to make a game in assembly on the school's Model III. There were PC Jrs for a broader computer literacy class, but I never used those.
In college, I started as a physics major and hence learned Fortran. Dropped out for a couple of years, went back as a CS major. Then was exposed to many things; C, C++, Prolog, Ada. But Pascal was the workhorse of the curriculum.
First job out of college was C (legacy projects) and C++ (new projects). And Visual Basic for some quick and dirty things.
Worked as a programmer for a while. Stopped. Did something else for many years. The last year or so I've been retraining myself. Played with Erlang and Clojure, but nothing serious. Made a couple of toy Android apps with Java. Wrote some simple Atari 2600 things using an emulator. Working through an idea for a site with Python/Django at the moment.
I'd like to work as a programmer again, I think. Or more accurately, I really enjoy being able to build things.
I feel most at home in C++ still, but I find myself using Python to try out ideas more and more as time goes on. Assembly still makes me happy, but I don't really use it for anything.
Later I got a C compiler off a PC mag and dabbled with that, moved on to Delphi and then by the time the internet made an appearance in my household I began with the HTML and shortly afterwards Perl and then PHP. It was only at this point that I started learning "properly". I guess partly because it was time and partly because it was the first time I ever had some level of access to best practices, theory and whatnot.
Spent weeks grinding it out until I was finally comfortable writing code. I can tell you honestly that this experience has never left me and I've never been at a completely loss navigating through different languages since.
I never did find out what the last word was ^.^
I probably owe my interest in computers thanks to imdb and wikipedia
I even remember the name now, I called it indb (indie database), it didnt get very far