Question

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?

tl;dr

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

Edit:: Thank you all for the advice.

Was it helpful?

Solution

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.

OTHER TIPS

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.

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 ;)

Licensed under: CC-BY-SA with attribution
scroll top