7 ms·
No. Not to gatekeep, but I don't think a bootcamp could prepare anyone enough for that. Sorry.
by OnlyOneCannolo 5y ago
No. Not to gatekeep, but I don't think a bootcamp could prepare anyone enough for that. Sorry.
- smackeyacky 5y agoJust to expand on this a little, firmware development is hard even for experienced engineers. My experience is with bluetooth firmware but from what I have seen the problems are pretty typical. For starters, the tools are generally terrible compared to things like Jetbrains or vscode. Each chip vendor has a preferred environment (i.e. Segger for Nordic stuff) or you have to buy something expensive like IAR and they all have quirks. The Ti toolset for bluetooth stuff is a nightmare. Next, you need to be an excellent C programmer and it helps to have some experience with assembler. You will need that for debugging. If you struggle with pointers or memory addressing or anything like that you will suffer. Next, you need a good understanding of concepts like interrupts, how data is stored i.e how memory is used for different data. Plus each RTOS is different so while strategies for how you do things are similar, the available tools can be unique to the vendor. On top of that, you will likely have to work with the hardware engineers on how the chip is set up, which pins are attached to what, how they are attached and other concepts like SPI and other means of getting data in and out. There is a lot to learn, you need to learn by doing and hopefully with an experienced mentor available. There is nothing like stack overflow to help either, the chip vendors run their own forums and try to help but largely on a custom board you are on your own. So, no bootcamp could even come close.
- SilurianWenlock 5y agowhy is this so much harder than making large web apps?
- smackeyacky 5y agoMaking a web app is a massive exercise in handholding, where you are 400 layers away from the metal amd barely give a passing thought to how much memory is getting used. Include a whole new javascript library for a bit of screen candy? Why not. Embedded system, you increased something from a two byte unsigned int to four bytes? Does it still fit on the device ordo I need to change the area in memory where my program is being loaded, do I still have enough space for the stack, was I disciplined about my mallocs and frees and always make the right size etc. Beginners can make a fair fist of a web app because you can screw up royally and it will still work.
- OnlyOneCannolo 5y agoThere's more to know beyond the software aspect. Web apps require a lot of knowledge too, but it mostly falls under the umbrella of software. Application software is just one of many things an embedded engineer does. Start with the basic skills you'd need for any software like data structures and algorithms. But you'll actually need to know it for the job, not just for the interview. Add extra low-level computer systems skills. Add electronics skills. Depending on the application, you might also need to know control systems, signal processing, communications theory, hardware security, or computer architecture, for example. Then add the engineering math/physics knowledge for the specific domain. It adds up. If you can't do those things, all of those problems need to already be solved, simplified, and polished for you. At that point, you've avoided firmware engineering and gone right back to application development.
- arduinomancer 5y agoWell one reason is that there's a huge amount of learning resources for web dev because so many people do it. The tools are also really mature and easy to use due to a lot of investment from the community. Firmware dev you end up working on obscure proprietary systems where you don't have the luxury of just Googling every problem because there isn't a ton of devs working on the same thing as you.