Category Archives: development

Tips til digital samhandling

I disse tider med hjemmekontor er det nyttig å dele erfaring med verktøy for distribuert samhandling. Her er mine favorittverktøy.

Workshops: Jeg har positiv erfaring med av online workshop ved bruk av Miro.com. Verktøy for visuell samskaping. Veldig lett å komme i gang. Mentimeter har jeg også hørt om for workshops og møter.

Interaktivt board på Miro.

Møter:
– Statusmøter – gjerne korte og oftere.
– Online lunch hvis det passer er fint av og til.
– Sosiale aktiviteter med kolleger online.
– Bruk kombinasjon av verktøy og vær tilpasningsdyktig.

Samhandlingsverktøy som jeg kan anbefale på det varmeste er Slack og Flowdock. Microsoft Teams er også OK, litt mindre mobilvennlig. Noen bruker Facebook Workplace, også har jeg hørt om men ikke brukt Twist. Jeg har også brukt Teams for 10 min statusmøter for barn i barnehagen, funker best når kan er 4 stk. Deling av ideer: Wake. For å engasjere folk: Kahoot quiz.


Slack er brukervennlig også på mobil.

Video chats og screenshare: Whereby (opptil 4 deltakere i gratis plan, enkel tilgang via åpen url), Zoom (kan ha veldig mange deltakere, brukes i undervisning på universitet), Google hangouts. Jeg har også hørt om Confrere og Webex men har ikke prøvd dem. En del av programmene har kommet med gratis versjoner i korona-tider. Fikk også tips fra folk i Smidialliansen om Discord som er gratis og støtter opp til 9 stk på video. Hopin for online events.

Prosjektstyring: Trello – superenkel (og mye bra gratis). Basecamp kan jeg også anbefale. Andre slike verktøy – JiraAsana og Monday.

Enkel oppgavestyring med Trello.

Dokumentlagring: Vi bruker Microsoft Teams internt og det er lett å finne frem Recently used documents. I andre sammenhenger og privat bruker jeg Dropbox Paper og Google Drive. Hvis jeg skal sende store filer en gang så bruker jeg: https://wetransfer.com/

Ha en fin hjemme-hverdag!

Reportasje fra Build Stuff

Vanligvis drar jeg på konferanser som dette fordi jeg holder foredrag. Denne gangen slappet jeg helt av og koste meg. Det var tre gode dager med foredrag og to dager workshops med temaer fra quantum computing til opplevelser som meditasjon med stearinlys.

Darija at Build Stuff

Build Stuff er en IT-konferanse i Vilnius (holdes også i Malaga og Ukraina). Det var bra hotell, like ved et shoppingsenter, geeky stands og innholdsrike samtaler om programmering og utviklerlivet. Årets tema var «Software jungle. Join the tribe» og underholdningen var godt knyttet til temaet og til lokalene.

Åpning med trommer og publikums engasjement.
Åpning med trommer og publikums engasjement.
Utsikt over sentrum av byen fra speakers frokostbuffet i 22 etasje.
Meditasjonstime mellom hektiske sesjoner.
Jeg har lukket øynene og fikk veiledning i å gå på rare ting. Noe føltes som glass. Det var bare pasta og Lego. Så opplevelsen var positiv.
På denne standen fikk jeg gravert sugerør med mitt navn. Litauen er kjent for laserteknologi. Nå for tiden graveres det mest på glass.

Favorittforedragene mine:

Johannes Brodwall

Johannes Brodwall med foredraget sitt om OpenID Connect topper listen. Såpass tørt tema som innlogging var forklart og demonstrert på en tydelig og engasjerende måte. Jeg og to andre tilskuere ble trukket opp på scenen og instruert i et lite skuespill for å demonstrere teknologien. Terningkast 6!

OpenID Connect - er en enkel identifikasjonsmekanisme. På sider som støtter OpenID, trenger ikke brukerne å registrere seg med et eget brukernavn og passord for å få tilgang, og dermed få en konto å holde styr på for hver ny side man besøker. I stedet autentiseres man via en side som støtter OpenID som for eksempel Microsoft, Google eller ID-porten.
David Phillips

Kjent TED speaker David Phillips åpnet konferansen med keynote «The magical science of storytelling». Foredraget var underholdning på høyt nivå, godt strukturert og lett å huske. Jeg har lært hvilke elementer i historier som trigger hvilke hormoner og som gjør oss mindre rasjonelle og påvirker våre beslutninger.

Quantum computing er endelig forklart av en ung forsker fra Stanford & Harvard – Jessica Pointing. Hun brukte en smultring som analogi for å forklare qubits, snakket om googles-gjennombruddet med den første oppgaven løst av quantum computing, og gikk gjennom praktiske verktøy (fra IBM, Google og Microsoft) for de som har lyst å prøve seg på det.

Kvandedatamaskin kan i teorien utføre beregninger. For å fungere må kvantedatamaskinen være ekstremt kald, med temperatur ned mot det absolutte nullpunkt. Disse maskinene vil dermed ikke erstatte klassiske datamaskiner, men vil brukes i tillegg for noen få algoritmer som er for tunge til å løse på en klassisk måte.
Lemon

