Hey, not sure where to post this but I’ll give it a try.

I’ve changed jobs many times due to the economics of the construction sector in Sweden going to shit. So now I’m all but ready to change my career.

Would it be wise to get a 2 yr degree and start over as an embedded dev? Other programming jobs have been scarce and I wonder if that applies even for embedded.

Thanks :)

  • litchralee@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    19
    ·
    edit-2
    7 hours ago

    I’m an embedded software engineer, and IMO embedded software has the benefit and curse of being not-very-sexy, in comparison to web developers or database engineers or backend engineers. That is to say, it’s really easy for front-end engineers to describe their work, because it’ll be something that people have seen (eg a website, or a service like Netflix). And even for backend engineers, they can analogize to fields that are well-known, such as administration or utilities (ie everything goes to poo if the sewers fail).

    But embedded engineering is a tough one to explain, and that also means prospective employers might not even know that they need an embedded engineer for their Whizz Bang 3000. It’s not at all intuitive to most folks that there’s a separate set of skills necessary to program a screen-less, keyboard-less, network-less tiny CPU that might not even run an OS.

    On the flip side, it means that the job is fairly specialized and thus valuable. Most software engineers could probably figure out how to program a microcontroller using C, but the most talented embedded engineers can achieve the same in the smallest memory footprint, thus saving hardware costs. To shave off $1 off the cost of a product that will sell hundreds of thousands, that’s something that companies will pay for.

    Embedded is diametrically opposite of application development: basically everything is under constraints (eg RAM, CPU time, I/O, interfaces) and we just have to deal with it. At its core, the occupation seeks to do the most number of things with the fewest resources. Not everyone has to skills to optimize this hard, to strip down software to only its abject requirements.

    I can’t speak as to what any particular job markets looks like right now for embedded engineers. But given that the need for embedded software does not ramp up during hype cycles, I think it tends to be a fairly stable occupation. The trick is that it’s not a huge market everywhere, so moving for work might be necessary.

    TL;DR: embedded software is a small but stable occupation, IMO.

    • Valmond@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      2
      ·
      4 hours ago

      As a senior c/c++ expert that has dabbled with the small cpus (8266, z80, nintendo, atmega, esp32 …) how long time would it take for me to up my skills in an embedded job?

      There are loads of them (embedded jobs) at the moment so I’m wondering.

      • litchralee@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        3 hours ago

        I would say that the crucial pillars of embedded work are: mastery of C, computer architecture, and data transfer. I say this because most embedded challenges can be framed in (and often are written in) the C language. The same problem-solving approach for C is very similar to solving problems in a microcontroller. I put specific focus on pointer arithmetic and alignment, because although higher level languages take care of these things automatically, it has to be handled eventually at the lower levels, usually by the embedded engineer.

        For everything that isn’t C, the next set of challenges are in integration: rarely does a microcontroller run on its own. It might coexist with a host computer, have its own serial interfaces or other peripherals, access memories or sensors through complex buses, and some even have a quantity of DDR (with all its required supports). I don’t think it’s absolutely necessary to enter the field knowing the ins-and-outs of ARM’s AXI bus or how PCI/PCIe transactions propagate through a tree. But knowing the inspirations for commonplace things like Virtual Memory, IOMMU, DMAs, and memory bus width, those are foundational.

        Finally, there’s always data transfer. Some data here needs to go over there. This can include actual networking protocols (eg TCP/IP, WiFi, ZigBee) but can also be point to point (I2C, RS232). This is probably the part where people entering the field have to be generalists: there are just so many different ways to transfer data that it’s basically impossible to study them all in advance. Instead, some things are common to all transfers: a specification of the start and end of the payload, why headers or sync patterns are used, error correction, medium arbitration, reliability guarantees (if any), and API considerations (eg conformity to BSD sockets).

        To be abundantly clear, embedded is very hardware oriented. In my time, I’ve seen a lot of Electrical Engineers and even Mechanical Engineers successfully make the leap over to embedded software, because they already have the ability to efficiently absorb knowledge from data sheets and specification documents, and will work within the absolute limits given. If there is the aptitude to dive very deep into the details, to find truth where everyone else sees “magic”, then embedded will not be too difficult.

    • djsiete@sh.itjust.worksOP
      link
      fedilink
      arrow-up
      1
      ·
      6 hours ago

      I see. These reasons are particularly why I’ve applied for embedded, as that was my guess. I’ve tinkered enough with Linux to get an appetite for it (I know it’s different, but I’m fairly confident that I understand why embedded is different).

      Reading this is comforting – it feels like I wouldn’t need to worry about a dip in the market in the case I to through with this degree.

    • djsiete@sh.itjust.worksOP
      link
      fedilink
      arrow-up
      2
      ·
      5 hours ago

      Two year “yrkeshögskola”. Educational that are centred around practical knowledge, with emphasis on work placements and the like.

  • pelya@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    8 hours ago

    I’ve never met a poor embedded software developer, it’s an awesome choice if you have skills for it.
    Especially if you can solder and use multimeter even on a beginner level, and a special bonus if you can design circuit boards. These skills need sonething around one-two weeks to get to a basic level.

    • djsiete@sh.itjust.worksOP
      link
      fedilink
      arrow-up
      2
      ·
      8 hours ago

      I think that I’ll do well, and I know that established ones make good money. The question I ask is more like this: am I going to study two years and then end up job-hunting for months/years on end? Is the job market still active, or does it suffer like the rest?

      • pelya@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        7 hours ago

        The education can be very hit or miss. The best way to learn is to work on an actual embedded project, as a junior or whatever, but you need to have at least some skill, so - hobby projects.

        Universities with CS programs tend to teach generic programming and algorithms, but no skills how to assemble your own robot. If you choose some practical courses in a trade school it would be better, but again, many commercial courses stop being useful after first two months, because teaching people is less profitable than actually working, so the teachers do it by the book.

        • djsiete@sh.itjust.worksOP
          link
          fedilink
          arrow-up
          1
          ·
          6 hours ago

          I know, it’s akin to other programming degrees. Granted that I start this one (two years, practical with placements once a year) then I feel fairly confident in that I will do the majority of my learning outside of school.

          But again – is the job market as “dead”? All devs I know (that don’t do embedded) have warned of the shitty job market rn. I was imagining that embedded wouldn’t be as crowded, which is why I applied. Now I got accepted and would like to know if the hiring of junior embedded devs is not as rare as other devs.

          • pelya@lemmy.world
            link
            fedilink
            arrow-up
            2
            ·
            6 hours ago

            I guess it depends on the location. In Ukraine you could probably change jobs every six months and still have people wishing to hire you.