Fog Creek Software
g
Discussion Board




embedded systems developer

How would I go about becoming an embedded systems developer?

Tired of doing Web apps
Sunday, May 9, 2004

If you can, then get an electrical engineering degree. Many embedded positions basically require one especially at the larger electronics companies. Otherwise you'll have to provide proof you can debug hardware, read circuit schematics, understand real-time system constraints, and work at lower abstraction levels.

Queequeg
Monday, May 10, 2004

You definitely need the EE, OR a half dozen published articles in Circuit Cellar or Midnight Engineering.

On top of that, you need to be able to program an operating system in assembly language, to be able to do board layout, understanding how to keep your noise down and manage your clock signals. Most all work nowadays involves asic design as well so you need to know how to design integrated circuits, you should have some projects you can show of chips you've designed in VHDL or Verilog.

Dennis Atkins
Monday, May 10, 2004

There is a level of embedded at which you don't
need to be a hardware guru.  But you will need to
be familar with hardware debugging, no-OS
debugging (sometimes a logic analyzer or blinking
lights is all there is), and doing development in
environments where things you take for granted
in PCs can and do break.

If you're a web person, a reasonable "transition
strategy" would be to get into a bigger embedded
environment, ie a group doing cellphone software,
car radio software, etc.  At this level, some web/html
or XML, etc knowledge may be useful.

Language-wise, learn C (C++ is OK, but C is more
flexible in embedded environments), and at least
one assembly language.  MSFT languages
(.net, C#, Visual basic, etc) are (almost) completely
useless in embedded environments - even in
Windows CE, most projects use C/C++ and some
asm.

x
Monday, May 10, 2004

Where do you live?

An easier way into embedded programming is to look at Symbian or embedded linux.  Symbian is written in C++ from the ground up (with some ASM thrown in).

Whatever you do, you need to get down and dirty with C or C++.

Furious George
Monday, May 10, 2004

Is going into embedded systems really wise these days? Aside from the DOD, the drift of manufacturing overseas along with R&D dictates that there will be less and less such work available.

I worked in embedded back in the 80's. I moved out of it in favor of PC applications because the work simply wasn't there (in embedded).

One big chronic problem with embedded is that every employer will knock your experience because it wasn't on their platform, using their tools. Sic: embedded is so custom tuned to a particular vendor's application that often they feel that there is no basis to say that you can do their work.

Another problem is that peers that interview you will generally be negatively anal and nit-picky about your skillset. I worked with an embedded guy a couple of years ago who considered my C++ skills detrimental because he didn't trust the heap (and the new operator uses the heap all over the place.)

I got out of embedded. It just didn't feel like a good place to be, career wise.

Bored Bystander
Monday, May 10, 2004

The consumer embedded market is a lousy place to be, because of outsourcing and intense competition from overseas ODMs.

However, there are big opportunities for embedded developers in the low-volume high-margin business.  Think industrial machinery, national security, and scientific research systems.

There are opportunities at the board level (drivers, BIOS, libraries, example programs, etc), and at the system level (finished applications).

The biggest problem with embedded jobs is finding them.  You're looking at working for engineering firms with only a couple of people.  They don't have a lot of name recognition, so they can be hard to find.  Some of the best places to find jobs are embedded systems newsletters.  Jack Ganssle's newsletter usually lists a bunch of openings.  Sometimes you can see ads in comp.arch.embdded.

If you've never touched an embedded system before, you're going to be in for a rough time.  You need to start working with one.  Invest in a $500 development kit for an embedded CPU.  Maybe buy a PC/104 board.  Try putting Linux on a DiskOnChip.  Try building some systems with WindowsCE (you can download a trial copy of the target designer for free).  Look at working with a microcontroller.  Read a book (there's a lot of them).

Develop your own little projects.  Build a motion detector for your mailbox.

Something like 90% of all processors sold go into embedded systems.  Someone's writing the software for them.

Myron A. Semack
Monday, May 10, 2004

*  Recent Topics

*  Fog Creek Home