Lemon med foredraget sitt «I’m going to make you stop hating CSS» leverte det han lovet. For de spesielt interesserte som har lyst å prøve seg på forontend: Besøk Grid Garden  http://cssgridgarden.com/ og Flexbox Froggy http://flexboxfroggy.com/. For de med konkurranseinstinkt  – CSS Battle på https://cssbattle.dev/

CSS (Cascading Style Sheets) bestemmer utseende på en nettside, for eksempel bakgrunnsfarge, skriftstørrelse, avstander. 
HTML (HyperText Markup Language) bestemmer innhold på nettsiden og hvordan det er strukturert. 

Favorittunderholdning:

Dylan Beattie and the Linebreakers er kodere som lager coverlåter med IT tekster. Kan du ikke koding? Du kommer til å forstå mer om koding og utviklerlivet etter at du har hørt på musikken.

(..) «There must be a bug in the JavaScript… (..) Cause everything else was built properly, but the front end is a pile of crap» (Cover av Billy Joal «Piano man»)  >>

(..) «I wrote my «Hello, World»-program in 16 kb of RAM» (..) «Finally came to a conclusion. I’ll do a big rewrite» (..) And it’s gonna compile the first time»  (Cover av Don McLean «American Pie»)

Linebreakers
(..) «Young man! Back when I was your age it was use net, not a link on a page, alt dot binaries
that was where we would go when we wanted things to download» (Cover av «Village People» av YMCA) https://www.youtube.com/watch?v=mQnF1BBBtXs

(..) «We´re gonna build a framework!
Cos we wann’a use one, but don’t wann’a choose one» (Cover av Billy Joel «We Didn’t Start the Fire»)

(..) «Your API is a pile of shame
You gave Rest a BAD name» (Cover av Bon Jovi «You give love a bad name»)

(…) «We gonna cut them all Features gonna creep (…) Nobody cares if we run on Windows phone» (Cover av Adele’s «Rolling in the Deep») >>

(..) «Be kind to your keys You’ll miss them when they’r gone» (Cover av Luhrmann «Sunscreen») >>

(..) «We can’t deploy things to production (..) All in all it’s just an Enterprise Waterfall» (Cover av Pink Floyd «Another Brick in the Wall») >>

Jeg avslutter her. Uten oppsummering. For  jeg leter fortsatt etter en ny sang fra kveldsunderholdningen «Are we coders or web designers» (Cover av The Killers «Human»). 

Tekst: Darija Sapozenkova-Hauge. Artikkelen publiseres også i Typografiske Meddelelser (TgM) – et fagblad utgitt av Oslo grafiske fagforening. Takk til Eva-Lill Bekkevad for korrekturlesing. Youtube screenshots fra Dylan Beattie cover musikk.

Darija Sapozenkova-Hauge
Darija Sapozenkova-Hauge, sjefskonsulent og teamleder i Experis Ciber AS

Utvikleren som designeren ønsker seg

Jeg jobber med teknologer i det daglige og ønsker å dele erfaringer om hva UX og bedriften forventer av en god utvikler. I artikkelen kan du lese om hva er en kick-ass utvikler er i mine øyne –  og hvordan kommer vi i mål sammen.

#soft-skills  #kick-ass utvikler

Hva forventer en designer seg av en utvikler?

Jeg har spurt designfolk rundt omkring om hva kan en utvikler gjøre for å imponere en designer.  Svarene jeg fikk var blant annet at utvikler bør: «Komme med sine ideer og tilbakemeldinger»”, «Bli med på brukertest», «Være i kontinuerlig dialog og tettere samarbeid», «Spørre hvis man lurer på noe», «Være med på å definere kravspesifikasjonen». Den røde tråden her er kommunikasjon. Vi vil ha mer dialog med utviklerne. 

Hva forventer en designer seg av en utvikler?

Jeg har spurt designfolk rundt omkring om hva kan en utvikler gjøre for å imponere en designer.  Svarene jeg fikk var blant annet at utvikler bør: «Komme med sine ideer og tilbakemeldinger»”, «Bli med på brukertest», «Være i kontinuerlig dialog og tettere samarbeid», «Spørre hvis man lurer på noe», «Være med på å definere kravspesifikasjonen». Den røde tråden her er kommunikasjon. Vi vil ha mer dialog med utviklerne. 

I mine øyne er de tre tingene som en utvikler imponerer meg med (i tillegg til forventet kunnskap i faget sitt) at: 

  • Jeg kan få rask avklaring
  • Utvikler tar initiativ til dialog
  • Dialogen er tidlig og tydelig

Raske avklaringer om forslag fra designer

– For å velge riktig hypotese, trenger en å se på spørsmålet fra flere perspektiver: forretningsmessig, menneskelig, teknologisk og noen ganger, intern-politisk. Teknologiske muligheter avklarer jeg med utviklere. Jeg beskriver eller viser noen varianter til en utvikler og spør hva han/hun synes.  «A eller B?» Noen ganger er forslag A enklere å utvikle enn B, noen ganger er det ikke så lett å si, og noen ganger er det ingen betydelig forskjell i utviklingstiden. I det siste tilfellet blir ikke utviklingstimene del av kabalen når jeg skal komme med anbefaling til bedriften. 

– Ofte har jeg et konkret og kort spørsmål som starter med «Er det mulig…?» Det er enkelt når jeg får svar enten «ingen problem» eller et klart «nei». Noen ganger får jeg svaret  «Jeg må undersøke litt til».

