Embedded systems som steg in till IT

Permalänk
Medlem

Embedded systems som steg in till IT

Hej alla,
Jag har en master inom maskinteknik och har jobbat som konstruktör i cirka 8 år (är 33år), men insåg för ett par år sen att datorer och IT nog är mer min grej snarare än maskiner och fordon. Därför har jag läst lite kurser inom programmering på kvällarna efter arbetstid och börja nyligen söka lite jobb för att se om jag får napp.

Som backend Developer (som jag egentligen tycker låter roligast) har jag tyvärr inte lyckats få något, men en roll inom embedded systems (med Java som programmeringsspråk) ser ut att KUNNA vara inom räckhåll.
Jag ville därför kolla lite med er som har mer erfarenhet, alternativt till och med kanske har jobbat inom båda områden, om embedded systems kan vara ett steg på vägen för mig till backend Developer? Eller är jag ute på fel spår?
Jag tänker mig att i och med att jag då får jobba med Java så bör jag lära mig det språket bra, så får jag försöka lära mig network och cloud-aspekterna av backend på egen hand.
Förutom det så låter det ju inte fel med att programmera robotar heller, men backend tror jag blir roligare.

De kurser som jag har läst är:
Inledande programmering i Java (7,5 hp)
Objektorienterad programmering i Java (7,5 hp)
Introduktion till Python för fysiker och ingenjörer (5 hp)
Programmering i Python och artificiell intelligens (5 hp)
Databaser I (7,5 hp)

/Pierre

Permalänk
Medlem

Java är inget typiskt embedded-språk, det är relativt tungrott och körs knappast på speciellt begränsad hårdvara. Så man kan nog anta att rollen som är på tapeten närmast skulle falla under något som skulle kunna kallas backend, om än mer åt det tekniska än det administrativa hållet.

Att få upp programmeringsvanan är ett måste för att komma in ordentligt i branchen, så vilket jobb som helst är bättre än inget jobb om du vill bli backendutvecklare.

Folk som straffas av den fysiska verkligheten (en robot som kör sönder det den jobbar på) eller av oförlåtande minneshantering (C/C++) kommer bli bättre programmerare i längden än Javascript-muppar, oavsett villet språk de jobbar med. Jag tycker det låter som en bra och rolig möjlighet.

Permalänk
Medlem

Min uppfattning är att du skulle ha större chanser att landa ett jobb inom backend än inom embedded med Java-erfarenheten. Java och Spring boot är ganska vanligt för backend om jag inte har fel för mig men ta det med en nypa salt.

Embedded brukar kräva att man har bra förståelse för hårdvara och OS som man vanligtvis interagerar med, via C och inte Java. Det går väl iofs att köra en JVM på en mängd hårdvara så jag menar inte att det är omöjligt att använda Java-kunskaperna inom embeddded.

Ett jobb inom embedded skulle kunna vara ett steg för att landa ett jobb inom backend-utveckling. Många arbetsgivare ser på en som utvecklare(iaf inledningvis innan man gjutits till specialist inom ett område) så genom att få ett utvecklarjobb på CV:t så har du gjort en övergång från maskin- till IT-industrin. Viktigt att ha med sig är att mycket handlar om ambitionsnivå, tekniknyfikenhet och viljan att lära. Är du öppen med att du inte kan vissa saker men att det intresserar dig och att du vill lära det så räcker det en lång väg.

För att ta steget vidare från embedded till backend så kan du skriva lite hobbykod som du lägger på Github och/eller försöker söka dig till att skriva lite backend för embedded. Många embedded enheter kör en webb-server med ett webb-interface för att kunna konfigurera enheten, ta en router som ett exempel. Dessa webb-interface har oftast API för att möjliggöra konfigurationerna och utveckling av dessa API:er hade jag försökt söka mig till om jag vore dig för att bygga erfarenhet om API för backend-utveckling.

Lycka till på din resa som utvecklare!

Permalänk

Jag själv för 20år sedan utbildade mig för att jobba med mikrokontrollers, men bytte område då arbetsmarknaden i sverige är så liten. Mycket av de prylar jag tänkte programmera, tillverkas inte längre av svenska företag och om de gör det så har de en rejält blotad mikrokontroller, som egentligen kan ses som en vanlig dator och man använder inte den hårdvarunära kontrollen när man programmerar.

Frågan jag idag ställer är vad för typ av arbete finns det i sverige med mikrokontroller? Jag tänker såklart på de mer avancerade som utvecklar RTOS etc och sedan de som använder dessa bloatade mikrokontrollers som egentligen borde kallar för en datorenhet.

