Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a recent college graduate, and I'm mainly involved in high-level programming (e.g., Java, C#, and Python).

I've received an offer form a good company for an embedded software engineer position, where I'd be programming devices with C, handling interrupts, and so forth.

If I take this job and decide to go back into high-level software development later on, will I be at a disadvantage? Are there development practices specific to embedded development that will sour me to high-level development gigs? In a nutshell, if I'm mainly interested in high-level development, would this just be a very long diversion with very little benefit?

share|improve this question
    
Great question. I'm looking at the opposite, to go from mid-layer C++ engines for client apps and down to embedded. I'll be watching the replies and commentary closely. –  Patrick Hughes Jul 22 '11 at 16:59
add comment

4 Answers

My colleague has done the exact shift you have described in the title and he's a great fit (another colleague calls him the human compiler).

Every team will need a good balance and having a lot of low level (i.e. "close to the metal") programming experience will be useful to a web application team, since there will be parts of a web application that don't need Web specific experience, for example a lot of detailed work in the domain tier.

If you move from embedded to web your salary won't necessarily drop, especially since experience in programming can be common e.g. keeping track of your tasks, estimation, mentoring, line management responsibilities, patterns and practices.

You can keep your hand-in in the web by contributing to open-source projects too.

That being said, it depends on the job market at the time you shift, so YMMV.

share|improve this answer
add comment

I think it is much easier to go to web/desktop from embedded than it is to go from web/desktop to embedded. Also many companies using C/C++ will not hire new graduates and will demand at least 5+ years experience in c/C++. Many Java/C# places will hire newer people and accept people with experience in other languages. There are people outside of embedded who respect high performance code. Some embedded systems have really low memory requirements or really bad CPUs.

Many embedded job ads I see are demanding real time systems experience. When I look at some finance jobs, I often see real time systems experience mentioned in ads for their trading systems. So going embedded first would only help there....

Meanwhile most embedded jobs I see are demanding 5-10 years embedded knowledge. So I think if you don't accept it now, you may find that you do not get another chance so easily. Plus you said you studied engineering as well, an embedded job may help you to put that engineering knowledge to use as well as computer science knowledge.

share|improve this answer
add comment

I've done both and in some sense it's all the same. In desktop development your code reacts to events from the user. In embedded development your code reacts to events from hardware. Either way you are translating customer requirements into actions on some lower-level API. Great desktop developers will be great embedded developers pretty quickly. Mediocre developers will still be mediocre.

I'm leaving out the artistic part of user application design; that is a field unto itself.

share|improve this answer
add comment

I think this largely depends on the environment at the company.

Not only for high level to low level embedded systems, any major career shift, requires that you need to learn new things, align skills towards new tool set and get yourself comfortable in new stuff.

If the company has patience for this, the cross domain perspectives are always very great benefit for you as well as for the company; but if they are not comfortable with the energy you need to put in, you may face short comings in generating results.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.