Screenshot fra samtalen på Slack. Utvikler viser at tekst på siste linje tar alt for mye plass på minst størrelse av device som vår native app støtter. Problemet var løst ved å gjøre paddingen og ikoner litt mindre. 

Screenshot fra samtalen på Slack. Utvikler tar kontakt og foreslår teksten som mangler i web-view header. Sjekker noe og følger opp. Saken blir løst. 

«Jeg er veldig fan av at utviklere kommer med innspill til design».
Martin G, designer, Gjensidige

Og det er enda mer kult når en utvikler foreslår ny funksjonalitet.

«Programmerere har ofte de beste ideene til tekniske muligheter. For å vite om en ide er gjennomførbar er det ofte avgjørende at en programmerer tar initiativ til å lage en fungerende prototype».
Johannes B, utvikler, Sopra Steria

Yurii P, iOS utvikler hos EVRY har foreslått ny funksjonalitet. Ideen falt i smak og Yurii har utviklet en prototype som demonstrere basis-funksjoner. Dette er imponerende og det synes. 

Men det som også er veldig viktig er å ikke glemme når utvikler agerer ad-hoc. «Det har oppstått en feil her, kan du fikse det ASAP?». Slik teknisk feil kalles en «bug» og kunden blir rimelig provosert når det oppstår. Her må man agere fort. 

Diverse former for kontinuerlig dialog

Når en utvikler er «in the zone», hater han/hun å bli distrahert fra koding. De bør helst ikke bli forstyrret. Men vi på forretningssiden har behov for å avklare. Derfor trenger vi flere måter å samhandle på, avhengig av type problemstilling. Jeg har fast statusmøte med utvikling hver sprint. Min favoritt kanal for raske avklaringer er Slack. Når vi skal løse litt større ting, er det best med møte eller workshop.

Darija viser ideer til utviklere for å avklarer hva det er mulig å gjennomføre, og hvordan.
Den gode utvikler kan faget sitt, er tydelig og er tilgjengelig når det trengs.

«Uansett hvilket fagområde man jobber med, er det viktig at man viser interesse for hverandres fagfelt. Nysgjerrighet, initiativ, våge å stille spørsmål – ofte og tidlig (unngå antagelser), tenke utenfor ditt eget fagfelt. Istedenfor å sitte med «design» og så «utvikling», bør man jobbe samtidig med alle deler av oppgaven. Ikke overleveringer, men diskusjoner og spørsmål.»
Martin S., designer, Bekk

Vi er helt avhengige av dialog med utvikling for å prioritere riktige ting. 
For at vi kan sammen skape verdi så bør vi snakke sammen.

For å ha god kommunikasjon må vi snakke sammen ofte. For å få vellykket resultat må vi snakke sammen tidlig. For å få behagelig kommunikasjon må dialogen være tydelig. Et godt digital produkt oppstår gjennom et tverrfaglig team og engasjerte deltakere.


Tekst og bilder: Darija Sapozenkova-Hauge. Artikkelen publiseres også i Typografiske Meddelelser (TgM) – et fagblad utgitt av Oslo grafiske fagforening. Takk til Eva-Lill Bekkevad for korrekturlesing.


Darija Sapozenkova-Hauge, senior interaksjonsdesinger i Ciber (Experis). blog.darijasart.com
Darija Sapozenkova-Hauge, sjefskonsulent og teamleder i Experis Ciber AS

Java for ikke-programmerere

Favorittfilmen min fra 90 tallet er The Matrix. Hovedkarakteren, Neo, jobber som hacker for å tjene ekstra penger og så oppdager han at den verdenen han trodde på bare var en illusjon. Programmerere flytte seg oppover i verdikjeden og det var ekstra kult å kunne data og koding. Det å kunne koding er enda mer relevant i 2019.

Programvare ligger bak alt vi gjør om dagen. Om du sjekker Facebook, slår på lyset, sender blodprøver til laboratoriet eller velger barnehage for barna. For at du skal kunne overføre 100 kroner via en mobilbank-app, ligger mye kompleksitet bak det, som systemer, registre og databaser.

Jeg er teamleder for Javautviklere i konsulentselskapet Ciber og du kommer til å bli kjent med:

  • Hva er Java
  • Hvem er en typisk Javautvikler
  • Hva lages med Java  
  • Hvordan føles det å kode i Java

Artikkel er en blanding av egen research, eksempler fra java-teamet mitt i Ciber og et helt magisk intervju med java-guru Johannes Brodwall.

Johannes Brodwall – Sjefskonsulent i Sopra Steria, Norgeskjent Java-guru og grunnlegger av Mobile Era, Smidigkonferansen og XP meetup. Johannes har vært nominert til årets konsulent av Konsulentguiden 2019. Twitter: @jhannes


Hva er Java?

Java er et programmeringsspråk som kom på 1990-tallet og kom til bli. Det kom som en forbedring av et annet programmeringsspråk som heter C++ men der utviklere kvittet seg med  50 prosent av «bugs».

Java kan «kjøre» på forskjellige plattformer og er objektorientert. Java ble brukt for å lage programvare for små enheter som TV og brødrister. På slutten av 90-tallet var Java det desiderte beste valget da mange norske selskap valgte å utvikle sine tjenester og produkter. Java brukes mye av blant annet NAV, Skatt, Telenor, Norwegian, Sparebank1 og DNB. Litt senere kom C# med Microsoft som offisiell støtte og som kan levere samme funksjonalitet som Java. C#-investeringer kom på 2000-tallet og er brukt for eksempel i Helsedirektoratet, Statkraft, Statnett og mange kommersielle selskap.