Jag funderar på vad man skulle utbilda sig för att jobba med dessa? Jag själv och alla i min klass kodade RTOS i assembler och C, men det var för 20år sedan. Jag tror skaran idag som bör gå samma väg är liten. Mer än fokus kanske på att få mikrokontrollen att fungera med iOT?

C++ som alla vurmar över var det the shit runt år 2000. Idag finns ett talesätt som lyder: Tid är pengar.
Och väldigt ofta så är man inte ute efter allra bästa prestandan utan allra lägsta utveckling och underhållskostnaden. Vilket leder till att C++ användningen har minskas väldigt mycket, stora tyngre applikationer, spel etc har c++ stor andel.
De flesta i sverige jobbar dock med små program och kostnaden är högprioriterat. Dessa småprogram körs sedan ofta samtidigt med en massa andra saker så visst det blir krävande tillsammans.

Permalänk
Medlem

Embedded görs främst i C och C++, men Rust har också haft stora framgångar. Så något av dem om du vill bli embedded-programmerare.

Men känns ju väldigt bakvänt att utbilda dig till embedded om du vill bli back-endare. Då är det ju webbutveckling du vill köra på.

Permalänk
Medlem
Skrivet av KAD:

Java är inget typiskt embedded-språk, det är relativt tungrott och körs knappast på speciellt begränsad hårdvara. Så man kan nog anta att rollen som är på tapeten närmast skulle falla under något som skulle kunna kallas backend, om än mer åt det tekniska än det administrativa hållet.

Att få upp programmeringsvanan är ett måste för att komma in ordentligt i branchen, så vilket jobb som helst är bättre än inget jobb om du vill bli backendutvecklare.

Folk som straffas av den fysiska verkligheten (en robot som kör sönder det den jobbar på) eller av oförlåtande minneshantering (C/C++) kommer bli bättre programmerare i längden än Javascript-muppar, oavsett villet språk de jobbar med. Jag tycker det låter som en bra och rolig möjlighet.

Jag tänkte detsamma, men i och med att jag har tagit kurser inom Java så tänkte jag att det bara låter bra. Då slipper jag lära mig ett nytt språk samtidigt som jag kommer in i branschen liksom.
Men ja, då tänker jag alltså rätt med att det nog är ett bra steg att ta då jag får in programmeringsvanan
Tack för svar!

Skrivet av orp:

Min uppfattning är att du skulle ha större chanser att landa ett jobb inom backend än inom embedded med Java-erfarenheten. Java och Spring boot är ganska vanligt för backend om jag inte har fel för mig men ta det med en nypa salt.

Embedded brukar kräva att man har bra förståelse för hårdvara och OS som man vanligtvis interagerar med, via C och inte Java. Det går väl iofs att köra en JVM på en mängd hårdvara så jag menar inte att det är omöjligt att använda Java-kunskaperna inom embeddded.

Ett jobb inom embedded skulle kunna vara ett steg för att landa ett jobb inom backend-utveckling. Många arbetsgivare ser på en som utvecklare(iaf inledningvis innan man gjutits till specialist inom ett område) så genom att få ett utvecklarjobb på CV:t så har du gjort en övergång från maskin- till IT-industrin. Viktigt att ha med sig är att mycket handlar om ambitionsnivå, tekniknyfikenhet och viljan att lära. Är du öppen med att du inte kan vissa saker men att det intresserar dig och att du vill lära det så räcker det en lång väg.

För att ta steget vidare från embedded till backend så kan du skriva lite hobbykod som du lägger på Github och/eller försöker söka dig till att skriva lite backend för embedded. Många embedded enheter kör en webb-server med ett webb-interface för att kunna konfigurera enheten, ta en router som ett exempel. Dessa webb-interface har oftast API för att möjliggöra konfigurationerna och utveckling av dessa API:er hade jag försökt söka mig till om jag vore dig för att bygga erfarenhet om API för backend-utveckling.

Lycka till på din resa som utvecklare!

Angående backend vs embedded så känns det som att det krävs mycket kunskap kring nätverk och cloud i backend som jag inte riktigt har. Jag var faktiskt på en intervju för backend på ett företag där jag har 6-7 års erfarenhet som konstruktör, men de tyckte att jag saknade kunskaper inom just nätverk och cloud. (Detta var med Java/spring boot).
Men inom embedded på ett annat företag så verkar de inte lika kräsna. Båda är junior-roller, men på embedded kanske de helt enkelt är OK med super-junior. För jag har inte jättebra koll på OS och sånt heller.. Ajja, vi får se!

Tack för din input

