De gamle er eldst


onsdag 26. september 2012 Softwareutvikling Historie Digitalkonferansen

I forrige uke holdt jeg et foredrag på det tekniske sporet av Digitalkonferansen 2012. Her poster jeg slidene mine og alle notatene, slik at du også kan få med deg budskapet, selv om du ikke var på sørlandet denne fine septemberdagen.

Jeg fikk mange positive tilbakemeldinger på presentasjonen. Flere kommenterte at de likte det behagelige tempoet mitt, og de eldre blant publikum satte pris på at jeg påpekte at også de hadde noe å komme med for den moderne utvikleren.

Først introduserte jeg meg selv, firmaet (PSWinCom), og min rolle der. Men jeg hadde 30 slides å komme gjennom på 30 minutter, så jeg gikk raskt igang med selve foredraget... Her følger "lysbilder" og notatene:

Softwareutvikling anno 2012

Jeg gav foredraget mitt en såpass generell tittel fordi det betyr at jeg egentlig kan snakke om hva som helst. Bedre å be om tilgivelse enn tillatelse! Jeg lover derimot at det er en rød tråd i det jeg sier, selv om det ikke nødvendigvis kan virke sånn hele tiden.

Jeg har et spørsmål til dere: Har du noen gang følt deg dum?

Har du noen gang følt deg utilstrekkelig som utvikler?

Softwareutvikling anno 2012 (1)

Å være utvikler i dag betyr å bli bombadert med nye ting hele tiden - nye rammeverk, nye verktøy, nye programmeringsspråk, nye begreper, nye plattformer å utvikle for - ting man som en moderne utvikler i 2012 bør vite noe om for å ikke virke dum. Det kan være ganske overveldende, og det er lett å bli stressa.

Det jeg vil forsøke her i dag er å hjelpe deg å se en vei gjennom dette, en vei som ikke fører til stress, en vei som lar deg bli en dyktig utvikler som leverer gode løsninger uten å bli utbrent etter noen få år. Jeg håper dere er interessert i det.

Jeg skal begynne med å introdusere dere for en rekke personer...

Softwareutvikling anno 2012 (2)

La oss begynne her med en person dere alle kjenner. Steve Jobs. Grunnleggeren av Apple. Hyllet over hele verden for sine prestasjoner. Mobil er et sentralt tema her i dag, og det skyldes mye at Steve Jobs lanserte iPhone sommeren 2007, og AppStore sommeren 2008. Dette skapte et helt nytt marked, en ny plattform hvor vi utviklere kunne levere brukere det de vil ha.

Men jeg skal ikke si så mye mer om Jobs, bortsett fra at han døde 5. oktober i fjor.

Softwareutvikling anno 2012 (3)

Vet dere hvem dette er?

Dette er John McCarty. McCarty er personen som oppfant programmeringsspråket LISP. Han gjorde dette så tidlig som i 1958. Det finnes flere varianter av LISP som fortsatt brukes i dag, og språket anses fortsatt som det kraftigste språket vi har til å uttrykke oss som programmerere. Nær sagt ALLE programmeringsspråk som er laget siden har lånt elementer fra LISP. LISP var det første språket som hadde den typiske if/else-konstruksjonen. Og LISP var for eksempel også det første språket hvor man hadde garbage collection.

John McCarty er også grunnleggeren av fagfeltet kunstig intelligens. Alle som er interessert i kunstig intelligens burde se opp til McCarty som sitt store forbilde.

John McCarty døde også i oktober i fjor. Det er ikke like mange som har hørt om det dødfallet.

Softwareutvikling anno 2012 (4)

Vet dere hvem dette er da?

Dette er Dennis Ritchie. Dennis er først og fremst kjent for å ha utviklet programmeringsspråket C. Hvis noen har påvirket hvordan vi programmerer i dag like mye som John McCarty har gjort, så må det være Dennis Ritchi.

Hvis dere ikke har skjønt det enda så er jeg altså veldig opptatt av programmeringsspråk :)

Og tro det eller ei, men Dennis døde OGSÅ i oktober i fjor. Det er ikke så mange som har hørt om det heller...

Er det ikke ganske historieløst at media eller bransjen fikk med seg dette?

Softwareutvikling anno 2012 (5)

Dennis hadde en kollega og god venn som heter Ken Thompson. Sammen utviklet de UNIX. C ble utviklet fordi de trengte et programmeringsspråk til UNIX. Og C var basert på programmeringsspråket B, som var laget av Ken Thompson. Ken er også mannen bak UTF8-encodingen og mye annet rart. Det er smarte folk dette her altså.

Og bare så det er sagt - Ken døde IKKE i oktober i fjor! Han lever i beste velgående, jobber for Google, og har blant annet hatt en finger med i utviklingen av programmeringsspråket Go som Google har utviklet.

Grunnen til at jeg nevner Thompson er noe han sa til sønnen sin da han skulle velge karriærevei. Ken sa til sin sønn at han IKKE måtte bli programmerer! Det var etter Ken's mening ikke noen vits i å bli programmerer nå fordi det ikke har skjedd noe nytt og uforutsigbart innen programmering de siste 20-30 årene.., hvis man ser bort fra at vi fikk internett da.

