"Livet som..." är en bloggserie där vi får träffa olika personer i deras vardag och lära oss mer om deras yrkesroll.
I denna del av "Livet som" träffar vi Tomas Berggren som arbetar som Operativ Chef på weteachit Sweden AB.Tomas startade weteachit för drygt två år sedan. Han var då anställd på ett utbildningsföretag och valde att starta sitt eget företag. Idag erbjuder hans företag skräddarsydda lösningar till i stort sett alla som har något slags utbildningsbehov inom IT. Tomas menar att det inte bara handlar om att erbjuda en utbildning, det handlar om att hjälpa företag att bli mer lönsamma.
Tomas började programmera när han gick i sjunde klass. Mellan 1998 och 2015 arbetade Tomas som IT-konsult och sedan 2012 är han legitimerad lärare inom ett tiotal ämnen i grundskola och gymnasium, bland annat i programmering. Han är även certifierad Scrum Master och diplomerad utbildningsledare inom yrkeshögskolan.
Tomas ska berätta om olika programmeringsspråk, dess historia och egna erfarenheter ur hans karriär.
De tidigaste programmeringsspråken kom redan efter andra världskriget. De har sedan dess vidareutvecklats och därmed finns det så många idag. Bilden ovan är en översikt över olika programmeringsspråk. De språk som vi kommer titta mer på är C, C++, Python, C# och Java.
Det intressanta är egentligen inte vilket programmeringsspråk som är det mest populära utan snarare hur skillnaderna ser ut över tid. Det är stora förändringar mellan år 1965–2019. Ungefär samma språk som var populära för 20–30 år sedan, är populära än idag.
Det som är populärt nu, behöver inte vara lika populärt om tio år. Som konsult måste man vara öppen, flexibel och beredd på att behöva lära sig flera av programmeringsspråken. Det kan ju vara så att ett företag använder ett språk, medan ett annat företag använder ett annat. Men är man en duktig programmerare så brukar man inte ha några större problem att byta program.
En annan förklaring till varför det finns flera språk är konkurrens. Till exempel konkurrensen mellan Java och Microsoft. Java skapade ett programmeringsspråk och då ville Microsoft också skapa ett eget språk för att kunna konkurrera med dem.
Det är viktigt att komma ihåg att olika programmeringsspråk är bra på olika saker. Ovan finns en bild på symboler som symboliserar att programmeringsspråk kan användas till webb, mobilapplikationer, desktopapplikationer eller inbyggda system. Det går att se att Python fungerar till det mesta men inte så bra med mobilapplikationer och C++ fungerar inte så bra om man ska använda sig av webb men fungerar bra till de andra. Till en början gick det inte att använda Python med inbyggda system men man valde då att utveckla sin hårdvara och så gick det att använda Python även där.
Företag frågar ibland efter front end utvecklare, back end utvecklare och full stack utvecklare. Använder man dessa begrepp handlar allting om webbutveckling. Front end utvecklare arbetar med det som man ser på en webbläsare, dvs layout och design. HTML och CSS är egentligen inte programmeringsspråk eftersom de inte använder sig av speciellt avancerade algoritmer. Man brukar säga att HTML är det som skapar strukturen och CSS beskriver utseende, färg, storlek, teckensnitt med mera. Om ett företag behöver något med en databas så behövs något på baksidan och det är då man pratar om back end utvecklare. Där kommer möjligheterna in att använda olika programmeringsspråk som PHP, Python, Java, C#. Kan man hantera både front end och back end då brukar man kallas full stack utvecklare.
Vi dyker in i de olika programmeringsspråken och börjar med C. Programmeringsspråket C var det språk som la grunden för många andra språk. C skapades av Dennis Ritchie på 70-talet. Mycket av det som man ser idag är byggt i C. Det är ett väldigt kraftfullt språk som jobbar på låg nivå, nära hårdvaran vilket innebär att man kan styra input och output på ett kontrollerat sätt. Fastän C har funnits i ca 50 år, är det inte ett språk som är uträknat utan det är en väldigt bra grund att ha som programmerare. Det som saknas i C är det som kallas för objektorientering. Objektorientering är en programmeringsmetod där ett program kan innehålla en rad objekt som interagerar med varandra. För att råda bot på avsaknaden av objektorientering i C skapades C++.
Dansken Bjarne Stroustrup tyckte det saknades vissa delar och funktioner i C. Han samarbetade med grundarna till C och skapade C++. C++ är därför egentligen bara en utökning av C. Tanken var att det skulle kunna ersätta C men så blev det inte. Idag lever de båda språken parallellt. Många som arbetar med programmering gör en slags hybridlösning där man använder en C++kompilator för att kunna få nytta av C++, men sedan drar man nytta av den optimerade fördelen som finns i C och använder delar därifrån också. C++ fungerar bra om man ska göra något som kräver mycket datorkraft så som spel eller liknande.
”C och C++ kommer säkert att finnas kvar i minst 30 om inte 50 år till”
Python kan ses som något av en outsider i sammanhanget. Python skapades på 80-talet av holländaren Guido van Rossum. Det är alltså ett språk som har hängt med ganska länge och under de senaste 5–10 åren har det fått ett riktigt uppsving. Guido var trött på att allt skulle vara så svårt och att allt tog så lång tid. Han ville göra det så enkelt som möjligt. Det man brukar säga om Python är att det nästan är för enkelt och du behöver bara en rad för att få fram mycket kod. Nackdelen med Python är att det inte är så snabbt, vilket innebär att de har sina begränsningar. Namnet Python har inget med ormar att göra, utan det är kopplat till Monty Python. Guido hämtar mycket inspiration från den brittiska komedigruppen från 70-talet, det är också därför det finns mycket underförstådda programmerarskämt inom Python-världen. Den utvecklingsmiljö som man normalt använder i andra programmeringsspråk heter oftast IDE men i Python kallas den IDLE kopplat till Eric Idle som är en av medlemmarna i Monty Python.
Java var ett försök från Sun Microsystems att konkurrera med C++. Java har en egen virtuell maskin eller dator som man jobbar mot. Detta gör att Java skiljer sig från många andra programmeringsspråk där man i stället arbetar mot en hårdvara. Detta innebär att om man skriver Java-kod så kan den koden enkelt flyttas mellan olika operativsystem utan att några ändringar behöver göras. Själva programmet som man kör koden i anpassar sig i stället till datorn.
Java skulle, till en början, försöka göra desktopapplikationer men har tagit ett steg tillbaka och idag är det mer populärt på server-sidan. Det har blivit huvudspråket om man ska skapa mobilapplikationer även om det finns möjlighet att göra det i andra språk också. Nackdelen, jämfört med C++, är att Java har vissa begränsningar. I C++ arbetar man på lägre nivå, man kommer åt minneshantering och kan göra i stort sett vad man vill med datorn. Det kan man inte riktigt på samma sätt med Java. Däremot är Java lite enklare att komma i gång med men som sagt svårare att optimera än andra språk.
C# är egentligen precis samma sak som Java fast från ett annat företag. C# skapades även det av en dansk vid namn Anders Hejlsberg. Han skapade det på tidigt 2000-tal tillsammans med Microsoft. Till en början var det hårt kopplat till Windows och .net. Tittar man på många annonser så är ofta C# och .net kombinerat.
.net är ett ramverk som gör det möjligt att använda färdigfunktionaliteter från Windows-miljön och det är också flera olika programmeringsspråk som kan prata med varandra. Det är alltså egentligen två delar, där C# är själva språket och .net är en miljö som man arbetar i. Microsoft insåg att de begränsade sig och man har idag öppnat upp så att man även kan använda .net utanför den styrda Windows-världen. Idag kan man köra C# även i Linux. C# är som Java: enklare att komma i gång med men svårare att optimera.
JavaScript och PHP används fram för allt i webblösningar. Till en början fanns bara JavaScript i front end delen. Man kunde göra små script som fick interaktivitet i webbsidor, till exempel kunde man göra räknare som sa hur många dagar det var kvar till år 2000. För ett tiotal år sedan började man använda JavaScript även på back end sidan. Man introducerade då något som heter Node.js som är ett stort ramverk, antagligen det största som finns idag. Node.js ger tillgång till färdiga funktionaliteter som andra har skrivit som gör att man kan skapa saker väldigt snabbt eftersom någon annan redan gjort det.
PHP var under en lång tid det enda man använde på back end lösningar och PHP har stött på både uppgångar och fall. Många pratar om att PHP dog för 5–10 år sedan men sedan kom PHP7 som fick lite mer fart och nu nyligen kom PHP8. Så PHP lever fortfarande. PHP utvecklas fortfarande av frivilliga krafter så det finns begränsat med muskler vad man kan göra och hur mycket man hinner med men det är definitivt något som man bör ha med bland konkurrenterna.
Under början av 80-talet började man fundera över hur krångligt det var att skriva kod och framför allt kod i stora program. Då fick man en tanke om att i stället för att kod ska vara en instruktion från början till slut, ska man i stället se det som att bygga med lego. Vi skapar olika bitar som man ska sätta samman. Där och då säger man objektorientering föddes, men redan 1968 skapades Smalltalk som är ett objektorienterat programmeringsspråk, som idag ses som en av grundpelarna. Det var egentligen från Smalltalk som mycket annat uppstod ifrån.
När man sedan drog i gång med C, skapade man ett objekt som på något sätt ofta är tänkt att likna verkligheten. Till exempel om vi ska göra ett system som ska kunna lagra information om olika böcker på bibliotek. Då är en bok ett objekt och ett objekt har olika egenskaper, som titel eller antal sidor. Det finns sedan ett antal metoder som ett objekt kan användas till exempelvis för att berätta hur många sidor boken har eller titeln. Man kan också få ett objekt att hämta/lämna information, göra beräkningar osv.
När man pratar programmering så är det ofta olika paradigm man pratar om. Man har ett procedurparadigm, ett objektorienterande paradigm osv. Tar vi bort C från alla de språk som vi har gått igenom så är samtliga idag objektorienterade. Det är den norm som har gällt under en lång tid. När man idag hamnar i den situationen då datorn har svårt att bli snabbare om man arbetar med olika processorer till exempel, då har man upptäckt att det finns begränsningar även inom objektorienteringen. Alla program som är objektorienterade har ofta en förkärlek att växa i storlek där de behöver inkludera väldigt mycket. Detta leder till att så fort jag ska använda ett objekt så måste jag ha en definition av den klassen och alla de metoder de kan använda. Det innebär att för att skapa boken jag pratade om tidigare, då kan det kräva att mitt program blir 10 eller 100 gånger större än om jag hade gjort på ett annat sätt.
Vi lämnar de vanliga programmeringsspråken. SQL är något som ofta dyker upp när man pratar med kunder. Det är ett eget språk som endast används med databaser. Alla programmeringsspråk har olika tillägg som gör att man kan koppla sig till databaser och skriva ett språk från en annan kod. Detta innebär att oavsett om man kör Python, Java, C eller vad som helst så kan man då anropa SQL-databasen. Har man stora datamängder, låt oss säga 100 000 rader information som behöver sparas så behövs det en databas. SQL står för 80–90 procent av den data som finns lagrad. Även här finns det lite olika varianter. De stora drakarna var stora under en väldigt lång tid, så som Oracle och Microsoft. Nu finns det en MySQL som är opensource och gratis som har tagit över det alltmer och gjort det tillgängligt även för dem som inte har råd att köpa en stor server att använda sig av en databas.
Ytterligare ett begrepp att känna till är Git. Det är ett versionshanteringssystem som gör att man kan dela information. Om jag har ändrat något i systemet och jag vill att alla andra ska kunna ta del av de ändringar, då skickar jag in det i systemet och där kan alla ta del av det. Är man många som arbetar i samma projekt så är Git en nödvändighet. Det finns några andra liknande system men Git står nog för åtminstone 70 procent av den marknaden. Git är ett gratisverktyg som Linus Torvalds skapade i samband med att han skapade Linux, där det var flera andra människor involverade. Kunskaper inom det här är ofta något som är nödvändigt och som många företag nästan tar för givet att man kan.
Det finns olika sätt att lära sig att programmera. För många har högskolan varit den enda vägen. Där är det fram för allt civilingenjör- och högskoleingenjörsutbildningar som har varit det självklara valet. Idag har även yrkeshögskolan, där jag själv har arbetat en del, varit ett alternativ. Man hinner ju inte riktigt lika långt på yrkeshögskolan som på högskolan då yrkeshögskolan är på kortare tid men många av dem som börjar på yrkeshögskolan har en karriär sedan tidigare. De har ofta ägnat mycket av sin fritid med att programmera och kan kanske med hårt arbete till viss del vara konkurrenskraftiga med högskoleingenjörer. Det som också har tillkommit nu på senare år är bootcamp, där man går en 12-veckors intensivkurs. När du avslutat kursen ska du exempelvis gå från att vara civilingenjör i maskinteknik till att vara programmerare. Till sist finns det många som är självlärda. De personerna ska man inte underskatta. Om man räknar antalet timmar de självlärda lagt på programmering, kan det finnas fall där man är mer erfaren än de som gått utbildningar via skolsystemet.
Om det fanns oändligt med civilingenjörer som läst datainriktning på arbetsmarknaden, hade vi enligt mig levt i det absolut optimala. Tyvärr ser ju situationen inte ut så. Det saknas 70 000 människor inom data och IT. Så har det varit de senaste 15–20 åren och det är fortfarande samma siffror idag. Tittar vi på EU-nivå är det en miljon människor som saknas. Jag tror att man måste börja tänka i nya banor. Man behöver titta på vad personen kan idag och, fram för allt, vad personen har för potential att lära sig. Om man tittar på bootcamplösningarna, att kunna gå från noll till anställningsbar på tolv veckor till exempel. Detta visar att det tar inte så långt tid att få en bra grund.
Jag arbetade på ett företag där man var väldigt öppna och anställde människor med potential. Det fanns alla möjliga utbildningar och de fanns de som var självlärda. På företaget satte man ihop en supergrupp eftersom de tillsammans kompletterade varandra i ett bra team. Man får självklart ha kundens krav i åtanke. Många företag idag eftersöker exempelvis mjukvarutestare med två års erfarenhet och så vidare. Det kan vara så att dessa människor inte finns på arbetsmarknaden och då är det bra att ställa sig frågan: ”Vad vill vi att personen ska kunna?”. Det kan ju exempelvis vara så att ett företag anställer någon som är helt nyexaminerad och det visar sig vara en väldigt lyckad anställning.
Jag har själv varit med i anställningsprocesser och intervjuer. Jag har då ställt en fråga som är bra att fundera över: ”Berätta om ett fritidsprojekt du har arbetat med?” Detta visar om det finns ett intresse utöver det vanliga arbetet. Om de har ett sådant projekt och berättar om det, innebär det också att det är något de har arbetat med och i många fall lagt många timmar på. Har den som ansöker om jobbet gjort ett examensarbete kan man även ställa frågor relaterade till detta.
No-code/low code innebär att man inte gör ”riktig” programmering utan man lär sig att konfigurera det som redan finns. Stora system som SAP, de arbetar på det sättet. De använder sig av ett färdigt system, sedan får de själva vrida på skruvarna och göra optimala inställningar enligt egna önskemål. Generellt sett, kan man säga att mycket har gått från att göra det själv till att använda något som är färdigt. Detta beror så klart mycket på att skriva kod tar tid och tid är pengar. I början av min karriär, då fanns det inga färdiglösningar. Man var tvungen att göra allt från början. Hade man tur fanns det ett kort att arbeta med och sedan var man tvungen att skriva in koden som skulle lösa allt. Idag finns det kort med i stort sett färdig kod och ramverk, man kopplar upp sig på internet och det enda man behöver göra är att trycka på start. Detta tyder ju på att utvecklingen är på väg åt det hållet. Wordpress är ett bra exempel som används på många bloggar till exempel. Man behöver inte kunna något om vare sig kod eller programmering för att kunna använda Wordpress.
Jag har tidigare undervisat i webbutveckling. I en kurs fick eleverna först skapa ett program från början och sedan fick de göra ungefär samma projekt i Wordpress. Många av eleverna blev fort frustrerade över att arbeta i Wordpress då de kände sig begränsade över vad de kunde göra.
Det är segt, det går långsamt och man är väldigt styrd av regelverk som inte räcker till för de flesta. Så klart finns det en parallellvärld till detta. Till vissa saker finns det säkert färdiga delar som man kan använda. Digitalisering handlar ju idag om att man ska använda teknik för att förenkla eller för att få saker att samverka.
A Society är den nya tidens konsultbolag och kan hjälpa till att förmedla uppdrag mellan konsulter och kunder som söker efter personer inom IT och Data. Registrera dig på hemsidan så får du en kontaktperson som kontaktar dig för att höra vad du letar efter för typ av uppdrag samt så får du tillgång till uppdrag som annonseras ut i A Societys nätverk. Att gå med i A Societys nätverk är helt kostnadsfritt.
Läs även avsnittet om hur det är att arbeta som Agil Coach samt när Paulina Raymond presenterar hur det är att vara UX-designer.