Permalänk
Medlem
Skrivet av dlq84:

Embedded görs främst i C och C++, men Rust har också haft stora framgångar. Så något av dem om du vill bli embedded-programmerare.

Men känns ju väldigt bakvänt att utbilda dig till embedded om du vill bli back-endare. Då är det ju webbutveckling du vill köra på.

Förhoppningsvis är det ett jobb inom embedded som jag landar Jag befinner mig nämligen i slutfasen av rekryteringsprocessen, så jag ville egentligen bara dubbelkolla att jag inte är fel ute med det spåret. Dvs att det kan leda till backend i framtiden (om jag försöker utveckla mig inom saker såsom cloud, nätverk, kanske AWS och Spring boot.. Vi får se exakt vilken roadmap jag hittar.)

Permalänk
Medlem
Skrivet av Nooro:

Angående backend vs embedded så känns det som att det krävs mycket kunskap kring nätverk och cloud i backend som jag inte riktigt har. Jag var faktiskt på en intervju för backend på ett företag där jag har 6-7 års erfarenhet som konstruktör, men de tyckte att jag saknade kunskaper inom just nätverk och cloud. (Detta var med Java/spring boot).
Men inom embedded på ett annat företag så verkar de inte lika kräsna. Båda är junior-roller, men på embedded kanske de helt enkelt är OK med super-junior. Vi får se!

Tack för din input

Jag tror att det enbart kan var en tillfällighet. Samma argument som bristande erfarenhet gällande nätverk går att göra för embedded-fallet. Det finns företag som kräver djupare/bredare fokus för kringkunskaper när dom väljer att tillsätta sina positioner så låt inte det hindra dig från att söka andra backend-tjänster. Kan dock vara värt att fokusera på juniora roller om senioritet inte är specificerat i rollbeskrivningen så släng med att du är junior med ett nyfunnet, brinnande intresse för backendutveckling. En del företag kan nappa eftersom juniora utvecklare kan man betala mindre men för dig blir det ett första steg.

Permalänk
Medlem

Det var skönt att höra, det kändes som att det skulle bli svårt att få något inom backend efter den tekniska intervjun på företaget där jag har erfarenhet. Men då ser jag till att fortsätta söka om ES-jobbet inte blir av

Permalänk
Datavetare
Skrivet av Nooro:

Det var skönt att höra, det kändes som att det skulle bli svårt att få något inom backend efter den tekniska intervjun på företaget där jag har erfarenhet. Men då ser jag till att fortsätt asöka om ES-jobbet inte blir av

Som redan nämnts är ju Java inget språk som man normalt associerar med "inbyggda system", fast det har mer att göra med att många sätter likhetstecken mellan "inbyggda system" och mikrokontrollers/liknande.

Inbyggda system är egentligen superbrett och inkluderar nästan allt som inte är en traditionell dator för server/desktop-bruk. Enligt Wikipedia sitter 98 % av alla CPU-kretsar som tillverkas i någon form av inbyggt system...

Har jobbat med inbyggda system som haft extremt nätverksfokus, men finns självklart också inbyggda system som överhuvudtaget inte har en nätverksanslutning. CPU-delen kan vara allt från enkla 8-bit CPUer till det som många skulle anse vara "servers", men det som avgör om de är en traditionell server eller ett inbyggt system är bara hur det hela används.

Ett inbyggt system kan köra en "vanligt OS", Linux är överlägset vanligast idag, eller ett RTOS eller kan också köra helt utan OS. Spannet gör också att i princip vilket språk som helst kan användas, inklusive Java. I realtids-kritiska applikationer tenderar man hålla sig till C, C++ och numera även Rust. Men det är ju bara en delmängd av "embedded".

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Började en gång i tiden som embeddedutvecklare med C och en del assembler. Sen kom IT-bubblan i slutet av 90-talet. Vi som lärt oss grunderna den hårda vägen hade inga problem att avancera. Häng inte upp dig så mycket på specifika datorspråk! Alla gör lite samma saker - likheterna är större än skillnaderna.

Hårda tillämpningar med tids- och minneskrav körs i C/C++ och nuförtiden mycket Rust. Ska man blanda in nätverk blir det Java. Inom en del web och mobilt är nästan Java ett boomerspråk - Javascript med veckans heta ramverk (Angular, Node, React,…), Dart med Flutter kommer starkt, Ruby, Swift, Kotlin är stort. Sen är Python bra mycket större än man tror .

Jobbar numera med säkerhet och har sett vad som körs ute på riktigt. Det är mycket embedded Linux som sätts upp med Yocto, ADO är enormt. När du jobbat ett tag kommer du underfund med vad du gillar och kan specialisera dig. Lycka till!

