Right now, I'm currently in university and pursuing a computer engineering degree. Most of my courses are focused on designing systems so that applications can run on top of them, or sometimes the system intrinsically fulfills the role of the application itself (for example, real-time systems). I've only had two courses that taught "application development" as opposed to "systems development". Those are my introduction to software engineering and my database courses.
On the other hand, development tools have become easier to use and programming API's are encapsulating so much low level detail now that even a ten year old can program a professionally looking application for something like an iPhone. This fact and outsourcing has worried me that application developers jobs might seem inferior and this will affect job salaries going forward.
In terms of career opportunities in the next 2-3 years, what should I focus my efforts on: system programming such as writing device drivers, firmware, working with microprocessors or should I focus on continually learning new frameworks and languages that enable me to write applications more rapidly. I've dabbled in both worlds of web development and embedded programming and I need to specialize in one or the other.