– Hvorfor er Java så stor i dag?

  1. Java har en offisiell organisasjon – Oracle, som vedlikeholder språket og stadig kommer med nye oppdateringer, slik at Java er i sync med moderne teknologier.  
  2. Java er stort. Det finnes millioner av java kodelinjer som trenger vedlikehold.
  3. Java er et stabil. Serverne krasjer sjelden.
  4. Bra programmeringsopplevelse. Med Java venter programmereren 1 sekund før man kan se effekten av endringene sine, mens du med for eksempel C# fort kan vente i et minutt eller mer.

Java på topp av viktige statistikker:

  1. Nummer en på liste i perioden 1999-2019 ifølge TIOBE index (hits per search query). Det betyr at Java viser seg å være stabilt over tid (20 år).

     

  2. Første plass (16.005%) på TIOBE index liste i 2019. 
  3. 41.1% av 90 000 respondenter av Stackoverflow undersøkelsen bruker Java. Stackoverflow er populær teknologi-webside med 500 milioner besøk per måned).
    
    
  4. Andre plass (20.25%) på plass på Popularity of programming language index liste. Index-tallene kommer fra mest søkte opplæringsvideoer på Google via Google Trends.

– Hvis Java var mat, hva slags matrett hadde det vært?

Ifølge Johannes Brodwall kan man sammenligne Python med en, JavaScript med fancy bryllupskake, mens Java og C# er catering – serverer mange og fort.

Hva er laget med Java?

Jeg vil dele noen eksempler fra kollegene mine i Ciber.

André

André Sjøvoll jobber som java konsulent hos  i forvaltning hos Statens Vegvesen (SVV). Han vedlikeholder flere systemer. Et av systemene heter VegSak. Der kan brukerne søke om tillatelse å kjøre med tung, lang, bred eller høy last og saksbehandler hos SVV kan besvare forespørselen. Transportører får utstedt et løyve for å utføre transporten. 
Stikkord: #Java8  #Spring  #Hibernate  #JSP  #Soap Web Services  #Stackoverflow  #Maintenance

 

Thao

Thao Le er seniorkonsulent i Ciber, og utvikler på blant annet Meldingsformidleren for Statens Vegvesen. Denne applikasjon brukes så fagsystemer i Statens Vegvesen kan sende digital post til innbyggere og virksomheter. Applikasjonen benytter Altinn og DIFIs SOAP-tjenester for mottak av digital post. Thao beskriver applikasjonen som «Spring Boot-applikasjon som kjører på Java 8 og Tomcat, har database-integrasjon og en frontend». 

Stikkord: #Java8  #Tomcat #Spring Boot #Frontend

Sven-Jørgen

Sven-Jørgen Karlsen jobber som senior java konsulent hos NAV. Han lager et system som utveksler sosial sikkerhetsinformasjon mellom NAV og EU. Spør du ham, så sier Sven-Jørgen: «Jeg jobber med EESSI-basis som er et sett av mikrotjenester i Spring Boot som kjører på Kubernetes cluster.»  

Stikkord: #Agile Automation  #Kubernetes  #Docker  #Microservices  #Spring Boot  #Jenkins 2  #EESSI

Cato

Cato Eik er Java-fagleder i Ciber og jobber som senior utvikler hos Eika bankene. Cato utvikler et system der brukeren kan søke lån eller kredittkort. Cato, som de fleste Java-utviklere jobber på server-siden (backend). 

Stikkord: #Java8 #Micro Services  #Open Shift  #Liquibase  #Jersey  #Automation  #BanID 

 

Hva er en typisk Java-utvikler?   

I følge Johannes Brodwall finnes det en stereotypi som er sann: En mannlig backendutvikler er ubarbert, mens en frontend utvikler har fint skjegg eller bart. Kvinnelige frontendutviklere har bluse, mens backendutviklere har genser. Skal utvikleren på jobb og vil unngå å gå i møter, så tar de på seg sort t-skjorte fra utviklerkonferanse eller en hoody. Skal man på møte den dagen, så bruker man farget skjorte. Har en utvikler fine bukser eller jakke – er det et faresignal om at han eller hun har begynt å jobbe alt for mye med management og ikke er så god til å programmere lenger.

Hva motiverer en utvikler?

  1. Fullføre piece of code
  2. Lære nye ting
  3. Føle mestring

Hvilke personegenskaper bør en utvikler ha?

1. Forståelsen av at man ikke er dum bare fordi man ikke klarer å løse en oppgave og ikke gi opp. Det kan ofte skje at du sitter med en kode som ikke funker. Og du vet ikke hvorfor. Etter flere timer med frustrasjon finner du ut at det var bare en ekstra parentes som satt i koden. Med tiden lærer man å løse enkle problemer, men man kommer opp i mer komplekse problemstillinger. Derfor er det smart for en utvikler å dele opp oppgavene slik at man kan oppnå noe til tross for at man ikke oppnår alt.

2. En god utvikler trenger oppmerksomhet for detaljer. Maskinen gjør eksakt det den er bedt om å gjøre, selv om det ikke var det man mente å be den om.

