“The worthwhile problems are the ones you can really solve or help solve, the ones you can really contribute something to." ~Richard P. Feynman
There appears to be an interesting disease in the world of computer programmers - they think all worthwhile problems are the ones that exist on a lower level, or that if you learn and explore and understand things from a higher-level perspective you're somehow weak. I think this has been around for a while, and I'm quite convinced it's more of an ego-thing than anything else: "I have programmed in x86 before", "Yes, but back in my day we had to program it all using punch cards", etc. The reason this mindset is a problem is that no advancements are made in the world of computers, or the advancements are counter-productive, if one continues to think that way - people continue to do things one way and nothing moves forward. The computer should be here to serve us, it should become as user friendly and native to us as possible, it shouldn't be counter-intuitive, it shouldn't be rigid, and it shouldn't be hard to use; if it is, then it's a failure as tool. That being said, there seems to be this interesting mental counter-attack that occurs when a developer is suddenly struck with a much easier way to accomplish something, be it through the cheesy 'drag-n-drop' style of programming (where controls are drug onto the designer surface, and properties selected through right-mouse clicks, etc.), or be it through letting someone else (who knows more) solve the problem (aka out-sourcing).
My thought is that there's plenty of room at the top; that is, there's plenty of room for intelligence and hard-work and hours (for us contractors) when working at the high-level of things - and, in fact, you usually beat your competition to the punch when you think outside the box in this particular way and end up landing even more return contracting gigs with happy customers (contracts that don't last so damn long, which has a tendency to spice things up a bit and keep your world new). To me, creativity and intelligence can occur at any level of a problem; not just at the low-level, close-to-the-metal plane.
Now, don't get me wrong - I find great joy in understanding how something works, and I love seeing how someone solved a problem; but, in reality, I love solving the problem even more. My little quote 'Explore. Discover. Understand. Apply" hints at this - it does no good to understand something if you're not going to use it. To me, the greatest use of the human intellect isn't in finding a complicated problem and solving it, but in taking a complicated problem and finding a view on it that's simple enough for anyone to solve because therein lies flexibility and creativity - not just intense number crunching.
And for the record, I have programmed in assembly before, I have programmed in C++ and COM before, and I program, today, in .Net (often VB.Net). I don't ever see my skills being invalidated as times change because I don't see myself as a C++ programmer, or a VB.Net programmer, but more of an idea guy who just enjoys the pursuit of creative thoughts; so, in that sense, the tools of application don't matter.