views:

903

answers:

6

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.

+9  A: 

Focus on what you enjoy the most. Enjoying your work is far more important in your life than how much you are paid to do it. Seriously. You won't enjoy your life if you spend 5 days a week doing something you don't like because it pays more.

Garry Shutler
This is a very difficult thing to do. Without ranting, I would like to say that its very fortunate if you get a good balance of pay and good work.
Amit
Difficult, but not impossible. The flipside of course is that if you enjoy what you do, you'll be better motivated and achieve more, which in the long term *will* earn you more.
Chris Huang-Leaver
Good point Chris, though not guaranteed, being motivated is more likely to enable you to progress faster and reach greater heights. This is likely to at least bridge the initial gap between salaries.
Garry Shutler
If your life is your job you better enjoy it. I come to work to make money for my family. I enjoy them, I enjoy spending it on/with them. If I stood on my head in sewage it would suck going to work but I would shower, go home, and love my family.
Stephanie Page
A: 

Like most college educations they'll get you started but won't really carry you beyond a few years in the work force. You'll learn most of what you really need to know on the job. Plus much of the dicipline in systems programming applies to application development as well.

Paul Alexander
+3  A: 

During university you should focus on learning about as many subjects as possible. Your time spent in university is to learn how best to come up to speed on new languages, technologies, etc. The best preparation you can have is to learn about as many different types of problems (like low-level network protocols, real time devices, desktop applications, web applications, ai, databases, etc.) in as many different languages and platforms as possible.

Alex B
A: 

yes, i think trying out different areas, and focus on things you like most.

some web companies succeeded because the founders were so interested in it so he stick to it through good times and bad, so the company eventually succeeded.

Michelle Lee
+1  A: 

My feeling is that tertiary education prepares you in such a way, that you are able to recognize things, and be able to search for answers pertaining to the problems at hand. Making you study field as wide as possible prepares you better.

Gerrie
+15  A: 

Take this quick test to find out which is the right job for you:

  1. In general, do you hate people?

    • yes: goto 2
    • no: goto 4
    • people?: goto 5
  2. Since you hate people, what do you do about them?

    • avoid them as much as possible: goto 5
    • fight them: goto 3
  3. How do you plan to fight them?

    • secrectly (by sabotaging their computers in a way untraceable to you): goto 5
    • openly (by making applications hard to use, denying their change requests etc.): goto 4
  4. You should become an application programmer

  5. You should become a system programmer

ammoQ
haha, comedy (yet worryingly true) answer gets an upvote from me.
Garry Shutler
I think this pin-points an important application programmer requirement - you must be good at communication with people (understanding needs and what they *actually* are asking for).
Thies