I currently work as a .net developer and have coming up to 3 years experience in the industry as well as a degree in computer science specifically software engineering (I know that means nothing but just wanted to explain that I'm not your general back bedroom programmer).

When I finished Uni, I started contracting for a company. I wont mention their name but some of you may have heard of them just by the description. Basically they take in fresh graduates and in return for training and contracting experience you have to go to the clients they say for a minimum of two years. I cant say this was great but I do feel I know more than people with the same years of experience as me.

The problem is that I've now started heading down the route of web development because of the lack of choice in clients.

How difficult is it to change from a .net field to embedded/low level programming? I have the enthusiasm for it and the strive but I'm not quite sure how to go about moving. Unlike application development, knowing the language and having some business etiquette doesn't seem to be enough.

For example hardware wise I can set-up a computer but wouldn't know how to manually attached wires and program these systems. Is this kind of knowledge necessary?

Thank you in advance. Also if anyone has similar experience of swapping, should I?


Developer that doesn't know how to get from web development roles into embedded systems.

Edit:: Thank you all for the advice.

  • 1
    possible duplicate of Career in Embedded Systems For CS Major - and several others, use search. – mattnz Jan 21 '14 at 3:10
  • I did do the search. I felt this was a bit different as I'm on a quite good salary and this was more about transitioning without having to start again at a junior level. I will look through the answers in the link though. Thank you for the information. – Ankou Jan 21 '14 at 13:20

First: Going from .NET to embedded development through the conventional route is likely to be difficult, given the propensity of HR departments to throw away any resume that doesn't have all the buzzwords the hiring managers say they want to see.

The way you work around this is you get active in the local electronics and computing hobby communities, talk to EVERYONE, while learning the craft. You'll hear about opportunities this way. You hang out at the local MakerSpaces. You get involved in other things. (I heard about one project that was DESPERATE for software help, when I went to a talk at a ham radio convention. Some hams in Texas were setting up an intercity packet radio network. They could handle the radio stuff and the electronics stuff, but they knew nothing about how to write the necessary software.)

For the simple mechanics of learning basic embedded system development, you start by learning basics of making things happen in the real world.

Arduino is a surprisingly capable board for small embedded projects, with a development environment that was designed from the ground up to be usable by non-programmers who were willing to learn basics of programming. There are lots of tutorials, that cover both basics of embedded programming AND how to hook up basic hardware.

Teensy 3.0 is a 32-bit ARM board with similar goals to Arduino. It is not nearly as widely used as Arduino. Tutorials exist.

Both are quite inexpensive. Arduino has a much larger ecosystem of available peripheral boards ("shields").

There are Sagans ("billions and billions") of PIC boards out there, and Sagans of PIC tutorials, for hardware and software.

All of these things do require you to learn some basic electronics. It won't kill you. You are going to have to invest some money in tools. The good news is that most of the tools you need are amazingly affordable these days, if you are willing to buy secondhand.

| improve this answer | |
  • I live in England and there doesn't seem to be many groups as you suggest but there are general meetups for developers in general. Hopefully can find some contacts that way. I will look into the boards you have suggested and look at the tutorials. Maybe I can do the tutorials with some of the simulators dwelch suggested. If not like you say I think it would be a good investment to buy them. – Ankou Jan 21 '14 at 13:17
  • @Ankou: If your former college has an electrical engineering department, there's likely at least one professor who is interested in microprocessor and microcontroller applications. Ask him for pointers to interested groups. Physics departments are notorious worldwide for having to do custom electronics, which nowadays frequently means embedded software, some very fancy, some very quick-and-dirty. Locate the local ham radio club(s) and visit them. TALK TO PEOPLE. – John R. Strohm Jan 21 '14 at 17:02

Get a simulator, they are free, qemu, dosbox, among others (I would recommend non-x86, but whatever, in no way does it have to match the platform you are on or hardware you own). Gazillions of examples out there, just go learn, all free tools, all free software, you just have to put in the time.

When you are ready you can then buy the hardware, wire it up (which at first means just plug it in, usb, etc) and have at it, blink some leds, whatever. Same deal, zillions of platforms out there, ready to just plug in, sandboxes to play in so you dont get hurt, and then when the time is ready, climb out of the sand box and give it a try. if you take the simulator path first then that step should be a lot easier and with more confidence.

there are embedded .net systems so you could just transition over, but I would recommend learning C and a little assembly, those remain the foundation of embedded and will give you the most choices as you hop around platforms and learn.

| improve this answer | |
  • I will look into simulators and the likes. For some reason I really like Ada but that seems to not be used that often. Started learning C so will continue with that and learn some Assembly. – Ankou Jan 21 '14 at 13:13
  • well there is an ada front end into the gcc/gnu middle backend so you could in theory use ada, you still need to bootstrap it – old_timer Jan 21 '14 at 16:23

It depends on how low-level you want to go.
Of course going to a level where you solder together your own PC is to say the least; not very probable.
If you want to get to writing C and Assembler on customizable hardware, I'd suggest starting with RaspberryPi. In addition to it being fun you can use it together with some JavaLibs to get into the basics of hardware interfacing, RS232, and the like. After you're through with that you can exdand upon these things with a platform like arduino, that is closer to "real" C programming. After that you probably have a good base of knowledge to develop the way you want and make informed decisions.

I describe it like this because I did it the other way around. I learnt some basics of java an then assembler and C and moved from almost pure hardware and self designed circuits and drivers to arduino, to RbPi and then to .NET.

As for "how to put together a PC, hardwarewise": There is tons of tutorials for all these things. Just see SE.
Only difference to now is that you cannot copy paste a solution to a hardware-problem ;)

| improve this answer | |
  • I've done RTSJ (Real Time Standard Java) at uni which was interesting. I didn't know if Raspberry Pi was cheating a bit but compared to working on a windows pc its a lot better. – Ankou Jan 21 '14 at 13:19
  • @Ankou I my opinion Raspberry is a perfect link between low and high level coding. it has the interface- and IO features of an embedded system, while offering a wide variety of languages to use on it. You could even use mono and get into the basics of hardware-interfacing in the .net environment you#re used to and then move on in languages, once you know what you need to do. – Mark Jan 21 '14 at 13:26
  • 1
    Thanks Mark, that insight is very useful. Stack exchange wont let me +1 people yet so I do value all the information. I'm just unable to show it via points sorry. – Ankou Jan 21 '14 at 13:30
  • @Ankou I doubt anyone here does this for the rep :D – Mark Jan 21 '14 at 15:02

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