Karriärbyte: från webbutveckling till machine learning
Har du funderat på att ta steget från webbutveckling till machine learning, men känt dig osäker på var du ska börja? Då har du hamnat rätt. Tillsammans med AI-experten Dario Radecic har vi tagit fram handfasta tips på hur du gör karriärbytet från webbutvecklare till maskininlärningsingenjör.
Det har aldrig funnits en bättre tid att arbeta med teknik. Det finns så många områden att specialisera sig på, och antalet alternativ kan kännas överväldigande. Ska du fokusera på webbutveckling? Eller är maskininlärning värt att utforska? Svaret är såklart högst subjektivt, men som en objektiv partner in crime ska vi ska göra vårt bästa för att förklara hur kan växla mellan de två fälten.
Vi förutsätter att du redan har en gedigen bakgrund inom programmering. Men det kanske är så att du har förlorat lite av motivationen inom ditt område idag? Det vore inte så konstigt i så fall, att jobba i samma bransch i flera år kan göra att man tappar den drivkraft och motivation som fanns där från början. Men goda nyheter! Att välja en ny inriktning kan få dig att hitta tillbaka till den där glöden igen.
Vi kommer att börja med att fokusera på de styrkor som du har från programmering sedan innan, för att sedan gå igenom de områden som du kan behöva lägga lite extra tid på framåt.
Från mjukvaruutvecklare till ML-ingenjör – De goda nyheterna
Du ha redan massor av erfarenhet från områden som maskininlärningsingenjörer använder dagligen – programmering, databaser och API:er.
Det vore idealiskt om du har tillbringat de senaste tre åren som Pythonutvecklare, eftersom Python är det mest använda språket bland maskininlärningsingenjörer. Men det är inte ett problem om du har en bakgrund i Java, C eller Go (för att bara nämna några) – det finns faktiskt en dold fördel här. Python är ganska förlåtande och du kan klara dig bra med en en halvbra kvalitet på koden, och utan att tänka så mycket på arkitekturen. Så är däremot inte fallet med de mer strikta och statiskt typade språken.
Om du kan förstå Java och C kan du förstå Python. Det har trots allt utformats för att lära barn att programmera.
Ingenjörer inom maskininlärning arbetar med databaser hela tiden. Du måste ansluta till en datakälla som innehåller data för modellering, versionera och underhålla modellen och ange vem som kan och inte kan få tillgång till den.
En till god nyhet stavas REST API:er. Som mjukvaruutvecklare vet du förodmligen hur du ska utveckla dem, och riktigt bra dessutom. Den Data Science-kunskapen kommer komma till användning. Maskininlärningsingenjörer distribuerar prediktiva modeller som REST API:er. På så sätt distribueras och exponeras prediktionsfunktionaliteten som en URL som alla med rätt autentiseringsuppgifter och/eller "subscription plan" kan få tillgång till.
Här är tips på några böcker som kan hjälpa dig att komma igång med Python:
- Learning Python, 5th Edtion
- Learning SQL: Generate, Manipulate, and Retrieve Data
- Building Data Science Applications with FastAPI
Så, som mjukvaruutvecklare har du redan täckt in mer än hälften av förutsättningarna för maskininlärning – åtminstone för en praktikantposition. Låt oss nu utforska vad du behöver lära dig ur ett datavetenskapligt och maskininlärningsperspektiv.
Kunskaper om maskininlärning som är nödvändiga för utvecklare
Maskininlärning kan snabbt bli skrämmande. Alla algoritmer för maskininlärning bygger på begrepp från matematik och statistik, vilket innebär att det finns en brant inlärningskurva om du vill förstå hela bilden. Python och dess bibliotek förenklar maskininlärning till ett par funktionsanrop som du kan lära dig på en helg, men du bör ändå göra ditt bästa för att lära dig vad som finns bakom ytan.
Att räkna upp alla algoritmer för maskininlärning skulle vara som att räkna upp alla färger – det finns några få grundläggande algoritmer, och var och en förgrenar sig ytterligare. Till exempel är en bas för gradient boosting en algoritm för beslutsträd, och gradient boosting förgrenar sig vidare till XGBoost, LightGBM, CatBoost och så vidare.
Lär dig de grundläggande algoritmerna först: linjär regression, logistisk regression, beslutsträd, Naive Bayes, stödvektormaskiner – och liknande algoritmer som finns i alla läroböcker. Detta är basala delar som du behöver förstå innan du tar nästa steg.
Det andra stora området eller delområdet inom maskininlärning är djupinlärning. Enkelt uttryckt rör det sig bort från de traditionella bearbetningsalgoritmerna som diskuterats ovan och ersätter dem med neurala nätverksarkitekturer. Precis som med traditionell maskininlärning finns det också grundläggande algoritmer som du måste känna till: feed-forward neural network, convolutional neural network, recurrent neural network, generative adversarial network och så vidare.
Därifrån kan du lära dig specialiserade nätverksarkitekturer. Till exempel är det nästan ingen som använder vanilla recurrent neural networks nuförtiden. Alla väljer istället Long Short Term Memory-nätverk eller Gated Recurrent Units, eftersom deras utformning erbjuder mer fördelar.
Vi rekommenderar dessa resurser för att komma igång med maskininlärning som webbutvecklare:
- Deep Learning (gratis version tillgänglig)
- Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow
- Advanced Deep Learning with Python
Vad du inte vill höra när du går från webbutveckling till ML
Som vi nämnde tidigare i artikeln bygger alla algoritmer för maskininlärning på begrepp från matematik och statistik. Det kanske skapar lite oro för dig som mjukvaruutvecklare, eftersom du förmodligen inte har rört dessa sedan skolan.
Så, om du vill lyckas inom data science och maskininlärning kommer du återigen behöva gå igenom de centrala begreppen bakom linjär algebra, multivariat kalkyl och inferentialstatistik.
Men om du siktar på junioranställningar som maskininlärningsingenjör är det inte heller optimalt att spendera ett år på att skriva ekvationer och lära dig allt som finns om linjär algebra och kalkyl. Det är mycket bättre om du börjar med att lära dig och förstå grunderna. Räkna med att spendera ett par månader på det. Eftersom det skiljer flera år mellan junior- och seniorpositioner, så kommer du att ha gott om tid att dyka riktigt djupt och ta itu med luckorna i dina kunskaper så småningom.
Dessutom är inte alla jobb inom ML lika. Praktiker tillbringar mest tid med att skriva kod och har i allmänhet ett mer “hands on” arbete. Och forskare fokuserar på att utveckla området genom just forskning inom matematik och maskininlärning. De nödvändiga matematiska färdigheterna för dessa yrkesroller är därför inte identiska.
Vi rekommenderar följande kostnadsfria onlinekurser för att lära sig matematik som webbuutvecklare:
Slutsats: Du är redan en bra bit på vägen
Sammanfattningsvis kan man säga att en tjänst som maskininlärningsingenjör vanligtvis är mycket tyngre på matematik jämfört med en webbutvecklar-tjänst. Hur mycket matematik du behöver varierar från företag till företag, och beror också på hur senior du är. Du behöver till exempel kunna mycket mindre matematik om du siktar på en junior maskininlärningsingenjörstjänst på ett nystartat företag än om du skulle söka en AI-tjänst på Google.
Lär dig grunderna i matematik och statistik först. De tre tipsen i avsnittet precis här ovan är väldigt bra att börja med. Du kommer att ha mycket lättare att förstå bakgrunden till algoritmer för maskininlärning om du också förstår den grundläggande matematiken bakom dem.
Du har en enorm fördel som programvaruutvecklare. Du vet hur du ska tänka kreativt och kritiskt, och du är en naturlig problemlösare. Dessutom vet du redan hur man skriver kod av god kvalitet vilket är något som många som är helt nya på området kämpar med.
Om du kan avvara 8-10 timmar i veckan för att lära dig maskininlärning och de andra sakerna vi tar upp här ovanför, borde du inte ha några problem att få ditt första jobb som maskininlärningsingenjör inom ett år.
Så för att avsluta – det finns ingen bättre tid att börja än just nu. Lycka till!
Och glöm inte att uppdatera din Demando-profil med dina nya färdigheter! Är du inte registrerad än? Då kan du skapa din profil här.