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.

This question already has an answer here:

I've been doing web development, and backend Java development, professionally for about 5 years now. My passion has always been closer to the metal though. Applying to embedded jobs has not been successful, and I believe it's because I lack experience. Perhaps there are open source projects I should undertake to show that I'm serious?

How does one make a transition from being a web developer to an embedded developer?

share|improve this question

marked as duplicate by MichaelT, gnat, Martijn Pieters, GlenH7, Jimmy Hoffa May 6 '13 at 14:47

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

    
Perhap applying for a job and tell them you are very passionate about being embedded developer, It doesn't how much salary offered, how many hour to work per day, how many day to work per week. –  Sarawut Positwinyu Jul 19 '11 at 2:00
    
As a mod over at the Electrical Engineering Stackexchange, I want to welcome you to bring your problems over to our site! We've had a lot of Stack Overflow users who are in the same boat, though, so I'll also thank you for not bringing yet another version of the "How to transition" question to us, it's a much better fit here. –  Kevin Vermeer Jul 19 '11 at 2:01
    
"been closer to the metal though." An intermediate of trying C++ backend development might make this conversion easier –  Raynos Jul 20 '11 at 6:42
    
add comment

4 Answers

You really need to know how things work "under the hood". Java is a solid language, but for embedded programming you will (most likely) need to know something like C or quite possible assembly. I'm presuming you're a university graduate so you should have at the least decent knowledge of this.

If you don't have much experience with embedded systems, building and programming a micro-controller is a good starting point. The Arduino is pretty well the largest in terms of user base and support.

To show off your skill, really your best option is to program on embedded systems. Try making things that are useful or otherwise shows off your skill as a developer. Keep in mind that embedded systems are incredibly diverse. Focusing on one specific thing can be bad because you will begin to focus on the intricacies of the system that typically have no practical application outside of intense programming for that system.

share|improve this answer
3  
+1 for the Arduino recommendation –  Paul R Jul 19 '11 at 8:09
add comment

I did this.

I started out just modding existing hardware (adding expansion hardware to it and updating the firmware to work with my added hardware - I was lucky in that the device had open source firmware) and through it I have landed some contract work. I still do web development to pay most of the bills, but I am spending more and more time with embedded systems.

So, yes, open source projects is a good way to go. The important thing is to just build things and post about them online so people know about them. Build things that demonstrate your ability.

share|improve this answer
    
+1 Starting out with modding. –  Glenn Nelson Jul 19 '11 at 13:22
add comment

You should know C and there are variety of assembly languages according to the underlying platform. Another thing, you should know the micro-processor, micro-controller, etc architectures. Because you need a deep knowledge of how low level systems work. If you have sufficient knowledge in one assembly language, you can easily adopt another assembly language.

share|improve this answer
    
Why is this down-voted? At-least, leave a comment! –  Abimaran Kugathasan Jul 19 '11 at 1:12
1  
Not my down vote, but I kind of agree. After over 20 years in embedded, my knowledge of assembly is sketchy at best. I can read compiler-output assembly and copy other peoples work. It is a very rare occasion that C cannot do a better job than hand crafted assembly, and even rarer occasion that your boss will thank you for the additional time spent. I do know how big my stack frame is, how many bytes make up a word, how to write low latency, high speed algorithms and low maintenance easy to read source code. Most importantly, I know when it counts and when it doesn't. –  mattnz Jul 19 '11 at 1:55
add comment

It would be no different if you wanted to transform from a web developer to a thick client developer. It's a different category of product with a different development workflow. I don't personally think you would need to start junior again, but I would become a subject matter expert with embedded development. Then, just like any other emerging developer, make a few products to show case to future employers. Prove that you know what you're doing.

As for the language and platform you so choose, embedded development is no different. There is a vast selection from assembly, to C, to even .NET to program microcontrollers. Choose what you are most comfortable with and what will ease the transition.

Good luck! And just like everything else with programming, if you really do love it and surrounding yourself with it, you'll easily accel in the field.

share|improve this answer
3  
I respectfully disagree with your first statement (from a web developer to a thick client developer), embedded programming requires understanding of the embedded system including particulars of the hardware, any OS or Real-Time OS, and often low-level protocol details (EIA-232, RS-422, ZigBee). Many experienced embedded developers also learn basic electronics, particularly digital electronics including basic logic (gates, MSI), programmable logic devices (CPLD, FPGA), special purpose ICs (ADC, DSP, codec, MUX/DEMUX), CPU, MCU, and memory (RAM, ROM, PROM, EPROM, flash, etc.). –  mctylr Jul 19 '11 at 5:37
add comment

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