Programmering Hur, var, när och varför 22 November Lars Ohlén Tieto lars.ohlen@tieto.com
Agenda Om mig Programmering Vad är? Varför kunna? Hur använda kunskapen? Framtiden Sammanfattning Q+A 2
Om mig Arbetat mer än 25 år i IT branschen 30 år med programmering Arbetat på statliga myndigheter, konsultbolag och produktbolag Olika roller: programmerare, systemledare, arkitekt, affärsutveckling Anställd på Tieto 18000 anställda 30 länder Ledande IT företaget i Norra Europa Karlstad ca 450 anställda
Jag och programmering Min trevande början 10 PRINT HEJ 20 GOTO 10
Jag och programmering Min trevande början 10 PRINT HEJ ; 20 GOTO 10
Programmering En definition Programmering handlar om att instruera en maskin eller del av en maskin, till exempel en mikrodator, dator, robot eller NC-maskin att utföra ett visst arbete [Wikipedia, 2012-11-13] 6
Programmering I Vardagen Ex Inspelningsbar DVD Timers Klimatkontroll 7
Programmering I Vardagen Microsoft Excel 8
Programmering I detta sammanhang Programmering är att skriva rätt instruktioner i ett programspråk för att lösa ett visst problem. [Lars, nyss] 9
Vad finns program? Stationära datorer Laptops Stordatorer Smart Phones 10
Program Överallt! Hissar Blu-Ray spelare Bilar I våra hem 11
Program Några ytterligare definition Många olika typer av program. Ex Klientapplikation (Windows /Linux) Appar (för Smart Phones) Web applikationer Server lösningar Drivrutiner (styrprogram) för t.ex. printrar Inbäddade system (gränsen mellan hårdvara tunn) Många namn: Program, Programvara - det kom körs Mjukvara, Software, källkod, kod - det man skriver Program som samverkar kallas system Ex. operativsystem 12
Program i sin enklaste form 0101000110100101 0101000101010001 0101100101010101 1110011101111111 13
Program Historia Från Wikipedia 14
Olika programspråk MOV AH,9 MOV DX,offset hello INT 21h MOV AH,4Ch INT 21h hello db 'Hej',0dh,0ah,'$' Assembler #include <stdio.h> void main (int argc, char **argv) { printf ( Hej\n ); } C public class Message { public static void main (String[] args) { System.out.println ( Hej ); } } Java 15
Programmering En enkel beskrivning Symbolisk beskrivning Källkod Översättning 01010001 10100101 01010001 01010001 01011001 01010101 11100111 01111111 Körbar kod 16
Programmering Många olika programspråk Varför finns det många olika programspråk? Ändamål! Miljömiljön Ingen kan alla språk - många kan några Programspråket C grund till många 17
Vad gör programmeraren? En programmerare: Kan programvarukonstruktion (Software Engineering) Algoritmer och datastrukturer Kan programspråket som används Goda kunskaper om målmiljön Har domänkunskap! 18
Vad gör programmeraren? Skapar program som: Uppfyller de krav som ställts (av kund) Är fel - och driftsäkra Utnyttjar datorns resurser på ett effektivt sätt Skriver programkoden på ett sätt som andra kan förstå Enkelt går att vidareutveckla 19
Programutveckling Programmerarens roll klassiskt Behov Krav Modell Program Verifierat program Kravdefinition Design Programmering Test
Programmerare -> Systemutvecklare Finns nästan inga programmerare längre! Titeln är oftast systemutvecklare Design Test Dialog med kund om krav Modern mjukvara skrivs inte - den byggs ihop! Ta in färdiga komponenter 3rd parts inköpta moduler Open Source Integrera med tjänster på nätet Öppna tjänster Cloud tjänster
Att arbeta som systemutvecklare Arbete sker ofta/alltid i projektform Projekt består av 1 eller flera teams Oftast enligt Scrum, Canban (projektformen) Team Cross-functional teams Ofta geografiskt spridda Självständigt Korta delmoment Work tasks drivet (arbetsuppgift, felrapporter) Kontinuerlig testning Tät avstämning med kund
Vardagsvy 23
Arbetsprincip Tasks databas Arbetsuppgifter (JIRA, Jazz, Bugzilla) Utvecklings miljö Skriver programkod Kompilerar Debug Unit test Uppdaterar tasks Check-in / check-out Versions hantering system Källkod (SVN, Git etc) 24
Vanlig arbetsmetodik Continuous Integration Static Code analysis Versions hantering system Continuous Integration (Jenkins, Hudson) Build Test incheckningar Deploy 25
Varför kunna programmering? Jobba i IT branschen men inte med programmering IT branschen har många andra yrkesroller. Ex Projektledare Testare Kravanalytiker Arkitekter Team ledare Chef Genomgående är att man klarar alla roller mycket bättre med bra insikt i programmering Bättre överlevnad I grund och botten: All IT verksamhet bygger på mjukvara! 26
Varför kunna programmering? Varför ska en icke IT ingenjör kunna programmera Mjukvara styr världen! Gränsen mellan hårdvara och mjukvara suddas ut De senaste 20 åren har hela branscher ställts om Finansindustrin, Bilindustrin, Telefonoperatörer Mjukvaran är företaget kan inte bara hanteras av IT människor! Domänkunskapen + programmeringskunskaper = din personliga framgång! 27
Varför kunna programmering! Varför ska en icke IT ingenjör kunna programmera Roll som kravställare Bättre dialog med systemutvecklare! Kombinationskunskaper viktig för innovation Konkurrensfördel för din potentiella arbetsgivare 28
Framtiden Det är svårt att göra förutsägelser i synnerhet om framtiden [Niels Bohr]
Framtid. Värden kommer att vara ännu mer beroende av mjukvara 50 miljarder uppkopplade enheter inom 10 år Prylar som idag är dumma kommer att bli smarta Enorma mängder data som genereras! Högre hastigheter och täckning på mobilnäten Nya tjänster som inte finns än 30
Framtid. Kraven på utveckling kommer att förändras Få fram mjukvara på kortare tid, med mer finnesser och till ett lägre pris! Principer för systemutveckling måste förändras! Snabbare gå från krav till färdig lösning Modellbaserad utveckling kan vara en lösning Beskriva system med grafiska modeller (ex UML) Generera kod alt exekverbara modeller 31
Sammanfattningsvis Mjukvara är ett viktigt konkurrensmedlen i många branscher. Program finns överallt Systemutvecklare måste ha domänkunskap Programmeringskunskaper en bra baskunskap även om du inte tänker jobba med programmering Mjukvara kommer att bli ännu viktigare i framtiden Mjukvara i miljarder uppkopplade prylar Sättet vi tar fram mjukvara på kommer att förändras
? 33
Tack! 34
35