4 ms·
Before becoming a web developer I worked as an embedded systems dev for a few years. That experience left me with valuable skills in data structures (Everything
by mysql 5y ago
Before becoming a web developer I worked as an embedded systems dev for a few years. That experience left me with valuable skills in data structures (Everything is C), understanding how a processor works and executes instructions and hardcore debugging.
Not sure if I would recommend building a career in embedded but you will start learning transferable skills doing it in your free time.
- AbbeFaria 5y agoI work as a back-end developer so I usually get don't work at the "bare-metal" level. I did get to use a CPU profiler to isolate a lock contention issue with one of our services recently and it was super fun. But I have realized that I have some gaps in understanding how a processor works (bad idea to not pay attention in your Comp Arch class), I am trying to cover that up by reading up on Comp Arch (Onur Mutlu lectures). would working on Embedded (in my spare time) help in understanding the processor at a deeper level ? Any pointers on how I can accomplish that ? I am well aware that modern processors are complicated beasts, more complicated than Embedded systems for sure not sure how transferrable those skills are.
- photojosh 5y agoAre you more interested in understanding the processor itself, or low-level software, eg operating systems concepts and how that interacts with the hardware? Embedded can certainly help with both, but I would go in the opposite direction from hobbyist-oriented systems like Arduino: learn to set everything up yourself. Bare metal programming, particularly with C and assembly, will require you to understand things like stack pointers, setting up your clocks, initialising hardware. While 8-bit micros are simpler and you could start with one of those if you wanted (AVR is probably the most accessible), I'd probably go straight to a 32-bit Cortex-M4, get a cheap dev board like [0], and get the sample programs running and try to understand every part of those. [0] https://www.st.com/en/evaluation-tools/nucleo-f401re.html https://www.st.com/en/evaluation-tools/nucleo-f401re.html
- flyingcircus3 5y agoI found that AVR devices are more approachable microcontrollers for learning the concepts of setting up and using peripherals at the register level, and studying the part's datasheet. They are so much simpler than ARM chips, with far fewer peripherals and registers. I think a good approach to this is to take working examples, look up the used registers in the datasheet, understand why setting up the peripherals that particular way accomplishes the goal of the example, and then start experimenting with changes to those registers.
- AbbeFaria 5y agoI bought the BBC micro:bit v2. I will experiment with that and see how that goes.
- menesss 5y agoHey, maybe off-topic but I felt compelled to finally create a HN account to ask a question: would you mind sharing your thoughts and motivations behind your switch from embedded to web dev? Currently, I am an embedded system developer and I concur, I've learned a lot about data structures and how computers work because "everything is C". Especially true as I graduated as EE with more interest in software. I've been enjoying my short career so far, and like the way my thinking has changed from all learned experience. But I can't lie that I worry about whether I should be focusing on web tech and that embedded stuff will fall off. You not recommemding building a career in this area and actually making the switch intrigues me a lot. Sorry for the wall of text, hope to hear back!
- deleted 5y ago[deleted]
- kingsuper20 5y agoIf your concern is the ability to get jobs, I can see the point of that question. Keep in mind (I think) that it's increasingly difficult to pull off a full career of any kind of programming. One thing that happened in embedded, and bear in mind that it ain't just low-end microcontroller stuff, is that it tends to be tightly bound to hardware. Hardware tends to be built in Asia (which I remember ramping up in the mid 1980's). Successful/higher volume products tend to be built in Asia. Engineering tends to follow manufacturing over time. For fun, it's hard to beat specialty companies that build complicated gizmos with software in some sort of sexy business, but they are hard gigs to track down.
- mssundaram 5y ago> Keep in mind (I think) that it's increasingly difficult to pull off a full career of any kind of programming. Can you expound on that?
- tartoran 5y agoThings are evolving quite rapidly, you may be on top of your game one moment and looking for work and re-skilling in the next.
- pk455 5y agocurious, why did you switch, and what exactly do you do now?
- mysql 5y agoCheck out my reply here https://news.ycombinator.com/item?id=26987286 https://news.ycombinator.com/item?id=26987286
- allenu 5y agoMy first job out of college was doing embedded development and since then I've moved onto Mac and iOS development with a little bit of web frontend and backend work. I have to say, the embedded stuff feels way more like you have control over the machine, I guess for obvious reasons. The tooling is specifically designed for your hardware, so what you need to do to achieve your goals is more obvious. I've found native app development similar to that. There's nothing quite like just focusing on a specific problem and plugging away at it and not having tools get in your way. On the other hand, web development is kind of a chore in that there are so many tools, frameworks, and just different ways of doing things. For focused work, I think I prefer embedded development, but it's kind of limited in the type experiences you can gain for sure.
- conductr 5y agoI've gone the opposite direction (kind of). I started learning web dev (self taught). PHP, Ruby, Python, JS. Full stack but never got into the cloud era much. But pretty confident I could build anything I set my mind to. This began in the 90s and a couple years ago I started messing with Arduino and finally using C after years of using C-inspired things (it's much less fun for me, 90% seamless but at times feels like work trying to figure out the simplest things seems difficult sometimes or the generally accepted solution is way more complex than I really want). During about Fall of 2020, extra bandwidth from COVID WFH, I finally thought of a big project I wanted to pour some effort into (excitement of making lights blink wore of fast). More difficult than the code, is all the EE stuff. And actually having to engineer things together to create a project. At least in my case, I'm using stepper motors, which means stepper motor drivers and secondary power supplies. I'm also using air pumps, solenoid valves, linear actuators, limit switches, rails systems (open builds is awesome), all kinds of things. The breadboard wiring was insane. Then I built a PCB to organize some of it. I still have no idea when or if I should be using resistors, capacitors, etc. I'm super unfamiliar with electronics but I feel pretty confident at this point I can learn/solve anything on YouTube. Emphasis on Youtube. I Google for software and Youtube for hardware; that's a key distinction I've noticed. I need to see how other people are wiring things together. I can't read a diagram at all. I'm pretty close to a working prototype and have somehow pieced it all together.
- tartoran 5y agoGlad you’re making headway and progress on your idea and glad you’re catching up on knowledge on youtube. My honest opinion is that you don’t need to know everything EE to get stuff done and if you indeed have a great idea that can potentially make some money, you can hire someone with experience in the field.