Bli systemvetare utan högskolepoäng
Universitetsutbildningar inom mitt skrå är bra på flera sätt. De ger ett socialt sammanhang och en miljö där man kan hjälpas åt genom utbildningen. Studentlivet med allt vad det innebär. De erbjuder krav, syfte och mål för ditt lärande. Jag har själv en kandidat från SU. Som rena kunskapskällor är de däremot överskattade.
För en disciplinerad och motiverad person med förmåga att ta till sig information på egen hand duger internet för att lära sig allt som behövs för en karriär som systemvetare. För den personen räcker dessutom ett år istället för tre.
Många arbetsgivare kommer däremot värdesätta kandidater med akademiska meriter högre per default för första jobbet. För att komma igång med karriären är, i min mening, positioner som junior utvecklare eller UX-designer som även programmerar de enklaste och högst avlönade instegen. Därifrån kan du hitta din egen väg.
Det finns närmast oändligt många källor till kunskap och områden att vända sig till när webben är ditt skolbibliotek. Det är också fullt möjligt att endast, likt en yrkesförberedande utbildning, fokusera på t.ex. programmering och få ett jobb. Själv har jag haft nytta av en bredare data(vetenskaplig) kunskapsbas. Här följer därför min version av ett självstudieprogram, kallar det Bli systemvetare utan högskolepoäng-programmet. Utöver introt och projektarbetet kan man gå igenom de olika delarna i vilken ordning som helst och även arbeta parallellt.
Innehållsförteckning 1. Introduktion 2. Programmering 3. Modellering 4. Databasmetodik 5. Agila utvecklingsmetoder 6. UI- och UX-Design 7. Affärssystem och B2B SaaS 8. Startups 9. Projektarbete: Bygg en app 10. Slut på utbildning
Introduktion
Om du inte är en världsvan datanörd sedan tidigare är det givande att börja med lite övergripande kunskap. Kurslitteraturen SU använder i sin introduktionskurs är bra, det här blir enda gången jag hänvisar till en sådan bok. Går säkert att hitta begagnad eller som E-bok.
Harvard har dessutom hela sin introkurs till computer science öppen på nätet. Den är fantastisk, om än matig och genast relativt teknisk.
Om du aldrig har byggt enkla hemsidor tidigare kan det också vara lämpligt att doppa tårna i HTML och CSS. Khan Academy har bra introkurser för dessa.
Programmering
Oavsett om du kommer jobba som utvecklare eller inte är det nyttigt för en systemvetare att kunna grundläggande programmering. Universitetsutbildningarna börjar med ett objektorienterat språk på lite lägre nivå, i regel Java eller C#. Lägre nivå innebär att man programmerar mer maskinnära, närmare ettor och nollor. Högre nivå innehåller fler abstraktioner, mer lättbegripligt för människor och används i regel för att programmera det som ligger närmast användaren i en webbapp exempelvis, det grafiska gränssnittet.
Java och C# är egentligen inte på speciellt låg nivå om man jämför med vad t.ex. en maskiningenjör sysslar med men i de flesta moderna mjukvarusammanhang är de vanligt förekommande backend-språk. JavaScript är ett typiskt språk som används på högre nivå i frontend. För den här delen av din utbildning föreslår jag att du börjar med nybörjar- och intermediatekunskaper i Java. Codecademy har bra, interaktiva, webbkurser utan kostnad.
Föreslår även att du doppar tårna i Python, det är lite mer lättskrivet språk och vanligt förekommande när man tar fram enklare program eller script. Även här finns en kostnadsfri nybörjarkurs från Codecademy
I ovan interaktiva kurser programmerar du i webbsidans miljö. För att göra det lite mer verklighetstroget inför min examinationsuppgift bör du komma igång med att kunna skriva Java (eller C#) lokalt på din dator i en IDE. Här är en bra Youtube-serie som inleder med just det för Java.
Examination
När du är varm i kläderna får du här något att sparras mot. Skriv ett program i Java (eller C#) som föreställer ett enkelt banksystem. Följande ska vara möjligt att göra i programmet:
- Skapa ett nytt bankkonto, inklusive information om kontohavarens namn, kontonummer och ursprungligt saldo.
- Sätta in pengar på ett bankkonto.
- Ta ut pengar från ett bankkonto.
- Ta reda på ett bankkontos saldo.
- Be om en lista på kontoinnehavarens alla transaktioner, inklusive datum, transaktionstyp (uttag eller insättning) samt summa.
Minst följande klasser ska finnas:
- BankAccount – Den här klassen ska innehålla kontohavarens namn, kontonummer och aktuellt saldo. Den ska också ha metoder för insättning, uttag och visa saldo.
- Transaction – Den här klassen ska innehålla datum, typ av transaktion och belopp.
- Bank – Den här klassen ska ha en lista med BankAccount-objekt och ska kunna utföra uppgifter som att skapa ett nytt konto, göra en insättning och göra ett uttag.
- Main – Den här klassen ska skapa ett nytt Bank-objekt och använda det för att skapa ett nytt konto, utföra transaktioner och skriva ut en transaktionshistorik för kontohavarens transaktioner.
Ytterligare krav:
- Programmet ska validera användarinput för att säkerställa att kontonumret är unikt och att uttagsbeloppet inte överskrider kontosaldot.
- Programmet ska kunna hantera flera bankkonton.
- Programmet ska kunna hantera flera transaktioner för ett enskilt bankkonto.
- Programmet ska kunna skriva ut en transaktionshistorik för kontohavarens transaktioner i ett läsbart format.
Modellering
Del av att bli systemvetare är att lära sig tänka på världen i form av system. En organisation, en butik, ett land, en bil, en familj. De är alla system. Wikipedia definierar det som ett antal enheter som hänger samman i en ordnad enhet. Systemtänk innebär att du kan reda ut hur de hänger samman. Vilka utbyten har de olika enheterna mellan varandra? Var går systemets gränser? Vad har systemet för input och output?
Att lära sig grunderna i att modellera system ger dig både systemtänk och en konkret kompetens som är användbar i många jobbsammanhang. Jag rekommenderar att börja med två typer av modeller:
- BPMN 2.0
- UML
Business Process Model and Notation (BPMN) 2.0 är en metod för att modellera processer. En process kan bestå av aktiviteter som utförs av både personer med särskilda roller samt appar exempelvis. Att ta ut pengar på banken är en process. Att ta emot en patient till en tandläkarklinik är en process. Jag har länge haft nytta av sådana modeller när jag föreslår förändringar i arbetssätt hos kunder eller vill visa hur min lösning kommer påverka kundorganisationens arbete. Här är en bra introduktion till BPMN från Lucid Software.
Den andra metoden är UML. Det är egentligen en samling av metoderna:
Dessa används många gånger vid systemutveckling även om skäggiga webbutvecklare ofta gäspar åt dem. De hjälper dig förstå hur mjukvara hänger ihop bakom kulissen.
Examination
Använd ett verktyg som Lucid Chart och bygg en BPMN-modell över en process som startar med att en patient kommer in till receptionen hos en tandläkarklinik. Patienten pratar med receptionisten. Patienten har eventuellt en bokad tid enligt systemet. Patienten hämtas av tandläkaren som undersöker och eventuellt hittar något som behöver åtgärdas. Ska patienten betala eller går hen gratis som ungdom? Addera detaljer och välj var processen tar slut.
För UML bygger du två diagram av valfria slag och modellerar bankprogrammet från programmeringdelens examination.
Databasmetodik
Udacity har en gratis interaktiv kurs för introduktion till databaser.
Vill du gräva djupare kan du pröva att komma igång med exempelvis populära databashanteraren PostgreSQL eller NoSQL-programmet MongoDB.
Examinationen tar vi i projektarbetet.
Agila utvecklingsmetoder
Agil, iterativ, utveckling är det vanligaste arbetssättet bland team som bygger produkter. Scrum är det dominerande ramverket på det här området. I högskolemiljö hade man genomfört grupparbeten för att konkretisera de här metoderna. Det behövs egentligen inte, på en arbetsplats som jobbar enligt Scrum kommer du snabbt lära dig hur det fungerar. Det är däremot bra med en grundläggande förståelse för att klara sig i en arbetsintervju.
För den ambitiösa har Udemy en bra betalkurs. Annars finns det mängder av material på Youtube om man exempelvis söker på agile development methods explained och scrum beginners.
UI- och UX-design
Läran om hur man designar produkter som går att använda och ser bra ut. I den här delen av utbildningen lägger jag fram några aktiviteter som kan utföras i valfri ordning. Examinationen tar vi som del av projektarbetet senare.
Läs valfri bok om grundläggande UX-design, några förslag här.
Att börja tänka på hur produkter och appar är designade för att vara nice att använda och vilka principer de följer är ett första steg in i UX-världen. Det tänket får du nog från valfria böcker i ämnet följt av lite egen reflektion.
Codecadamy har en kostnadsfri introduktionskurs.
Nu är det dags att dyka ner i JavaScript:
Javascript för nybörjare.
Bygg interaktiva webbsidor genom att kombinera JS, HTML och CSS.
Lär dig använda JavaScript-ramverket React, det just nu populäraste ramverket.
Figma är det populäraste verktyget för att designa grafiska gränssnitt för typ mobilappar. Följ en introduktion och lek själv.
Affärssystem och B2B SaaS
En traditionell systemvetarutbildning brukar beröra ERP-system (Enterprise Resource Planning, affärssystem på svenska). De är enorma system, uppdelade i moduler, som håller nästan all affärsrelaterad information i stora organisationer och hur exempelvis en order relaterar till lagret, produktionen, kunden, bokföringen och personalen som slutför ordern. Stora, dyra, administrativt tunga och kräver integrationer till övriga system i verksamheten. Implementationer av affärssystem är projekt som ställer krav på ett helt bolag och kräver oceaner av konsulttimmar. Exempel på vanliga ERP-system är SAP, Microsoft Dynamics 365, NetSuite, Unit4, Oracle ERP och Acumatica.
Du kommer inte lära dig konfigurera, utveckla eller använda ERP-system hemifrån, det kräver arbetserfarenhet. Läs på lite om vad de används till och gå vidare.
Mer nischade verksamhetssystem för organisationer lämpar sig däremot bättre för att laborera lite med. Ett vettigt avstamp kan vara att titta på CRM-system (Customer Relationship Management). De berör främst personer i en organisation som arbetar med försäljning och marknadsföring. CRM-systemet håller information om potentiella, befintliga och förlorade kunder. Kontaktpersoner hos kunderna. Genomförda aktiviteter som möten och telefonsamtal. Kundens köphistorik. Potentiella, aktiva och förlorade affärer o.s.v.
Några populära CRM-verktyg:
- Salesforce
- Pipedrive
- Hubspot
- Zoho CRM
- Freshsales
Examination
Starta en provperiod av valfritt CRM. Låtsas att du jobbar i en verksamhet som säljer glassmaskiner till butikskedjor, tillsammans med serviceavtal för underhåll.
Konfigurera en säljprocess från att säljaren får nys om en potentiell kund, till ett första möte, via ett antal ytterligare steg och slutligen till sålda maskiner och pågående avtal.
Lägg upp och kör igenom några fiktiva affärer, vissa som går hela vägen och andra som avviker på olika sätt. Ta slutligen fram statistik för att kunna visa ledningen hur försäljningen går.
Startups
Den här delen är lite okonventionell. Fler systemvetare borde vilja starta eller jobba för startups istället för att bli konsulter. Jag har två inlägg med rekommenderat innehåll i det här ämnet, gör vad du vill av det:
Projektarbete: Bygg en app
Dags för ditt slutprojekt. Jag föreslår ett scope här men om du har en appidé med liknande komponenter är det bara att göra din grej.
Bygg en webbapp som låter användare skapa och hantera sin egen receptsamling. Den ska innehålla följande funktionalitet:
- Användarregistrering och inloggning.
- Förmåga att lägga till, ta bort och ändra sina recept.
- En sökfunktion för att hitta recept baserat på ingredienser eller nyckeltermer.
- Ett användarvänligt UI för att navigera bland sina recept.
- Förmåga att ladda upp bilder på recepten.
- En integrerad databas för att lagra information om användare och recept.
- Hitta ett gratis externt REST API för att hämta information om recept från en annan källa. Ge dina användare förmåga att söka fram recept via det API:t istället för att skapa receptet själv från grunden. OBS! Se till att lagra eventuella API-nycklar i backend för att dölja de från användarens klient.
- Använd en responsiv, mobilvänlig design.
- Applicera Google Analytics eller motsvarande på din applikation för att kunna spåra användning (och hitta förbättringsmöjligheter).
Slut på utbildning
Grattis, du är nu systemvetare. Utan ett examensbevis att visa upp kommer du behöva bevisa din kompetens. Ladda upp projektarbeten på Github och skicka med de i dina jobbansökningar. Visa upp designskisser, prototyper och dylikt som du skapat. Hör av dig om du behöver råd.