Bill,
In real terms I probably went about learning a different way to most.
I'm a web designer (self employed) and to increase functionality started to offer various add-ons like guestbooks and mailing lists to my clients, collecting scripts which fitted my needs from various repositories around the net. The early ones were all cgi scripts, but I gradually started collecting a number of php scripts too (once I got my own server).
Trying to find simplistic scripts that did exactly what I wanted them to do without too much intervention was the first battle, the majority having been designed to do exactly what somebody else wanted them to do! As I really didn't have a clue what was going off in them initially, they had to be simplistic.
I then stumbled upon what was at the time a very good news program app called PHEED . It was simple enough to provide just enough functionality for my clients and yet was so obvious in its coding that I felt quite comfortable amending bits of it to customise its appearance etc.
As a direct result of mucking about with PHEED I statrted to mess about a little more with it to see if I could apply it to different tasks, but it soon became evident that there were some major flaws in the construction of this app (ie you couldn't run 2 instances of it on the same domain. So I took a closer look at it after having looked at a few basic tutorials on WebMonkey. I eventually managed to get it working (4 instances of it on one site doing 4 different tasks) BUT to get it working I had to have 4 different databases :-(
That spurred me on to really take it to pieces, and eventually I found the root cause of the problem. By now I'm feeling quite comfortable with the basic constructs and so went out to buy the aforementioned book and read it cover to cover but away from my desk.
I then simply set about trying to write my own news program taking hints from the PHEED program and referring to the book along the way.
Then one of my clients asked me about mailing lists so I set out to write one from scratch which once again fitted my needs rather than those of somebody else, but again I collected a number from hotscripts etc to use for hints etc.
Perhaps my biggest achievement to date has been the successful integration of ImageMagick into a number of my scripts where images are necessary. This came about because (as with all things) I got fed up of having to spend hours trying to explain to people that they couldn't just upload any old image into their site, and that they had to resize, resample them first.
I've now written an ongoing project i-Bikeshop to cater for the needs of my primary client base (bicycle retailers) and have created a complete self managed content system which caters for both ends of the ability spectrum. People with absolutely no knowledge of html can still manage their own sites, and yet the system also allows those with a little knowledge to manipulate the system.
All this has taken just short of 10 months from my first experiments to the point I'm at now, but most importantly, my business hasn't suffered as a result of my learning curve.
If you take my advice, find a need for you to learn rather than just learning for the sake of it.
Write it out by hand in pseudo code before you lay finger to keyboard.
If the app has multi stages, start at the end ie the absolute result you want, then work your way backwards discovering the steps necessary to get you to that position, but most importantly, never lose sight of the fact that an end user has got to come along and actually be able to use your creation without having to think!
Best of Luck!