Den dyktige utvikleren som står bak UNIX, og som fortsatt henger med og jobber for et av verdens mest spennende selskaper mener altså at det ikke gjøres noe nytt og spennende i denne bransjen. Hvordan passer dette sammen med hva jeg sa innledningsvis?

Softwareutvikling anno 2012 (6)

Dette bør dere vite hvem er. Han er norsk, og han lever også fortsatt.

Dette er Trygve Reenskaug, norges mest kjente, nålevende utvikler. Dere har hørt om MVC - Model-View-Controller? Det har jo blitt veldig populært å si at du bruker MVC-pattern de siste årene. Trygve var den som kom opp med dette patternet på 70-tallet, da han var på Xerox PARC i Palo Alto og jobbet med SmallTalk.

Var du så heldig å få høre Trygves foredrag på Norwegian Developers Conference i fjor, så hørte du ham si noe sånt som at det ikke har skjedd noen som helst utvikling i forhold til hvordan vi utvikler software, siden 60-/70-tallet. Han viste stor frustrasjon og var nesten litt sint over hvor lite vi har utviklet oss.

La meg introdusere én gamling til...

Softwareutvikling anno 2012 (7)

Dette vet sikkert mange hvem er: Robert C. Martin, også kjent som Uncle Bob. Personen som trommet sammen møtet som gav oss det smidige manifestet. En ledende skikkelse innen Software Craftsmanship bevegelsen.

Uncle Bob er en inspirerende foreleser, og har vært mye i Oslo. I et av foredragene sine sier han at hvis du hadde en tidsmaskin, hentet en utvikler fra 60-tallet og tok han med hit, så ville han (etter å ha kommet over kultursjokket) ganske lett kunne begynt å programmere med de verktøyene vi har i dag... Programmering har i bunn og grunn ikke endret seg fra den gang og til i dag.

Ja, vi har funnet på mange nye måter å strukturere og pakke inn programmene våre på, men i bunn og grunn er programmering ikke noe annet enn iterering, assignment (tilordning) og ta avgjørelser (if/else).

Softwareutvikling anno 2012 (8)

JavaScript er veldig HOT for tiden - noe alle snakker om. Node.js gir oss JavaScript på serveren, og det er det bare de kuleste av de kule som driver med.

Men JavaScript er selvfølgelig ikke noe nytt - det ble utviklet i 1995 - det er 17 år siden det.

Og JavaScript på server-siden har vi hatt like lenge - er det ingen som har hørt om Netscape Enterprise Server, lansert omtrent samtidig med JavaScript?

Softwareutvikling anno 2012 (9)

Erlang er et annet språk - og en plattform - som har blitt lagt merke til de siste årene, fordi det er så bra egnet til å lage robuste, distribuerte systemer.

Men Erlang er ikke noe nytt! Erlang ble utviklet på 80-tallet!

Softwareutvikling anno 2012 (10)

Funksjonell Programmering da? Det er hot det! Det har dukket opp mange, nye språk for dette, og det er vel det siste nye? Jeg tenker på språk som Scala, F#, Clojure osv.

Men funksjonall programmering er mye eldre enn f.eks. objektorientert programmering. Funksjonell programmering var hot på 60-tallet det. Faktisk kan vi gå helt tilbake til LISP på slutten av 50-tallet for å finne røttene til funksjonell programmering.

Så funksjonell programmering er i alle fall ikke noe nytt.

(Har la jeg også inn en kommentar til et foredrag som Morgan Simonsen fra Atea holdt tidligere på dagen, hvor han fortalte at Cloud-teknologien – hvordan vi snakker om og bruker nettskyen i dag – første gang ble beskrevet (og beskrevet ganske nøyaktig, bare med et annet navn) i en bok publisert i 1966. Nettskyen er ikke noe nytt!)

Softwareutvikling anno 2012 (11)

Softwareutvikling har altså - i alle fall i følge en rekke, gamle utviklere - ikke utviklet seg særlig mye de siste 20 - 30 - 40 - kanskje 50 årene. Det er den blå kurven. Vi gjør ting i større skala, og med større komersiell suksess, men i bunn og grunn gjør vi det samme som folk har gjort før oss.

Hva er det som har utviklet seg da? Hardware! Hardwaren vi bruker, den har utviklet seg. Teknologien som ligger i bunn. Hvordan datamaskinen har infiltrert stadig nye områder, og blir viktigere og viktigere i vår hverdag.

Softwareutvikling anno 2012 (12)

iPhone ble som sagt lansert i 2007, og i 2008 kom AppStore. I 2010 hadde Apple hatt 25 milliarder nedlastinger fra AppStore. Bruken av Smartphones har nå nådd en kritisk masse.

Jeg har funet frem et par grafer som viser litt om veksten i Norge:

Softwareutvikling anno 2012 (13)