Visa signatur

HP48-GX, Arm-kärnor, i7, Ryzen 9, M2, Z80, 68000, Party tricks

Permalänk
Medlem

Jag är personligen embedded utvecklare(huvudsakligen C-utveckling) men som konsult har jag hamnat på uppdrag som backend-utvecklare(Go-utveckling) pga att jag byggt upp erfarenhet av API:er inom embedded och skrivit API:er som kringmjukvara till embedded för datainsamling osv. Det underlättade att jag pysslat lite med Kubernetes på fritiden.

Permalänk
Skrivet av Mulfuß:

Började en gång i tiden som embeddedutvecklare med C och en del assembler. Sen kom IT-bubblan i slutet av 90-talet. Vi som lärt oss grunderna den hårda vägen hade inga problem att avancera. Häng inte upp dig så mycket på specifika datorspråk! Alla gör lite samma saker - likheterna är större än skillnaderna.

Hårda tillämpningar med tids- och minneskrav körs i C/C++ och nuförtiden mycket Rust. Ska man blanda in nätverk blir det Java. Inom en del web och mobilt är nästan Java ett boomerspråk - Javascript med veckans heta ramverk (Angular, Node, React,…), Dart med Flutter kommer starkt, Ruby, Swift, Kotlin är stort. Sen är Python bra mycket större än man tror .

Jobbar numera med säkerhet och har sett vad som körs ute på riktigt. Det är mycket embedded Linux som sätts upp med Yocto, ADO är enormt. När du jobbat ett tag kommer du underfund med vad du gillar och kan specialisera dig. Lycka till!

När jag hör frasen "Hårda tillämpningar med tids- och minneskrav" så tänker jag Ericsson Telecom, Volvo, Saab m.fl, jag tänker även att generella person som börjar dessa jobb har gått elektronik, datateknik på Chalmers, Kth eller motsvarande.

Men man får fundera på dels vilken nivå man själv ligger på och vad det finns för jobb? Och jag är tveksam på om arbetsmarknaden är så stor i sverige utanför de jag jobben nämnde där man behöver tänka så mycket på "Hårda tillämpningar med tids- och minneskrav".

Jag minns i högskolan när vi på mikrokontrollen hade 512 bytes SRAM, man fick verkligen tänka till. En studiekamrat tyckte det ej var tillräckligt utmanande utan han kodade sin egen seriella kommunikationsdel på en mikrokontroller som saknade hårdvara för detta. (USART)

Idag föreställer jag mig däremot att majoriteten av de i sverige, förutom Ericsson, Volvo etc. Kör med en "extremt kraftfull" mikrodator, (jämfört emot vår 8MHz, 512bytes sram) och de bara öser på med bibliotek som de inte riktigt vet vad de gör. Det kräver heller ingen direkt kännedom om hårdvaran, en spelutvecklare skulle ha jättelätt att direkt börja koda utan att lära sig något nytt. (bortsett från att lära sig nya bibliotek som i princip fungerar som den redan kan)

Och min poäng är att det är skillnad i vad man bör lära sig. Dessa extremt bloatade mikrokontroller så gäller det att lära sig att jobba med riktigt blotade bibliotek, lära sig även dessa bibliotek på servern när den jobbar emot iOT. Den personen som är skitbra på det hårdvarunära kan få stora problem här och vice versa.
Angående realtidskrav så finns det färdiga bibliotek eller hårdvara i mikrokontrollen som sköter om det, det är "ingen idag" som genom vanlig programkod försöker få till att kommunikation ut ska gå i 2400bps etc på en utgång.

Vanligt förr var att man fick tänka på timing att få dessa alphanumeric lcd displayer att fungera. Jag tror inte ens studenterna idag i skolan försöker sig på detta, de tar bara sitt färdiga bibliotek som de hittar som sköter om i princip allt. Detsamma gäller stegmotor, kanske någon i första programmeringskursen får testa att koda en sådan. (bra övning) Sedan kommer alla i praktiken använda extern hårdvara för detta eller färdiga bibliotek och de behöver aldrig ens veta vad ordet timing är för något, knappt behöver de veta hur man kan styra en stegmotor.

Detsamma gäller vad det är för mikrodatorer. Jag minns debatterna kring M68000, vs Atmel Avr, VS PIC och någon mer. Idag så behöver väl de flesta som kodar dessa inte ens tänka på vilken mikrodator det är, mer än att de bör ladda hem färdiga biliotek, utvecklingsmiljöer för rätt mikrokontroller och läsa rätt dokumentation för denna. Där de hade kunnat delat samma miljö och bibliotek, vilket säkerligen de också har börjat med.