3. Tålmodighet til å koble mentale biter sammen.

Hvordan ser en dårlig kode ut?

Man sier at all kode som man ikke har skrevet selv, er en stygg kode. Og det er ofte sant. Men det finnes noen karakteristiske trekk som gjenspeiler en dårlig kode:

  1. Koden kan være rett og slett slurvete (dårlig formatert).
  2. Det kan være for mange koder der det er ikke nødvending.
  3. Dårlig organisert og dårlig implementert kode.  

Slurvete kode er enklere å se og lett å fikse, mens dårlig struktur er veldig tidkrevende.

– Hvordan vet man at noen er en god programmerer?

Johannes  kan du ikke vite det hvis du ikke forstår koding. Du kan be noen å parprogrammere, og så høre med vedkommende om hvordan det gikk.

Hva er Java programmeringsopplevelse?

«Backend runs on the servers, frontend runs on the browser. I work on the server side.»

Man sitter ofte foran flere store sorte skjermer, med favoritt-tastaturet. Java er backend og det som lages er ikke direkte synlig for brukere, men når browseren kommer opp i bildet er den hvit. Og det er bedre for øynene å sitte foran hvit skjerm.

Arbeidsverktøy

For å komme i gang med Java, så må man laste ned JDK (Java development kit). JDK kommer med 25 000 classes (extensive libraries). Man bruker ofte IntelliJ for å lage java kode. Eclipse er i følge Johannes et enda bedre editeringsverktøy, men det er ikke så mange som bruker det. Man kan også editere i TextPad, NotePad, Visual Studio, VS Code m.m.

Til venstre ser man Project Explorer i IntelliJ med mappestruktur, til høyre skriver man kode, nede ser man hvordan koden kjøres. Her lages .java filen og konverteres til .class fil.

På PC har man Command Line Window (Terminal på MAC) som kjører .class fil.

Systemet på bildet er brukt til internt vedlikehold i redningssystemer i Norge. Til venstre ser vi JavaScript i en Chrome browser. Det er frontend men det er tydelig ikke berørt av en designer. Til høyre ser man Chrome debugging tools.

Når jeg ber Johannes å utdype hva systemet gjør så sier han: «You can see network requests that are used by the client (written in JavaScript) to fetch data from the server (written in Java)» Han insisterer på at det ikke går an å si dette på en mer allment forståelig måte, så jeg må nøye meg med den forklaringen.

Syntax

Java, som alle programmeringsspråk har sine regler. Blå er såkallte nøkkelord som utgjøre hovedgramatikken. Det finnes også data typer, operators, variable, kommentarer og flere konstruksjoner.

Her ser man et program som søker etter ordet «Cat».

La oss se på elementtypen «Comments».  Johannes forteller at det finnes 3 måter å kommentere på i Java.

// Kommentar på en linje. Brukes for korte kommentarer, ofte TODO huskepunkter

/*
Kommentar på flere linjer. Brukes ofte for å beholde en kopi av gammel kode, eller alternativ variant av kode, eller tanker man hadde da man skrev kode. 
*/  


/**
* Såkalt javadoc. Det er dokumentasjonskommentar
* en linje eller flere. Verktøy omformer kommentaren
* til dokumentasjon på websider
*/

Johannes påpeker at hvis man ikke er flink til å skrive en god kode, så er man like dårlig til å skrive gode kommentarer.

In the zoneIn the zone Zone. Johannes Brodwall koder.

Du sitter konsentrert med en kode og er «in the zone». Så kommer det verste som kan skje – distraksjon. Som utvikler så må du enten ha god korttidshukommelse eller bygge en struktur som du lett kan navigere i. For å håndtere distraksjoner bedre, må man dele opp oppgavene i mindre biter.  

Parprogrammering


Det eksisterer et ordtak, «Det én programmer kan gjøre på 1 måned, kan to programmere gjøre på 2 måneder». Det kan være sant, men unntaket er parprogrammering. Parprogrammering er en teknikk der to programmerere sitter ved siden av hverandre og jobber med en kode sammen på samme maskin. Men hvorfor er to som parprogrammerer bedre enn to som sitter og koder separat? Det er enklere å håndtere distraksjoner når man jobber sammen på den måten – man må tenke høyt når man koder og man lager en slags mental «tråd» som hjelper en å komme tilbake til kontekst. Dessuten, når man har praprogrammert så har man to personer som kan endre kode eller fikse problemer når noe går galt.

Fira Code Font

Visste du at det finnes font for programmerere? Fonten er ikke Java-spesifikk, men er likevel en morsom severdighet. Fira Code Font brukes for å formatere «operators» til å være av mer lesbare og hjelper utviklere å navigere i koden.

For å forstå en programmerer må man kunne programmere. Vet du hva det egentlig betyr når en utvikler sier «We need to rewrite the monolith with Spring Boot in Kafka in order to support Microservice architecture on Kubernetes with event streams»? Det kan bety «Vi leter etter passende moderne teknologier for å løse kundens problem, men det kan også bety «Vi vet ikke hva brukeren trenger, så vi skal leke med teknologien og bygge opp CV-ene våre istedenfor». Du må forstå både teknologi og brukerbehov for å vite hvilken tolkning som er riktig.

