When I was deciding how to go about learning to design PHP web applications, it made sense to sort of shoot toward the middle and go with Zend Framework so that I could be closer to the lower level, but I would be able to get down to business fairly easily, too, while learning about design patterns, etc.
That seemed to work out pretty well, but now I'm wondering if I wouldn't have learned more about design from a more top-down approach, like creating a drupal site and deconstructing it.
I realize that the degree of topness vs. bottomness in this context is pretty negligible in the spectrum of all programming experiences, but I think it matters very much where you start, especially at the very beginning, because your world is small; it's home base, and how you develop your personality there "at home" can determine how you approach other problems in the future--I believe people tend to try to repeat their successes, which often means adopting a preference for what's familiar to them.
I didn't want to "learn myself into a corner," so to speak, so I tried to aim for a level that would prepare me for the greatest amount of other experiences. LAMP with ZF seemed like a well-rounded, holistic choice, because I'd be learning about database design, patterns, web app development, server configuration, and a C-based programming language all at once.
Okay, great, but I haven't really progressed as far as I had hoped I would, honestly. And now I'm starting to wonder if I've done myself a disservice for wanting to start nearer to the bottom vs. learning to produce as much as possible right away. My instincts at the time were that, "sure, a CMS will get you up and running, producing stuff right away, but you'll eventually hit a wall and need to learn the lower-level stuff anyway, and you'll probably hit it sooner than later so you might as well start there. Don't eat dessert first."
But now I'm thinking "what would have stopped me from digging into the gears of a CMS?" Maybe I would have learned more from seeing a more complete implementation and deconstructing it rather than reinventing the wheel. Or, I could be exactly where I should be having only started in December?
And I just don't know the answer. I want to start a new project (redoing my website--I'm actually a composer (of music)). I know the basics of Zend Framework, and I'm fairly sure I could code a simple CMS for myself for my purposes, but would I learn more from deconstructing an out of the box CMS like drupal?