Jump to content

Demographics of embedded development

Recommended Posts



Today was my first live encounter with my new colleagues, embedded developers. Although I don't consider myself quite in this category yet, given my long "macro" background. (Or what's the best way to call all things non-micro?)


I was surprised to find I am the only woman in the room (in the macro world, it used to be that way in the beginning of my career). I was even more surprised to find myself almost the youngest one (in macro, I am one of the veterans). 


Is this representative or a coincidence? I remember reading somewhere that the average age of embedded developers is somewhere in the 40s, but today it was way higher, and we were there to learn about brand new products. 


I am curious: why don't many young people go into the embedded world, assuming my very anecdotal evidence has any validity at all? Is the market shrinking? Does not look that way.. Is entering the micro market a good career choice today?

Link to post
Share on other sites

I'm no spring chicken (45) and this is my guess:  When I started programming (34 years ago...), being a computer user almost always meant being a computer programmer, and being a computer programmer almost always meant that you had to have knowledge of the systems you were programming on.


In other words, I think 25 years ago, there was naturally more overlap between programmers and those interested in electronics and hardware.  I mean, people used to purchase ram chips and put them into ISA boards with sockets on them to expand their memory.


Now, people's phones are multiple orders of magnitude more powerful than those early computers were.  And there are lots of computer programmers who have learned how to program in high level languages and never have had to actually worry about twiddling bits outside of some basic lab in college.


So, a large percentage of the 'programming' population has never had to think much about memory usage, understand how data is actually stored, understand what 'endian' means.  The connection to any particular piece of hardware has been abstracted away under so many layers of layers, that somehow it's thought that actually touching hardware is somehow mysterious and difficult.  


Additionally, there is another thing: VLSI.  When the circuit boards are just two layers, and the chips don't have hundreds of millions of gates, it was actually possible to look at a physical circuit board, look at the traces, look at the connectors, look at the chips, and almost extract the entire logical schematic.  Today's schematics are almost useless as they simply show 250 lines going into one big block marked U0.  How do you even begin to understand it by observation?  There's no way.  The bottom rungs of the ladder have been knocked off.


Sad.  I'm so thankful I was born when I was, because any earlier, and I would not have had my own computer at a very young age, and any later and the computer would have been so powerful it would have been nothing more than a magic box.

Link to post
Share on other sites

Further to wasson65's reply, I'd suggest it's not helped by the move to higher-level languages in Computer Science courses.


Embedded programming's emphasis on runtime performance, safety/reliability and minimal footprint encourages the use of lower-level languages. There's a gradual shift from assembly to C and C++ for embedded work, but it's behind the curve of programming in general.


Although CS courses tend to focus on the theoretical side of Computer Science, specific languages are usually taught in the first year. For a lot of students these languages become their default choice when completing practical assignments. If you've spent 3 or 4 years of your life programming in Java or C# then the switch to assembly or even C can come as quite a culture shock.


When I was at university the programming tuition had just switched from C to C++ with STL. The migration path back from C++ down through C and assembly is pretty clear; you just stop using the higher level features of C/C++/STL and treat the compiler like a more advanced assembler. Then you start reading the disassembly of your programs to see what's going on under the hood. I wouldn't even know where to begin that process if I had to start with a language that runs bytecode in a virtual machine.


Something that may help to reverse the trend is the easy availability of cheap embedded development platforms (eg MSP430 Launchpad :smile:). The information you need to get started is much more easily available these days, and there's better visibility of hobbyist embedded developers who can act as role models.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...