En du ikke så god på design, kan du klare å gjøre en design-jobb uten mye opplæring. Men kan du ikke kode, så har du ingen sjanse å lage noe som helst. Du bare sitter og stirrer på skjermen foran deg. Ifølge Johannes, tar det en livstid å lære seg Java. Så det er bare å begynne nå. Java er spennende og gøy.

«I didn’t say it would be easy. Just said it would be the truth.»
Morpheus, The Matrix


Tekst: Darija Sapozenkova-Hauge. Bilder: Darija Sapozenkova-Hauge & web, matbilder: Unsplash: Alex Munsell, Jay Wennington, Saile Ilyas. Artikkelen publiseres også i Typografiske Meddelelser (TgM) – et fagblad utgitt av Oslo grafiske fagforening. Takk til Eva-Lill Bekkevad for korrekturlesing.


Darija Sapozenkova-Hauge, senior interaksjonsdesinger i Ciber (Experis). blog.darijasart.com
Darija Sapozenkova-Hauge, sjefskonsulent og teamleder i Experis Ciber AS

Hvordan dyrke kommende teknologier i et konsulentselskap

Bilde av ny tech samlingen i CIber

Vi lever i en tid der teknologi som lenge var science fiction plutselig blir en del av hverdagen: Kunstig intelligens (AI), automatisering, roboter, voice user interface (VUI), selvkjørende biler, ansiktsgjenkjenning og så videre har de siste årene gått fra å være på forskningsstadiet til å bli noe som bedrifter i Norge starter å bruke. Vi som er konsulenter er med på prosjekter som digitaliserer manuelle oppgaver og ny teknologi gjør stadig flere oppgaver mulig å digitaliseres.

Jeg snakket med vår fagsjef for Nye Teknologier i Ciber Norge, Raymond Selvik. I denne artikkelen deler jeg hans tanker bak fagområdet Nye Teknologier og hvilke hotte teknologier som kan være verdt å prøve ut.

– Hvorfor kommer det så mye nytt nå?
– Teknologien er i rask endring og endringene skjer fortere enn før. Vi har nå i flere år omgitt oss av teknologier som samler inn store mengder data. De kan være kundedata, brukerdata og sensordata. Data er drivstoffet for kunstig intelligens, spesielt for maskinlæring. Utviklingen innen maskinlæring kombinert med denne mengden data har gjort selskaper som Tesla og Google i stand til å lage selvkjørende biler, eller Amazon i stand til å lage sin revolusjonerende selvbetjente butikk.

– Hvordan ble du interessert i nettopp kunstig intelligens og maskinlæring?
– Jeg har bakgrunn i kybernetikk fra universitetet. Kybernetikk handler om styringssystemer og automasjon– å få ting til å skje av seg selv. I kybernetikk har du to deler: den ene er den klassiske reguleringsteknikken og  prosessteknikken, og den andre er å ta i bruk datateknologi for å automatisere ting. Jeg spesialiserte meg i datadelen og fikk mer og mer interesse for AI gjennom dette perspektivet.

– Hvor mye forkunnskap må man ha for å komme til praksismøter før nye teknologier?
– Nye Teknologier berører alle fagdisipliner og vi ønsker at alle skal være velkommen. Feltet dreier seg naturligvis mye om å bygge software så det er gjerne aller mest aktuelt for .NET og Java-programmerere, men vi prøver å legge oss på et nivå som passer flere. Teknologiene er nye selv for de som driver med programmering, så praksis-workshops starter med introduksjon av teknologien og muligheter, og fortsetter med dypdykk i rammeverk og produkter.

– Dere arrangerte jo nylig en workshop om chatbots. Hvordan gikk det?
– Utgangspunktet var at teknisk avdeling hos en kunde var interessert i å se på muligheter å bruke chatbot som brukerinterface for å føre timer. Så istedenfor å bli påminnet hver uke å gå inn i Excel-arket og føre timer, får man melding fra en bot som stiller noen spørsmål og man gjennomfører prosessen der.

Workshoppen var et tiltak for å starte med prosjektet og introdusere folk til chatbot-verden og utforske mulighetene. Workshoppen handlet ikke bare om chatbot. Foredragsholder fra Microsoft presenterte hele Cognitive Service (Microsoft sin satsning på kunstig intelligens og machine learning) og mulighetene med rammeverket, slik som stemmegjenkjenning, bildeforståelse og kunnskapshåndtering. Vi ble ikke ferdig med boten under workshoppen, men prosjektet er i gang. Praksisen jobber hands-on og med kunder som ønsker å ta i bruk nye teknologier. Målet er å levere Proof-of-Concept-løsning slik at kunden kan evaluere om de ønsker å gå videre med konseptet. Før vi kan begynne å sette oss inn i kundeprosesser og digitale kundereiser så må vi kunne selve kjernen. Hovedfokuset for praksisen er cloud platform, kunstig intelligens og den analytiske biten.

– Hva synes du var mest gøy med workshoppen?
– Det var gøy å se at det kom så mange til en nystartet praksisgruppe, og det var veldig inspirerende for alle å lære hva Microsoft-verktøyene kan gjøre, med fokus på chatbot og kunstig intelligens.

Microsoft er kjent for å være lukket system, men nå har de blitt bedre på å åpne opp og det er mulig å integrere seg mot forskjellige rammeverk og plattformer. Samtidig, så skal ikke vi låse oss i et spesifikt rammeverk. Vi skal se på på flere leverandører som IBM Watson og Google.