Och poängen på mina påstående är att jag rekommenderar den stora skaran just på att lära sig jobba med de "stora bloatade biblioteken". Och inte gräva sig ner så mycket om detaljerna på mikrokontrollerna. Jag påstår inte att någon av dessa är svårare eller lättare än en annan. Men de flesta får begränsa sig vad de bör prioritera att lära sig.

Permalänk
Medlem

Tack alla för era svar, det uppskattas

Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Frågan jag idag ställer är vad för typ av arbete finns det i sverige med mikrokontroller? Jag tänker såklart på de mer avancerade som utvecklar RTOS etc och sedan de som använder dessa bloatade mikrokontrollers som egentligen borde kallar för en datorenhet.

Om du vill ha ett svar på den frågan så jobbar jag med mikrokontroller som kör ett RTOS, och jag startade i sommras direkt efter 2årig YH utbildning. Produkterna är elbilsladdare.

Permalänk
Skrivet av swesen:

Om du vill ha ett svar på den frågan så jobbar jag med mikrokontroller som kör ett RTOS, och jag startade i sommras direkt efter 2årig YH utbildning. Produkterna är elbilsladdare.

Intressant. Jag ser efter en sökning att semicon m.fl sökte liknande.

Min bild kommer från jordbruket. På 80talet så fanns det mycket cool utrustning tillverkad i sverige med mikrokontrollers. Idag, ja det räcker bara titta på displayen, bluetooth till mobilen för dens app och man ser här är högnivåprogrammering, troligen linux eller annat bakom.

Min erfarenhet inom området är som sagt endast att jag bytte område efter studierna, då jag såg mer jobb någon annanstans.

Permalänk
Datavetare
Skrivet av lillaankan_i_dammen:

Min bild kommer från jordbruket. På 80talet så fanns det mycket cool utrustning tillverkad i sverige med mikrokontrollers. Idag, ja det räcker bara titta på displayen, bluetooth till mobilen för dens app och man ser här är högnivåprogrammering, troligen linux eller annat bakom.

Linux är supervanligt inom embedded så fort man kommer upp på CPUer som är kapabla till det, t.ex. Arm och numera allt oftare RISC-V.

Finns en plattform som ur de flesta aspekter fortfarande är en mer traditionell mikrokontroller, men som blivit super-populär i en lång rad applikationer då den är väldigt billig samtidigt som den har integrerat Wifi och Bluetooth-stöd: ESP8266 och ESP32.

Finns en rad olika miljöer för den plattformen, den vanligaste är FreeRTOS som runtime och Arduino som applikations API.

Har gjort en del hemma-projekt med ESP-plattformen, insåg att den idag är en väldigt vanlig plattform när jag skulle leta på enheten på mitt lokala nät och såg över 20 andra ESP-baserade enheter (baserat på MAC-adress), främst IoT-enheter, på nätet. Bl.a. "smarta lampor" går nu att göra billigare med Wifi-stöd tack vare ESP8266 jämfört vad som är möjligt med Z-wave och ZigBee.

På bara denna plattform finns ju spektrat från "egen loop utan OS" till rena FreeRTOS applikationer. Vidare finns relativt mogna miljöer från Assembler, C, C++ och Rust till Python (MicroPython).

Får känslan att Sverige har en relativt liten marknad för inbyggda-system jämfört med hur pass stor IT-branchen och jämfört med många andra västländer. Men finns ändå en hel del sådana jobb, både i storstäderna men även i de områden där det finns annan storindustri.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Nu har jag signat jobbet som Software Developer inom embedded systems. Tack alla för bollningen

Permalänk
Hedersmedlem

Det går absolut att köra Java på små begränsade plattformar, faktum är att ni förmodligen äger minst en sådan enhet. SIM-kort (ni vet såna där man stoppar i mobiltelefonen för att få nät) kör något som heter Java Card som är en nerstrippad variant av Java. Används även i kreditkort.

Om inte ett SIM-kort och kreditkort är en liten, begränsad enhet, så vet jag inte riktigt vad som kvalificerar.

Detta uppfanns 1996, så det är inte heller något nytt påfund som uppkommit p.g.a. datorer har blivit snabbare med tiden.

Inte en Java-fantast på något sätt, men credit where it's due i alla fall

Permalänk
Medlem

I det här fallet blir det programmering av robotarmar/maskiner i Java. Mycket mer än så vet jag inte just nu, utan vi får se när jag väl sätter igång om ett par månader