"How important is learning Assembly for #embedded jobs?"
@lupyuen I can tell you as someone who does a lot of hiring, I would never hire an embedded programmer who didnt know assembly even if we didnt code primarily in assembly.
It helps to know what the machine is doing, but it really depends on the situation.
These days with the wide diversity of languages and hardware and rapidity of change and scarcity of talent, unless you're hiring for a one-off, you look for someone who can quickly *learn* what you need, not necessary someone who already knows it.
The fundamental skill that any engineer or programmer must have is the ability to learn new languages and systems quickly, because they change so quickly. If someone has been busy working in one particular area or in many areas, but not doing the specific work that you are looking for, they may be very experienced, just not on a particular architecture or language or whatever. It just often makes more sense to hire someone and give them a week or so to learn a new language than it does to keep a requisition open for months at a time.
There are a great many embedded devices that you can code without doing any assembly. My own ROES project has very little assembly in it (maybe none).. But thats not the point. If you're a good embedded dev then you learned how to do assembly even if you never were hired to do it, for your own well roundedness, curiosity, and resume.
I hire people who are curious and driven outside of work to learn and explore their trade, beyond what can just ""Get them by"... But I also tend to only hire top notch candidates and will pass on unimpressive ones
Those other attributes, like curiosity, work ethic, getting stuff done on time, not harassing the other employees, adequate grooming, someone who fits the company culture -- that can be more important than a good technical fit.
@Pat That would be like a programmer who never used a computer before, or a doctor who doesnt know what any of the major organs are.
I agree. I think we're on the same page here. I'm not sure what you're hiring guys for, but yes they'd need to know what a register is, what a port is, bit-wise instructions, etc., for just about anything. You couldn't hire someone who only used, i.e., Javascript or something like that.
@freemo @Pat I am also with @freemo here. The particular assembler variant is not that important (take a day to get the hang of most), but being comfortable in 2-3 or of them is expected. But even more so, being comfortable reading datasheets on how the microcontroller peripherals work and knowing what interrupts (and their priorities) are. Unfortunately, I have seen "I have used Linux on a single-board computer" think that qualifies as "embedded programmer". *Sigh*
@niclas @freemo @Pat i have played with embedded stuff (msp430) in the past, most of that was using C though. i've also built a small toy processor during a course in university and it was really fun. i'd really love to do embedded stuff, it's just very hard to get embedded jobs here. everyone just wants boring shitty webapps here :)
i think knowing assembler and how machines work in general is very important knowledge for every programmer, it enables you to do much better reasoning about algorithmic tradeoffs. even when doing JS etc. those languages run on simulations of hardware after all :)
@Pat I never said they had to know the assembly specific to the ahrdware I needed to hire them for. But I do expect them to have done assembly on any embedded system. Again entry level who doesnt even have college experience, maybe. But if it is senior level then no senior level assumes experience and you simply arent senior level embedded dev if you havent ever done assembly.