Vi jobbet også med chatbot implementasjon: bruk av rammeverket for å sette det opp i Azure og integrere med Microsoft Teams eller Facebook. Alle fikk anledning til å begynne å lage sine egne chatboter og deltakerne fikk mange spennende ideer til hvordan de kunne bruke teknologien.

Emotion recognition with Microsoft tool

Vi gikk også inn på hva som nå er mulig med ansiktsgjenkjenning og så på en applikasjon som kunne gjenkjenne når noen smiler og ta et bilde akkurat da. Applikasjonen forsøker også å gjette folks alder. Det at applikasjoner finner ansikter på bilder er vi jo vant til, men denne teknologien har mange flere muligheter i fremtiden. Det er godt eksempel på hvordan teknologien gir stadig flere muligheter og hvorfor alle trenger å holde seg oppdatert på Nye Teknologier.

Takk til Raymond som ga et overblikk over noen av de tingene som rører seg innen Nye Teknologier. Akkurat nå ser vi mange teknologier som vil åpne helt nye muligheter. Teknologier som stemmestyrte brukergrensesnitt, selvlærende chatbots og autonome kjøretøy er her og er verdt å sette seg inn i.


Tekst: Darija Sapozenkova-Hauge. Bilder: Raymond Selvik. Artikkelen publiseres også på blog.ciber.no


Darija Sapozenkova-Hauge, senior interaksjonsdesinger i Ciber (Experis). blog.darijasart.com
Darija Sapozenkova-Hauge, senior UX konsulent og rådgiver i Ciber Norge.

Konsulenter og kunder skriver gode tilbud sammen

Jeg har snakket med Terje Aasgaard, selger i IT-konsulentselskapet jeg jobber i for å få innsikt i hans hverdag, forstå prosjektsalg, tilbudsskriving og konsulentrollen i denne prosessen.

Jeg har blant annet lært at:

  • Konsulenter som hjelper med tilbud må sette av tid – det er avgjørende for kvaliteten av tilbudet.
  • Man skal løfte blikket og tenke tjenestedesign fra starten av i tilbudskriving.
  • Prosjektprosessen vi bruker mest av i Ciber (Experis) er en slags hybrid av vannfall og iterativt, og det er det kundene etterspør mest av også.


Salesman icon– Hvordan ble du til selger av IT løsninger?
– Jeg kom rett fra NTNU med master i datateknikk og begynte i Ciber i 2010. Jeg jobbet et par år som utvikler før jeg begynte å være med og designe teknisk arkitektur. I 2014 begynte jeg å jobbe mer og mer sammen med en av de tidligere selgerne i Ciber på tilbudsskriving, hvor jeg var det tekniske alibiet. Samtidig fikk jeg en rolle som teamleder rundt sommeren 2014. Mot slutten av det året var det en stilling ledig i Salg, så jeg gikk over på fulltid i salgsavdelingen fra 2015. Derfra har jeg jobbet kun med salg og lagt det tekniske bak meg.

– Beskriv hverdagen din
– Hverdagen er variert. Hovedsakelig er det tre ting vi gjør. Det ene er sammen med avdelingsledere å få oversikt over ledige konsulenter og få satt de inn i enkeltoppdrag.

Samtidig så følger vi med på nye prosjekt og vi skal til en viss grad drive nye muligheter ute hos kunder. Da er det ofte en tidsklemme. Veldig ofte håndterer vi kommende forespørsler og er ikke så mye ute for å lage nye forespørsler ute hos kundene. De nye forespørslene er av varierende karakter, ofte er det prosjekter eller rammeavtaler. Vi jobber med forespørslene intensivt en måned, og så er det en pause, deretter fortsetter det intensivet arbeidet igjen.

Vi har også oppfølging ute hos kundene for å finne ut hvilke muligheter vi har og hvordan konsulentene har det i oppdraget. Begge deler er viktig. Vi deler disse oppgavene litt med avdelingslederne.

– Kan du nevne et par større rammeavtaler du har jobbet med?
– Den siste vi vant, som jeg var med på, var Norges Idrettsforbund. Det siste jeg jobbet med var fornyelse av avtalen med Statens Vegvesen. Da handler det om å få lov å være med de neste fire årene. Ellers så har vi holdt på med ganske mange rammeavtaler de siste årene: For eksempel Helsedirektoratet og Politiet.

– Hvordan kan vi konsulenter bistå deg i ditt arbeid?
– Spesielt i de tyngre prosjekttilbudene, så er man nødt til å ta inn ekspertise innenfor ulike fagområdene. UX har en veldig viktig rolle – å definere konseptet. Kunden er ofte kravspesifikk, og vi må vise hvordan vi er best på dette området. Da er brukerinteraksjonen og det grafiske uttrykket svært viktig for å selge inn ideen vår. Utviklerne kommer også veldig raskt inn – fordi det må være en løsning som de forstår og kan lage – de er med på å sette de tekniske rammene. Testere skal kvalitetssikre og ofte må vi ha spesialkompetanse i sikkerhetstesting. Vi må også vise hvordan vi har tenkt å brukerteste.