(Jeg sa nok noe her også, men ikke noe annet enn hva du kan se ut av grafen.)

Softwareutvikling anno 2012 (14)

(Og her sa jeg noe om at vi ser en stor trafikkvekst fra mobil og tablets, mens trafikken fra desktop holder seg stabil.)

Softwareutvikling anno 2012 (15)

Da jeg begynte i softwarebarnsjen jobbet jeg med litt av hvert. Etter en stund ble det mer og mer utvikling for web, og jeg benynte å kalle meg en webutvikler. I dag er det nesten ingen som kaller seg for webutviklere - man er bare UTVIKLERE. Nesten alt har med internett å gjøre i dag. Webutvikling er implisit.

Jeg tror vi snart er der når det gjelder mobil også. I dag er det mange som sier de er mobilutviklere - de er spesialister på utvikling for mobile plattformer. Men jeg tror vi er der nå hvor omtrent alle utviklere må ta inn over seg at vi alle må være mobilutviklere, slik vi alle er webutviklere.

Softwareutvikling anno 2012 (16)

Vi kan ikke lenger fokusere på bare webbruk fra desktop - vi har mobil også. Folk forvente å kunne få tilgang til informasjonen sin på mobilen, og vi må tilpasse oss!

Softwareutvikling anno 2012 (17)

Men det vil være feil å fokusere bare på desktop og mobil - vi har tablets også! Tablets har andre bruksmønstre enn både desktop og mobil, og de begynner og bli ganske utbredte de også.

Softwareutvikling anno 2012 (18)

Men, det vil være feil å fokusere på bare desktop, mobil og tablets - nå kommer smartTV'ene for fullt!

Og det kommer ikke til å stoppe der...

Softwareutvikling anno 2012 (19)

Dette er en fyr som går med Google Glass. (Fortalte litt om hva dette kommer til å være, og hvilke fordeler det gir. Senere på dagen fortalte ex-IT-direktøren fra Norwegian at de hadde vurdert å satse på Google Glass til sine serviceteknikere.)

Glass vil sannsynligvis være tilgjengelig allerede fra neste år av.

Softwareutvikling anno 2012 (20)

Eller hva med dette?

Dette er et headset som heter EPOC. Dette har vært tilgjengelig på markedet i noen år nå, og lar deg kontrollere datamaskinen vha. tanker og følelser. Det er vistnok ikke enkelt å bruke, men dette kommer til å bli bedre med årene.

Utviklingen av nye bruksområder for teknologi går bare raskere og raskere. Om vi alle kommer til å gå runndt med VR-briller og styre computeren vår med tankene om fem år, det vet jeg ikke. Men at utviklingen kommer til å fortsette er jeg overbevist om!

Softwareutvikling anno 2012 (21)

Det vi opplever er at brukeren ikke bare ønsker, men krever tilgang til informasjonen sin og funksjonene sine, samme hvor han befinner seg.

I en keynote i 1990 presanterte Bill Gates slagordet sitt – "Information at your fingertips" – og beskrev et samfunn hvor man alltid hadde tilgang til informasjon. Han beskrev verden slik den er i dag!

Softwareutvikling anno 2012 (22)

På NDC i år ble jeg introdusert for begrepet "device-first computing". Det dreier seg om å lage løsninger tilpasset det kunden vil ha nå – i 2012.

Softwareutvikling anno 2012 (23)

Bla, bla, bla.... (sa noe mellom linjene her også, men hva?!)

Softwareutvikling anno 2012 (24)

Jeg sa jeg ville hjelpe dere å takle den enorme strømmen av ny informasjon, nye produkter og teknologier, og hjelpe dere å se hverden på en ny måte. Her kommer noen konklusjoner..

Første konklusjon kommer i form av et sitat fra en pioner innen programmering som heter David Parnas....

Softwareutvikling anno 2012 (25)

Altså: de fundamentale ideene er viktigst, ikke den siste, nye teknologien. Ikke kast alt det gamle på båten hver gang Apple eller Google eller Microsoft kommer med noe nytt.

Softwareutvikling anno 2012 (26)

Bransjen vår er ikke historieløs, men mange utviklere er det. Hvis vi skal komme noen vei må vi slutte å finne opp hjulet på nytt og på nytt.

Softwareutvikling anno 2012 (27)

For å få til å gi brukeren riktig opplevelse tilpasset riktig kontekst (med de ressursene et normal IT-selskap eller IT-prosjekt har i Norge) må vi ikke henge oss for mye opp i detaljene eller hver enkelt device.

Jeg vil avslutte med et sitat fra nok en eldre herremann – oppfinneren av programmeringsspråket Smalltalk. Og den egentlige oppfinneren av iPad en gang på 70-tallet.., ikke at Apple noen gang kommer til innrømme det...

Softwareutvikling anno 2012 (28)

Ikke kast deg på alt det nye som alle andre kommer med. Utdann deg, gå til kilden, lær av historien, og du vil være bedre rustet til å møte dagens og morgendagens utfordringer!


comments powered by Disqus