Som regel må vi gi en fast pris, eller i hvert fall et estimat på hvor mye dette kommer til å koste kunden. Man kan ha en del arkitektur (rammene rundt applikasjonen) for å klare å sette en pris.

– Hvor mye tid skal en konsulent bruke i bistand til tilbudskriving?
– Det spørs på tilbudet egentlig. På et tilbud jeg har jobbet med i år, så skulle vi hatt mer tid. Optimalt sett skulle jeg nok hatt i hvertfall en UXer på fulltid i et par uker hvor man tenker konsept. Man går litt fram og tilbake, i hvertfall en uke på detaljering og så involverer man utviklere. I en ideell setting så ville tilbudsprosjektet vært et lite mini prosjekt, som går fra en til fire uker ville jeg si. Ofte handler det om å generere ideer, og da hjelper det å være flere.

Sketch of idea prosess– Hvordan får man det til praktisk, når man jobber fulltid hos kunden?
– Har vi flaks, så har vi noen ledige konsulenter. Vi trekker også inn de mer erfarne eller som har relevant erfaring, de tar vi ut fra prosjektet i mindre omfang.

I et tilbudsarbeid, kontra rent prosjektarbeid, ønsker vi å ende opp med et dokument som beskriver ganske overordnet hva vi har tenkt å lage. Dokumentet har noe fleksibilitet, men samtidig må vi sette rammene såpass godt, slik at hvis kunden ser at det er en annen løsning som er lurere, men vi presenterer ikke det, så kan vi dokumentere at dette var veldig smart og vi anbefaler å gjøre det. Men vi kan ikke ta det innenfor det budsjettet vi har satt opp i tilbudet.

UXere er ofte sentrale på å sette mange begrensninger rent funksjonelt og utviklere er ansvarlige for å sette tekniske begrensninger når man kommer på estimatene.

Prosjekt skal alltid gjennomføres i god tid og vi må ha en effektiv gjennomføring, riktig kontrollpunkt – da kommer prosjektleder inn. Vi må være flinke til å si hvordan vi skal teste ting, og at kunden er trygg på at vi verifiserer kvaliteten. I sånne tilbud er test like viktig.

– Jeg synes det er veldig vanskelig å finne riktig balanse mellom konkretisering av konsept og pris.
– Det er kjempe vanskelig. Det er selgeren sitt ansvar i Ciber, sammen med avdelingsledelsen, å ligge på riktig nivå der. Det vi må være flinke på er å fortelle hvor vi må være konkrete og hvor vi ikke må være det.

Vi ønsker at prosjekter gjerne skal være så fleksible for endringer som mulig. Det handler mer å sette vide nok rammer til at man ikke er helt låst, og at man kan jobbe smidig. Ellers bør man ha muligheten til å fange opp hva som er utenfor estimatene våre og hva vi kan håndtere innenfor.

– Hva etterspør kunder om dagen?
– Forskjellige kunder kjøper forskjellige ting. Flytoget – der var vi alt for sent ute med å tenke tjenestedesign. Det handlet egentlig om at vi hadde for dårlig tid, og at det var midt i ferien. Vi skulle ha brukt mer tid i starten, og tenkt på hva som er viktig for Flytoget. Hvilke tjenester er viktige på nettsidene, og sette opp kundereiser for å vise kunden at vi forstår problemstillingen.

Grafisk design er ofte viktig i tilbud – det er førsteinntrykket som gjelder. Er det en nettside man ønsker å få tilbud på, så må tilbudet se flashy og fint ut, man har en forventning om pene nettsider. Derfor burde man ha brukt tid på å lage noen hi fidelity skisser, som viser hvordan vi tenker.

I tilbudene for LDIR, der vi har vunnet rammeavtalen, så er det ikke så viktig at det ser flashy ut, men at rammene er satt riktig. For eksempel hva vi bør teste og implementere av funksjonalitet for universell utforming og hvilke deler vi ikke bør gjøre for å spare penger. Er ikke rammene satt opp riktig, er det som regel vi som ender opp med å betale for det.

– Er det ofte man leverer et tilbud på ikke bare IT løsning, men også vedlikehold som kanskje er enklere å prise?
– Når det kommer til vedlikeholdet etter at man har levert den første versjonen, så er det mer basert på prosessen hvordan man fanger opp bestillingene fra kunden og hvordan man jobber sammen. Det handler om prosess å være en god partner.

– Hva er en typisk prosjektprosess hos oss?
– Vi er best på en prosess basert på prosjektstyring som heter Prince2. Vi bruker også iterative prinsipper innenfor leveransen vår. Vi kjører sprinter og vi jobber med spesifisering både upfront og detaljspesifisering gjennom prosjektet. Det er en hybrid mellom vannfall og smidig – det kundene ønsker også. De ønsker å ha noe forutsigbarhet i kostnadene.

Også har vi rent smidige prosjekter som Komplett, der har vi ikke tilbud på forhånd. Der trengte de i utgangspunktet utviklere. Nå skal vi i gang på Landbruk med smidig avtale. Så det blir spennende å se hva forskjellen blir der.

Terje Aasgaard
Terje Aasgaard, salgssjef i Ciber (Experis)

Darija Sapozenkova-Hauge, senior interaksjonsdesinger i Ciber (Experis). blog.darijasart.com
Darija Sapozenkova-Hauge, senior interaksjonsdesinger i Ciber (Experis).