SpareBank 1 Utvikling

Dette er SpareBank 1 Utvikling, og på denne siden kan du bli bedre kjent med hvem vi er, hva vi gjør og hvordan vi jobber – gjennom oss som faktisk jobber her. Så kan du vurdere selv om du også har lyst til å bli en del av det vi mener er det beste og triveligste IT-miljøet i bransjen. Med de flinkeste folka.

Vi skaper en enklere og bedre hverdagsøkonomi

Vi utvikler og forvalter løsninger som brukes av over 1 million kunder. Det er vi skikkelig stolte av! Her kan du bli enda bedre kjent med selskapet, måten vi jobber på, løsningene vi lager, og ikke minst - ukas aller beste dag: Fagdagen.

Miljøbilde fra SpareBank 1

SpareBank 1 Utvikling på Medium @sparebank1-digital

En god og ansvarlig skyreise

Skyteknologi har blitt den foretrukne måten å realisere og levere tjenester på for de fleste selskap. Nye teknologiselskaper etableres i skyen og benytter skyteknologi fullt ut, mens etablerte selskaper gradvis går over til å realisere og levere sine eksisterende tjenestene gjennom sky.Dette er en artikkelserie hvor vi tar for oss hvordan vi i SpareBank 1 Utvikling beskriver hvordan vi migrerer systemer til sky og hvordan dette påvirker organisasjonen. I første del ser vi på den organisatoriske forankringen og endringene dette kan medføre.Egenskaper og fordeler med sky gjør at teknologisk innovasjon og tjenesteutvikling i stadig større grad foregår i sky, og konsum av skytjenester blir derfor en forutsetning for å få tilgang til de nyeste produktene og tjenestene.Vi i SpareBank 1 Utvikling har lang erfaring med sky i isolerte caser, for eksempel mCash (en forløper til Vipps), Spleis og Spink, men at dette ikke har medført en bredere overgang til sky.Vi har nå startet en større migreringløp hvor vi ser på hvordan vi kan migrere flere av våre egenutviklede løsninger ut i skyen.I tillegg til egenutviklede løsninger benytter vi allerede SaaS løsninger (Software som en tjeneste), hvor vi bruker ulike enkelttjenester til spesifikke oppgaver. En del av dette er at vi har en bred utrulling av Microsoft 365 porteføljen til de ulike underselskapene.Hovedfordelene vi ser ved å gå til sky er:• Sikre konkurransefortrinn gjennom tilgang til innovasjon, nye tjenester og økt funksjonsrikdom.• Øke endringsevne og fleksibilitet gjennom tjenestekonsum og bruk av arkitektur og plattformer bygget for og i skyen. • Redusere ledetid ved å utnytte egenskapene ved skyen og rendyrke automatisering.• Oppnå kostnadsoptimalisering gjennom effektive og skalerbare plattformer.Tydelig retning og forankring i ledelsenSky er en reise og ikke bare flytt av tjenester fra en leverandør til en annen. Ved å gå ut i sky åpner man for en endringsreise hvor det er viktig at alle er med.Å gå til sky er en langsiktig reise og det viktig at man har en tydelig retning og god forankring i hele organisasjonen slik at man har ett felles målbilde som man står sammen i over tid. SpareBank 1 er en allianse og det er også viktig for oss at de ulike bankene i alliansen også har en grunnleggende forståelse for hva vi gjør i sky og hvordan det påvirker deres bank.I SpareBank 1 Utvikling har vi etablert en skystrategi hvor vi på et overordnet plan har definert hvordan man benytter sky i ulike scenarioer for ulike tjenestetyper. Denne er etablert som en del av våre felles strategier og håndtert i vår kvalitetshåndbok.Skystrategien definerer ett sett strategiske prinsipper som vi benytter i vår tilnærming:• Vi vurderer alltid skyløsninger som et reelt alternativ.• Vi tilpasser organisering og løsninger til sky, ikke omvendt.• Vi foretrekker tjenestekonsum og ferdige løsninger.• Vi etablerer skykapabiliteter iterativt, basert på forretningsbehov.• Vi har finansieringsmodeller som harmonerer med sky.• Vi har et bevisst forhold til lock-in og hvilken risiko vi aksepterer.Autonome teamAutonome team er ikke noe som springer ut av en skyreise, vi i SpareBank1 Utvikling har allerede gode innarbeidede autonome team. Men det vi ser at teamene blir mer effektive og selvstendige med å ta i bruk de løsninger og teknologier som ligger i skyen.Erfaringen er også at det er enklere for driftsteamene å bli mer effektive når man migrerer til sky. Bakgrunnen for dette er at det er enklere å ta i bruk muligheter som infrastruktur som kode, hyppige leveranser og full testautomatisering.Kompetansebygging og forståelse for sky er viktig. For at alle skal få en god forståelse for sky så ha vi introdusert skytimen hvor alle kan delta. Her har vi presentasjoner om mulighetene og utnyttelse i sky. Her kommer vi også til å benytte eksterne presentatører til å presentere hvordan de ser fordelene i deres utnyttelse av sky.De som arbeider direkte med sky har hyppige uformelle show&tell-møter hvor de går gjennom spesifikke temaer og løsningerI tillegg har vi godt samarbeid med skyleverandørene hvor vi får fortløpende støtte og assistanse til kompetanseheving slik som egne hackathons, 1:1 møter med produkteksperter og kursing.I neste artikkel vil vi ta for oss hvordan vi utvider forståelsen og kompetansen sett i lys av våre tjenester og organisasjon.En god og ansvarlig skyreise was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Vidar Hagen

Plag din egen webapp

Sikkerhetstesting må ikke utføres av en med sikkerhet i tittelen. Hvordan kan en utvikler gjøre litt selv?Photo by Sean Lim on UnsplashI utviklingsavdelingen er vi to personer som jobber fulltid med sikkerhet, sammen med flere hundre utviklere. Min kollega fortalte om at hvordan utviklere kan begynne å tenke sikkerhet, jeg ønsker å fortelle litt mer om testing og verktøy.Du kommer langt hvis du starter med å spørre deg selv “Hvordan kan jeg få denne applikasjonen til å gjøre ting den ikke skal?”Et kart over applikasjonssikkerhetMange utviklere har blitt kjent med OWASP og deres mest kjente verk, Top Ten. Det forteller om de ti mest utbredte sårbarhetene i webapplikasjoner, en god start når du ønsker å lære mer om sikkerhet.OWASP har en rekke prosjekter som går dypere enn Top Ten, deriblant Web Security Testing Guide. Dette er et godt oppslagsverk som beskriver sårbarheter og hvordan du skal teste for dem. Bare ikke bruk den som enda en evinnelig og forbanna sjekkliste, da går den fort i skuffen.Et enkelt verktøyMest sannsynlig har du allerede et verktøy for enkel sikkerhetstesting. Webapplikasjoner skrevet i JavaScript er utbredt og Chrome DevTools lar deg studere oppførselen nærmere. Kombinerer du verktøyet med et kritisk blikk, så kan du fort finne informasjon på avveie.Har du Chrome installert er det enkelt å komme i gang. I menyen klikk View → Developer → Developer Tools og verktøyet er klart.Network-fanen gir deg en oversikt over trafikken som genereres av en webapplikasjon, dette kan fort gullgruve med informasjon. Alt fra lastingen av selve siden til ressurser som stilsett og bilder fanges opp her.Den mest interessante trafikken som genereres av webapplikasjoner, er ofte XHR-kallene. Denne trafikken genereres av klienter som kommuniserer med et API. For eksempel en React-applikasjon som kommuniserer med et API skrevet i Kotlin.Kanskje finnes det sensitiv informasjon gjemt i kallene? Da sitter du på et mulig viktig funn.Network-fanen i Chrome DevTools som viser XHR-trafikk.Det er mye data tilknyttet webapplikasjoner og noe lagres på klienten. Application-fanen lar deg se nærmere på disse, her finner du cookies, session storage og local storage. Ofte finner du sensitiv informasjon, andre ganger finner du verdier som kan endres som igjen kan gi deg nye privilegier.Application-fanen i Chrome DevTools som viser en oversikt over cookies.Et kraftigere verktøyJeg startet sikkerhetsreisen min med utviklerverktøyene og fikk senere behov for en større og kraftigere verktøykasse. Burp Suite fra PortSwigger er en samling av verktøy for å gjøre sikkerhetstesting mer effektiv, dette har blitt mitt viktigste verktøy i hverdagen.Dette er en proxy som legger seg mellom nettleseren og nettet, som lar den logge og manipulere all trafikk. Den innebygde utgaven av Chromium lar deg enkelte komme i gang, samtidig som du fortsatt har tilgang til Chrome DevTools.Ofte ønsker vi ikke at absolutt all trafikk logges i Burp. Heldigvis kan vi sette et scope slik at kun sidene vi er interessert i logges. Vi kan i ettertid inspisere og arbeide med den loggede trafikken, det er her kraften i Burp ligger.https://medium.com/media/32da9b079d11e9d305903fbcb15cfd1b/hrefSom sikkerhetstester ønsker jeg ofte å endre på headere og annen last for å se hvordan en webapplikasjon reagerer, dette kan gjøres enkelt ved hjelp av Repeater.Jeg starter ofte med å finne en forespørsel i loggen, denne sender jeg til Repeater som lar meg gjøre endringer på forespørselen før jeg sender den på nytt. Det er en veldig enkel handling, men Burp lar meg gjøre dette veldig effektivt.https://medium.com/media/9bf5ecece90d6e6a8151c0acf9b9c76f/hrefOm man vil teste flere forskjellige verdier vil det være tungvint å legge de inn manuelt en etter en i Repeater. Heldigvis kan verktøyet Intruder hjelpe med å sende hundrevis av forespørsler på kort tid. Alt man trenger er en ordbok med alle variasjonene man vil teste, Intruder ordner resten og sender hundrevis av ulike forespørsler på veldig kort tid.Gjennom konfigurasjon velger jeg hvor jeg ønsker å legge inn de ulike lastene eller om det er noen mønstre som det skal søkes etter.https://medium.com/media/05209a7496aea86b47731af8ce398828/hrefBurp Suite byr på veldig mye mer funksjonalitet, men verktøyene jeg har snakket om er de viktigste. Verktøyene er tilgjengelige Burp Suite Community Edition som er tilgjengelig gratis fra PortSwigger.Den betalte utgaven inneholder en skanner, men ikke fyr av automatiske verktøy før du forstår hvordan testing gjøres manuelt. Samtidig risikerer du å teste ting du ikke har lov til å teste.OppsummeringDet skal ikke mye til for å gjøre enkel sikkerhetstesting selv.Vær ondsinnet og tenk over hvordan applikasjonen ikke skal brukes.Ta med kart og kompass levert av OWASP.Hent frem en proxy og gi applikasjonen en veldig kjip dag.Happy hackin’!Ressurser brukt i demo:Burp Suite Community EditionOWASP Juice ShopSecListsPlag din egen webapp was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Adrian Alexander Eriksen

Har du rom for forbedring?

Du har kanskje spilt dette spillet som barn?En 10x10cm plastplate med brikker du kan skyve rundt på. Illustrasjon fra Slack av Tom DeMarcoVed hjelp av den ledige plassen flytter du rundt på brikkene for å sortere dem i den rekkefølgen du vil.For å dra det litt nærmere vår virkelighet, så kan vi tenke på den ledige plassen som noen ledige pulter i lokalet i vårt, eller kanskje et par utviklere som har ledig kapasitet?Ved å bruke også den ledige plassen blir vi 100 prosent effektive! llustrasjon fra Slack av Tom DeMarcoFyller vi helt opp blir vi utrolig effektive . Vi utnytter absolutt all kapasiteten vi har.Samtidig mister vi helt muligheten til endring og forbedring.Vi har ikke noe handlingsrom til å håndtere endrede prioriteringer og forbedringer uten at vi samtidig må stoppe andre aktiviteter. Kundeverdien av aktivitetene vi stopper er null, helt til vi får gjort dem ferdig. Kanskje. Siden. En gang.For å kunne jobbe godt med forbedringer og endrede prioriteringer, trenger vi slakk i organisasjonen.Det kan være lettere å forstå mekanismene som ligger bak denne observasjonen med et generelt eksempel? Avsnitt ni her, viser at i et team med varierende antall oppgaver og kompleksitet, så må vi ha slakk i teamet for å optimalisere time to market for det vi holder på med.Hvordan lager vi slakk da?Ja vel. Men hvordan i all verden skal vi lage slakk da?Vi kan lage slakk på flere måter:Ikke alloker folk fulltid på en oppgave. Fulltid er uansett en illusjon, i og med at folk skal på ferie, blir syke, og skal være med på en fastelavensfeiring i barnehagen innimellom.Ikke lås omfang for oppgavene. Mye av det mange av oss jobber med, er utvikling av løsninger som aldri har vært laget før i akkurat vår kontekst. Med mindre det er løsninger som må på plass innen en viss dato grunnet for eksempel lovregulering, så planlegg med slakk i leveransene ved hjelp av variabelt omfang. Kan vi levere litt som skaper verdi nå, så er det nesten alltid bedre enn å levere mer som skaper verdi siden.Ved å planlegge med slakk i leveransene får du også en mye bedre og åpnere håndtering av alt det som kommer til å skje de neste månedene, som du ikke har den fjerneste anelse om i dag.Noe nesten ingen av oss hadde den fjerneste anelse om for litt over et år siden.Slakk gir rom for forbedringMed slakk gir vi oss selv også rom til å drive med forbedringsarbeid. Dette kan vi gjøre på flere måter og på flere nivå.Slakken vi har i organisasjonen eller teamet, kan vi bruke til å jobbe med forbedring både direkte og indirekte i det daglige arbeidet. Et eksempel kan være å forbedre en enhetstest som ikke er direkte koblet til oppgaven vi løser, eller ta oss tid til å tilgjengeliggjøre den smarte nye funksjonaliteten vi har laget til alle, istedet bare for oss selv eller teamet vårt.Med slakk kan også vi bygge forbedringsarbeid inn i måten vi arbeider på. Vi kan kjøre forbedringsprosesser som retrospektiver, A3 og post mortems. Forbedringsoppgaver vi finner der, kan vi ta inn som en del av det daglige arbeidet.Har vi tilstrekkelig med slakk i organisasjonen, kan vi kjøre større forbedringsinitiativer ved å la folk vi normalt sett ville brukt på ordinært arbeid, jobbe med forbedringsinitiativ i en periode. Siden det er planlagt med slakk i utgangspunktet, vil ikke dette påvirke de planlagte leveransene.Slakk kan vi også bruke til refleksjon og tankearbeid. Sett av tid til å reflektere over oppgavene du jobber med. Løser vi oppgavene på rett måte? Løser vi de riktige oppgavene? Finnes det andre måter vi kan jobbe bedre sammen på?I bransjen vår er kontinuerlig kompetanseheving omtrent obligatorisk for å kunne levere godt over tid. Dette kan det derfor også være lurt å sette av fast tid til. Planlegg med at folk trenger å bruke tid på kompetanseheving. Kanskje kan vi til og med slå to fluer i en smekk, og bruke kompetansehevingen som teamaktivitet og kulturbygger også?Jobber vi med oppgavene våre hele tiden, oppfattes vi fort som veldig effektive.I SpareBank 1 Utvikling jobber vi med å skape stadig bedre flyt i både produktutviklingen vår og forbedringsarbeidet vårt, med bruk av slakk. Vi har skrevet flere artikler tidligere om hvordan dette fokuset har gjort kontinuerlig forbedring til en av bærebjelkene i produktutviklingen vår. Det kan du lese mer om her.Har du rom for forbedring? was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Vidar Moe

Jobber du med det du egentlig vil?

Om å være ærlig med seg selv.Photo by Free To Use Sounds on UnsplashJeg har på ingen måter mistrivdes i mine tidligere jobber og har for det meste gledet meg til å gå på jobb. I nesten hele min yrkeskarriere har jeg jobbet med ledelse av utviklingsprosjekter og team. Inntil nylig var dette en naturlig karriere å bygge videre på.Som nyutdannet fikk jeg meg en jobb som utvikler, men det tok ikke mer enn et par uker før jeg ble spurt om jeg kunne lede et prosjekt. Det virket jo som om jeg kunne passe til det? Sant nok, jeg passet til det. Jeg har passet til det i over 15 år, og jeg passer sikkert til det fremdeles, men jeg har endelig funnet ut at det er noe annet jeg heller vil gjøre.Ekte stock photo av megDet kan ta tid å innse at man kanskje ikke lever livet fullt ut slik man egentlig vil. Det er mye lettere å bare la det skli som før og gjøre det man er vant til. Det som er innenfor komfortsonen og det som tilsynelatende er trygt.Jeg har hele tiden følt jeg har jobbet med noe jeg er god til. Mestringsfølelsen jeg har hatt har vært med på å dra karrieren videre i samme retning. Men det handler ikke alltid om hva man er best til. Det handler like mye om hva man selv vil og hva som gir glede og energi i livet. Prioritering her ble vanskelig for meg fordi jeg rett og slett ikke turte å tenke nøye gjennom hva jeg gjorde og hva jeg egentlig ville. Det måtte modnes over tid, men til slutt var svaret innlysende. Svaret var selvsagt noe jeg alltid hadde visst. Jeg ville ikke jobbe med ledelse. Jeg ville jobbe som utvikler.memegenerator.netÅ velge en annen vei, i hvert fall så sent i karrieren, krevde en del mot fra min side. Jeg var ganske redd for hvilken vei høna skulle sparke. Jeg var n00b i git-kommandoer, rota til min første rebase og hadde aldri før har satt mine ben i emacs. Heldigvis så er det ofte slik at det man frykter mest ofte ikke skjer i virkeligheten. Så lenge man er tydelig på hva man kan og hva man må jobbe mer med, handler det ikke lenger så mye om “du er flink nok”. Jeg måtte tørre å ikke være så “flink”, våge å gå fra senior til junior, noe som ikke var lett. For noen er en slik endring enkelt å gjennomføre, og således vanskelig å sette seg inn i. Andre kjenner seg nok igjen og fikk kanskje noe å tenke på.Å være modig er mye lettere når man har noen som støtter og heier på deg. I SpareBank 1 Utvikling følte jeg det var trygt å ta denne praten med min leder og sette i gang en prosess med å gjøre store endringer i karrieren. Jeg fikk også en fadder og mentor jeg kunne ringe til for å løse opp i rebase-floker og stille alle de dumme spørsmålene til. Uten å føle meg dum.Åpenhet og god dialog er viktig. Man trenger å føle en trygghet rundt det å snakke åpent om hva man selv vil. Når jeg først turte å ta steget ble jeg kun møtt med interesse og støtte. Det var fokus på meg som menneske og hva jeg vil gjøre for å trives i min jobb og hvordan jeg kan best bidra med mine egenskaper.Det er ikke mangel på studier som sier at organisasjoner som er gode til å hente ut det beste i sine ansatte og legger godt til rette for at hver enkelt får mulighet til å utvikle seg i den retningen man ønsker, lykkes bedre enn andre. Det er ingen tvil om at endringstakten har økt på de fleste fronter, noe som også øker behovet for å oppdatere seg med tanke på kompetanse. Spørsmålet er om behov og ønske om å bytte spor underveis i karrieren er et tema som stadig flere vil kjenne behov for?Budskapet her er at du alltid har et valg og at dersom du ønsker deg nye oppgaver må du gjøre noe med det, selv om det koster en del å innrømme det. Husk at det spiller ingen rolle om du egentlig burde ha gjort noe med det for lenge siden. Det er aldri for sent. Det som betyr noe er at du tar mot til deg og gjør noe med det når det kjennes riktig. Det krever kanskje at du er dønn ærlig med deg selv, noe som ikke alltid er like lett. Men det er verdt det, jeg lover.Hilsen en utvikler som trives særs godt med nye oppgaver og fokus.Jobber du med det du egentlig vil? was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Jens-Christian Bjerkek

Fredag er for feiring

I SpareBank 1 Utvikling er vi på en spennende og lærerik reise innen målarbeid, der bl.a. bruk av Objectives and Key Results (OKR) har gitt gode resultater. En av grunnene til at OKR fungerer godt hos oss er rytmen Christina Wodtke anbefaler i boken Radical Focus. Rytmen har vært viktig for å løse “set and forget”-utfordringen, der mål ikke blir del av det daglige arbeidet. Dette innlegget handler om den delen av rytmen som avslutter uken. Velkommen til “Friday wins”.Radical Focus-modellenFørst noen ord om “Monday commitments”, møtet som kickstarter uken. Her samles hele teamet foran tavlen mandag morgen og spør seg selv “Hvordan ligger vi an i forhold til målene vi har satt oss?” og “Hva må vi ha fokus på denne uken for å nå målet?”. Gjennom denne diskusjonen blir teamet enige om de viktigste oppgavene. Kun disse havner på tavlen. Dette er oppgavene man forplikter seg til i felleskap, og som teamet strekker seg for å levere innen fredag.“Fridays wins”-sesjonen handler om å feire det man har fått til og om å dele læring. Med en varm kopp kaffe, og gjerne med noe godt å bite i, samles teamet på slutten av uka for å fortelle hverandre om ting man har lykkes med.Hadde vi for få markeringer?SpareBank 1 Utvikling kommer fra en sterk kultur for å løse problemer. I utgangspunktet et meget godt fundament for å ta hånd om utfordringene vi har ansvaret for. Ting som gikk bra underveis i arbeidet var det imidlertid begrenset med fokus på. En slik kombinasjon kan skape ubalanse i tilværelsen.“When teams are aiming high, they fail a lot. While it’s good to aim high, missing your goals without also seeing how far you’ve come is often depressing. That’s why committing to the Friday wins session is so critical.” — Christina WodtkeFremveksten av hyppigere produksjonssettinger gjorde at misforholdet muligens ble større. En følge, av denne ellers gledelige utviklingen, var at det ble færre markeringer knyttet til tradisjonelle milepæler og leveranser. Prosjekter har typisk omfavnet viktigheten av å markere leveranser og måloppnåelse. Omfanget av den klassiske prosjektarenaen har imidlertid blitt gradvis redusert i vår organisasjon. Etter hvert som team gikk mer over mot kanban og kontinuerlig flyt, ble demo mer del av det daglige arbeidet og markering på slutten av hver Scrum-sprint borte. I sum kunne det nok tidvis fortone seg som en ørkenvandring på stadig jakt etter ambisiøse mål man ikke helt oppnådde, kombinert med jevnt tilsig av nye problemer å håndtere.Endret dynamikkMed introduksjon av “Friday wins”-sesjonen endret dynamikken seg. Vi startet å prate mer om det vi hadde oppnådd, og gjorde det med en fast rytme. Økt fokus på det som har gått bra har flere fordeler. Ved å gi det man lykkes med mer plass og anerkjennelse øker sannsynligheten for at det vil skje igjen. Atferdspsykologi omtaler dette som at “positive reinforcement” anerkjenner og forsterker det som går bra.“Positive reinforcement is the most powerful leadership tool” — Aubrey Daniels, (Daniels, 1982)I et ambisiøst miljø som jobber med å løse krevende utfordringer bidrar “Friday wins” til å vise oss selv at mye faktisk er oppnådd. Med “Friday wins”-møtet blir positive tilbakemeldinger bygd inn i prosessen, der hver uke avsluttes med en følelse av mestring og fremgang som tas med inn i helgen. Dette til tross for at en del ikke har gått slik vi håpet. Mandag er vi igjen klare for å løse utfordringer og kjempe med å ta de neste stegene gjennom uka.Et annet positivt aspekt ved “Friday wins” er bidrag til trygghet i arbeidet. I boken The Fearless Organization peker Amy Edmondson på viktigheten av at ledere legger til rette for en kultur der psykologisk trygghet er med på å etablere et klima som støtter opp om læring. Google fant i prosjekt Aristoteles at det viktigste kjennetegnet ved team som lykkes er psykologisk trygghet. Med covid-19 pandemien kjennes dette viktigere enn noen gang, med behov for tilhørighet og trygghet fra hjemmekontoret.“…several benefits. One, you start to feel like you are part of a pretty special winning team. Two, the team starts looking forward to having something to share. They seek wins. And lastly, the company starts to appreciate what each discipline is going through and understands what everyone does all day.” — Christina WodtkeUtfordringerEn praktisk utfordring med “Friday wins” oppstår om ikke alle kan delta. I teamet jeg er medlem av benyttes ofte Slack for deling om man ikke har anledning til å være med. Rikelig med high fives og positive kommentarer sørger for at også de som var opptatt får med seg en god dose mestringsfølelse inn i helgen. En annen ting å tenke på er at arenaen ikke blir dominert av de ekstroverte. Ved å la ordet gå runden i teamet sikres at alle deler noe man har lykkes med.Videre kan det være nyttig å understreke hva “Friday wins” ikke er. Hverken rapportering, avmelding av status eller problemer hører hjemme her. Dette kan være krevende å overholde, særlig i begynnelsen, men med litt trening blir det etter hvert naturlig at innholdet kun er det som har gått bra.Tro på å sammen klare det neste stegetEr det god tidsbruk å avslutte uken i fellesskap med fokus utelukkende på det positive? I mitt team undervurderte vi verdien av å prate om tingene som går bra. Vi har erfart at fokus på det positive skaper kraft og tro på at man sammen vil klare å ta det neste steget. Det er mye som fortjener oppmerksomhet, uten at det nødvendigvis direkte har flyttet nøkkeltall. Resultatet er alltid stolthet over det vi har fått til sammen.“Friday wins”-sesjon fra hjemmekontoret.Slik runder “Friday wins” av uka med en kraftfull vitamininnsprøytning. Teamet tar med seg en mengde positiv energi inn i helgen, etterfulgt av velfortjent avkobling og restitusjon. Så enkelt, og så kraftfullt. Fredag egner seg definitivt for feiring.PS! Vil du vite mer om hvordan Radical Focus-modellen fungerer? Les innlegget “Ikke nok et jævla statusmøte!” der et av utviklingsteamene i SpareBank 1 Utvikling oppsummerer sine erfaringer.Fredag er for feiring was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Kristoffer Berg

Hvordan har teamet det når alle er på hjemmekontor?

Lenge før vi befant oss på hjemmekontor i mars hadde vi i SpareBank 1 Utvikling jobbet med å måle teamets helse. Noen team hadde kommet lengre enn andre og vi teamledere lærte kontinuerlig av hverandre. Arbeidet ble ekstra viktig nå når alle plutselig måtte jobbe hjemmefra. Hvordan ville “den nye normalen” påvirke oss?Mars 2020 — tomme lokaler hos SpareBank 1 UtviklingJeg er teamleder for Team Betaling, ett av utviklingsteamene som leverer de digitale løsningene for SpareBank 1-bankene. Vi hadde siden juni 2019 hatt en del utskiftninger på teamet, så vi startet måling av teamets helse når alle de nye utviklerne var på plass. For å spare tid gjenbrukte vi spørsmål fra et annet team og rakk såvidt å komme i gang før pandemien traff oss.Helsesjekk for Team Betaling uke 5 og 11 — svaralternativer Ja=5, Tja=3 og Nei=1Vi brukte mer tid på å diskutere hva spørsmålene betydde enn å reflektere rundt svarene som var gitt. Konklusjonen etter to helsesjekker var at vi måtte ha nye spørsmål. I retrospekt var det kanskje ikke den beste løsningen å arve spørsmål fra et annet team, men da kom vi i hvert fall i gang.TrygghetVi visste det var viktig å bygge tryggheten i teamet slik Amy Edmondson snakker om i sin TED-talk Building a pshygologically safe workplace. Det var også godt kjent at trygghet troner øverst etter Googles funn om hva som kjennetegner high performing teams gjennom prosjektet Aristotle.https://rework.withgoogle.com/blog/five-keys-to-a-successful-google-team/Tid for å ta frem egne spørsmålVia Microsoft Teams og Confluence (Miro var under innføring og kom på plass like etter) jobbet vi frem våre egne spørsmål.Resultat fra workshopDet var mange gode diskusjoner underveis som f.eks. “Kan alle faggrupper i teamet svare på spørsmål om vi har redusert gjeld?” “Ja, det kan vi”. Både design, utvikling og test har gjeld de kan redusere. Og hva syntes vi om å svare på “Jeg har kunnet si hva jeg mener og blitt hørt?” Var vi trygge nok på hverandre til å svare oppriktig her? Ja, vi mente det.Gjennomføring av helsesjekkSpørsmålene ble lagt inn i Microsoft Forms slik at teamet kunne svare anonymt i forkant av selve gjennomgangen.Frekvensen på helsesjekken ble annenhver uke for å få hyppig feedback nå som alle satt hjemme. Gjennomgangen av resultatene med teamet ble satt til 30 minutter. Spørsmålene som hadde snitt på tre eller lavere ble plukket ut for diskusjon. Vi forsterket også spørsmålene som hadde høyt snitt for å forstå hva vi gjorde bra og hvordan vi kunne gjøre mer av det. De få gangene tiden ble knapp under gjennomgangen, satte vi opp egne møter som f.eks. retrospektiv for videre diskusjon.Helsesjekk med de nye spørsmålene — Svaralternativer Helt uenig=1, litt uenig=2, litt enig=3 og helt enig=4MøterFør pandemien hadde vi en del diskusjoner rundt arbeidsflyten. Diskusjonen fortsatte, men årsaken hadde endret seg. Utfordringen hadde gått fra tidvis visuell støy og vanskeligheter med å jobbe fokusert i kontorlandskapet til savn etter raske avklaringer ved pulten/kaffemaskinen og summingen i landskapet.For å kompensere for dette savnet steg møteaktiviteten, som igjen førte til hyppigere fokusskifter og mindre effektiv arbeidsflyt. For å sikre mer tid til fokusert arbeid testet teamet ut å blokke tid i kalenderen slik som Vidar Moe skriver om i sin artikkel Ikke jobb mens jeg forstyrrer. Vi syns det hjalp, og sammen med god dialog mellom produkteier og teamet ble vi også enda flinkere på prioritering av oppgavene.Et annet møte vi måtte se på var standupen. Med 18 personer på Teams ble standup i drøyeste laget og vi besluttet etter en helsesjekk å gå over til skriftlig standup på Slack. Teamet ble enig om å liste opp planene for dagen og eventuelle behov for hjelp. Og ikke minst, passe på å si hei nå som vi ikke så hverandre.“Jeg har kunnet si hva jeg mener og blitt hørt?” hadde stort sett høy score. De gangene den gikk litt ned var årsaken for mange deltagere i et Teams-møte. Terskelen for å ta ordet var høyere nå enn når vi satt i samme møterom. Tiltaket ble å dele opp i mindre arbeidsgrupper som gjorde det tryggere å ta ordet. Vi prøvde også å alltid ha kamera på og bruke hånden eller chatten i Teams for å be om ordet eller gi små kommentarer.Etter hvert endret vi frekvensen på helsesjekken fra annenhver uke til en gang i måneden, både for å ha færre møter, men også for å rekke og gjennomføre tiltakene vi satte oss fra gang til gang.Det sosialeSelv om møter ofte var tema på helsesjekken, var kanskje den største gjengangeren etter pandemien det sosiale. Vi savnet møtene ved kaffemaskinen, de tilfeldige møtene i gangene, det å spise lunsj sammen, kakefeiring og ikke minst noe så enkelt som å si “Hei, hvordan går det?”Det var ikke like enkelt å få gjort noe med det sosiale når smittevernsreglene ble justert regelmessig. Når vi ikke kunne treffes fysisk prøvde vi å få til så mye som mulig digitalt. Kahoot ble innført fast hver fredag som en del av fredagens markering av hva vi hadde fått til gjennom uken. Kakefeiring på leveranser ble samlet opp med levering av noe godt på døren hjemme hos hver enkelt. Vi gjennomførte Team Canvas som gjorde at vi ble bedre kjent med hverandre som team og enkeltpersoner. Alle tiltak hjalp, men de sosiale arenaene er og blir best når vi møtes fysisk.Som teamleder har det også vært viktig med hyppige 1–1 samtaler da helsesjekken ikke erstatter den viktige dialogen med hver enkelt. Vi har også hatt jevnlig retrospektiv for å få mer helhetlig innblikk i teamets tilstand.Uten helsesjekken og verdien den gir hadde vi ikke kunne hatt like god innsikt i teamets helse, spesielt nå som alle sitter på hjemmekontor. Helsesjekken hjelper teamet til å finne hva som bør være fokus for kontinuerlig forbedring og videreutvikling slik at vi skal kunne bli enda Bedre sammen.SpareBank 1 Utviklings VerdiplattformHvordan har teamet det når alle er på hjemmekontor? was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Sissel Sveum

Sayonara, Internet Explorer

Er det ikke kjipt når du har tatt på fullt turtøy og skal ut på en lang ferd mot en vakker horisont, bare til å merke at det er en stein i skoen?Du står da i et viktig veivalg:Skal du bare dure på? Selv om det gjør vondt og går mye tregere, kan du potensielt nå målet ditt.Skal du fjerne steinen? Det tar kanskje litt tid å ta av skoen, men turen blir mye morsommere og du kommer kjappere til mål.På nettsidene har vi fjernet vår stein; Internet Explorer (IE).Alle som har jobbet med web de siste årene vet hvor ressurskrevende det er å tilpasse løsninger sånn at det fungerer greit på IE. Spesielt når man utvikler løsninger som pusher hva våre teknologiske muligheter er, tar det nesten like lang tid å få dette til å fungere på IE.Fokuset vårt vil være på mobil, ikke Internet Explorer.Trygt valgFor sparebank1.no er det et trygt valg å fjerne supportering av IE. Mobil blir bare mer og mer den foretrukne enheten for brukerne våre, og Chrome samt Safari er desidert de mest populære nettleserne. Etter dette kommer Edge og langt bak med stadig synkende trafikk: IE. Microsoft har selv sagt at de skal slutte supportering av IE i 2021 og fokusere fullt på Edge.Dette betyr ikke at nettsidene vil slutte fungere på IE. Det betyr bare at vi kommer til å prioritere andre oppgaver enn å fikse IE feil. Over tid vil det være mer og mer gunstig for brukeren å velge en annen nettleser. Vi står heller ikke alene om dette: Både finn.no, nav.no og spleis.no gir varsling hvis du bruker Internet Explorer.Problemet er bedrifter som har IE som standard nettleserFor de som får en Windows PC fra jobb og booter denne opp er det en stor sannsynlighet at default nettleser er Internet Explorer. Dette er problemet.Jeg antar at en stor andel av brukere ikke egentlig bryr seg om hvilken nettleser de bruker. Den nettleseren som er mest tilgjengelig er den de bruker, og normalen blir at nettsider kan oppføre seg litt rart eller at man får flere og flere varslinger.Når selv Microsoft har gått ut med at Internet Explorer kan være en risiko for sikkerhet, regler og universelle standarder, kan det ikke være opp til den individuelle ansatte å gjøre et skippertak mot bedriftens anbefalinger ved å bytte nettleser. Bedriften må sette en bedre standard med å tilrettelegge en nettleser som faktisk er supportert og fungerer.Uansett, for å bruke et av Japans mest misforståtte ord:Sayonara, Internet Explorer.Sayonara, Internet Explorer was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Lasse Olsen

Playwright vs Cypress

Not too long ago, Cypress seemed to be the most exciting new end-to-end testing framework out there, quickly growing in popularity within different development teams. However now there’s a new kid on the block named Playwright, and it aims to solve a similar issue — helping developers automate their user-flows in a more user-friendly way.This article will compare the two, and hopefully make it clearer which testing framework suits your needs the most, by making you aware of their similarities, differences, strengths and weaknesses.About the frameworksFor an introduction to the fundamentals of Cypress.io, check out my other article named “Testing with Cypress”. In short, Cypress is a tool for setting up, writing, running and debugging tests. It compiles all the tests into Javascript, runs in an instance of a chromium-based browser that includes Chrome, Edge, Brave and Electron. Cypress also just recently added full-support for Firefox browsers.Playwright is essentially a browser automation tool and the processor of the node library Puppeteer, as it has the same functionality along with several improvements such as Cross-browser testing and device emulations. Playwright is also written and maintained by the same people who created Puppeteer, and are now working at Microsoft. This article won’t cover Puppeteer, but it’s handy to know of its similarities, especially if you’re already familiar with it.SimilaritiesSimilarly to Cypress, Playwright is an open-source, Javascript-based library, for automating your end-to-end tests. Both aim to provide a single API that developers and testers can use to interact with web applications across the major browser engines. There is a difference between the two when it comes to browser support, but both offer the ability to run tests and interactions in Firefox and Chromium browsers. Other similarities include functionality, like taking screenshots, stubbing requests, and testing on various screen sizes. If you want to run your tests as part of your continuous integration flow, or prefer to run the tests without a UI interface, then you’ll be happy to hear both offer headless options so that you can run your tests directly in the Terminal.To summarize:Both are Open-source and Javascript-basedCan install both as an npm-package.Single API for testing in several browsers (Both support Firefox and Chromium)Share a lot of the same functionality, like screenshots, stubbing and setting custom view-ports.Neither supports testing in IE11Can be run from the TerminalFrequently updated GitHub ReposDifferencesWhile they both aim to solve a similar issue, they have different ways of doing so. Cypress is more of a “full-package”, and it creates a folder structure along with example files, and you are stuck with the test runner you get with the framework. Playwright, on the other hand, does not make any files and can be configured to work with the test runner of your choice. The two frameworks also run their tests differently. Cypress runs the tests in run-time, and Playwright is promise-based and can run several different browsers and different user contexts in the same test, while Cypress needs to be re-run with the other browser options.Cypress has gone for a syntax more similar to JQuery, but instead of “$”, it uses the keyword “cy”, and a function name. Having one keyword to access everything, might make more sense for designers and junior front-end developers, less familiar with async and creating instances of objects, than the more Javascript approach Playwright has. The example below shows the syntax differences between the two frameworks, and the test scenario is to check if an element with the class name “App-logo” exists.// Cypressdescribe(‘Navigation and Element test’, () => {it(‘Finds the react logo’, () => {cy.visit(‘<http://localhost:3000>');cy.get(‘.App-logo’).should(“exist”);})})// Playwrightimport * as playwright from ‘playwright’;const browsertype = playwright.chromium;(async () => {const browser = await browsertype.launch();const page = await browser.newPage();await page.goto(‘<http://localhost:3000/>');const logo = await page.$(‘.App-logo’)if(!logo) throw new Error(“Cannot find logo”)await browser.close(); // Close browser again})();As previously mentioned Playwright has a syntax closer to Javascript, where you create instances of objects. The ability to create object instances allows us to run multiple tabs, browsers and user contexts at the same time. The example above shows how Playwright uses the async functionality to wait for a UI-element to appear before continuing the test, Cypress, however, solves a similar issue by automatically re-trying the assertions until it reaches the set timeout.One of the most significant benefits of Playwright is its ability to test across multiple pages and domains. Along with setting multiple user contexts. Both are very useful if you’re using third-party sign-ins, pop-ups, iframes (such as BankID in Norway) etc. in your application. Cypress, on the other hand, would require you to write separate tests to simulate the different user scenarios and would require you to stub a lot of the requests to work.To summarize:Playwright works on Webkit-browsers, Cypress does not.You can choose test-runner in PlaywrightPlaywright lets you test in several browsers at the same time.Playwright supports multi-tabs and frames.Cypress doesn’t run in headless mode by default, Playwright does.Playwright awaits UI-elements before running interactions, Cypress re-try assertions until timeout.Size and performanceWhen it comes to size and performance, it’s a bit of a mixed bag. Since Cypress has a built-in test runner, Jest has been added to the comparison, as it’s the most popular Javascript test runner, and needed to achieve similar functionality to Cypress in Playwright. Looking at the minified size, Cypress is technically smaller with it’s 1.6MB against the 2.85MB of Playwright + Jest, but where Playwright + Jest shine is when you look at the dependencies where Playwright + Jest has 14, compared to the 125(!) of Cypress.To test performance, a colleague and I wrote a test in both Playwright + Jest and Cypress. The test scenario covers the following steps:Go to sparebank1.noPress “Godta alle” button for the cookie pop-upFind postal code input and enter 3324Check if a button with the class “ffe-shortcut-button” and text “SpareBank 1 Modum” is visible.Click the button, and check if the page now is Sparebank 1 Modum.The results show that it’s only milliseconds separating the two in terms of speed. Cypress ran the test in 3 seconds, whilst Playwright slightly beat that by completing the test in 2.33 seconds. Essentially it means that both run the test fast, and whilst Playwright was somewhat quicker, it’s not that big of a difference that it should affect your choice of framework.What to pick?So which of these frameworks should you choose? The answer is it depends on how experienced you are with testing, and what functionality you find essential. If you’re new to testing and want a more plug-and-play approach that includes everything you need to get started, then Cypress is the best choice for you. It has good documentation and a broader community that makes it easier to get help and find answers to specific scenarios you find challenging.If you are more familiar with testing, need to test Webkit browsers or your tests need to cover scenarios spanning across multiple pages and domains, then Playwright is the choice for you. Playwright is also the right choice for you if you have fallen in love with a specific test runner or don’t need one at all. With the framework being reasonably new, we can also expect that the community, documentation and framework in general will continue to improve over time.Cypress:➕ Easy to understand documentation➕ A broader community and easier to find answers about specific issues➕ Easier to understand for people new to testing➕ You only have to read up on one framework as Cypress has everything included.➖ Doesn’t support multi-page and third-party implementations.➖ More extensive and with more dependencies➖ Generates several example files and folders➖ You have to re-run tests to run in another browser.Playwright:➕ Broader browser support➕ Fewer dependencies than Cypress➕ Supports multi-page and third-party implementations➕ Lets you choose your test runner.➕ Doesn’t generate any files.➕ You can run multiple browsers using the same test.➖ Documentation not as good➖ Newer and with a smaller communityPlaywright vs Cypress was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av HeleneKassandra

Det skal være lett å gjøre rett — del 3

Det skal være lett å gjøre rett — del 3I forrige artikkel i serien så vi på noen av verktøyene vi bruker til utvikling. Nå skal vi se mer på noe som er minst like viktig, nemlig å få koden ut i produksjon.Som vi vet fra blant annet Accelerate er en av tingene som skiller organisasjoner med høy og lav ytelse er hvor ofte kode rulles ut til produksjon. Hyppige produksjonssettinger fører til færre produksjonsfeil, kortere mean time to recovery (Tiden det tar fra en feil oppstår til den er fikset) og kortere ledetid fra commit til prodsetting.Men det er ikke nok å rulle ut kode til produksjon ofte, det må gjøres på en forutsigbar og trygg måte. Det må kunne gjøres med lave skuldre. Og som de fleste som har vært med på kvartalsvise eller halvårsreleaser som gjøres manuelt kan si: Det å prodsette sjeldent gjør veldig vondt.Det finnes mange artikler som sier noe om hvorfor store releaser gjør vondt, men i bunn og grunn handler det om at dersom du prodsetter mange endringer samtidig, så er sannsynligheten for at det er feil i en av de stor. Og da må hele leveransen rulles tilbake, prosjektledere og interessenter må informeres og du må jobbe overtid for å fikse det. Så må ny produksjonssetting planlegges og driftsressurser må bookes på nytt. Kanskje det til og med blir nattarbeid.Dersom endringssettet du prodsetter er mindre, så er det også mindre som må rulles tilbake, og konsekvensen blir lavere. I tillegg så blir mulighetsrommet for feil lavere. Det er færre endringer, og dermed færre mulige syndere som må sjekkes ut.Applikasjonsarkitektur og verktøy spiller sammenHvis du skal kunne levere kode hyppig, må du også ha en applikasjonsarkitektur som støtter opp under dette. Det finnes flere måter å angripe problemstillingen på, men det vanligste i dag er å dele opp i mindre tilstandsløse applikasjoner som tilsammen utgjør et system.Vi har valgt å basere våre containerbaserte applikasjoner på manifestet The Twelve-Factor App. Det er et manifest som er skrevet av folkene bak tjenesten Heroku. Manifestet beskriver 12 egenskaper de mener at moderne applikasjoner bør ha. Dette setter en del krav til applikasjonene vi deployer:Applikasjonene må være tilstandsløse. Det gjør at applikasjonene er lettere å forvalte og forstå, de blir enklere å skalere horisontalt og det gjør at de passer bedre inn i en verden hvor de kan bli revet ned og startet opp i løpet av sekunder.Hemmeligheter, som er typisk api-nøkler, sertifikater og passord, injiseres fra miljøet rundt. Vi har i tillegg valgt å gjøre løsningen for å legge inn hemmeligheter i en app selvbetjent, slik at om du er en DBA som har generert en databasebruker, legger du den selv inn i applikasjonen som skal ha hemmeligheten. Dermed slipper vi å sende hemmeligheter rundt på mer eller mindre kreative måter som sms, epost eller post-it lapper.DeploymentVi har opp gjennom årene hatt flere verktøy for deployment. Felles for disse er at de som regel har løst et spesifikt problem i et spesifikt miljø. Da vi skulle ha et verktøy til containerplattformen vår, ville vi ha et verktøy som kunne løse deployment i alle miljøer. Vi valgte til slutt å lage vårt eget deploymentverktøy, som var tilpasset våre prosesser og vårt miljø.Resultatet ble Shifter! Som noen sikkert vet er Shifter også en karakter fra Byggmester Bob, og han er ganske god på å flytte rundt på containere.Kilde: https://www.amazon.sg/Fisher-Price-Bob-Builder-Shifter-Vehicle/dp/B06XPYCSHVLitt av grunnen til at vi valgte å utvikle vårt eget deployment-verktøy var fordi vi ville tilpasse det til våre behov og våre verktøy. Blant annet så ønsket vi å kunne vise relevante metrics fra applikasjonen direkte i grensesnittet, slik at man enkelt kan følge med på hva som skjer når man prodsetter en endring.Her har du relevante metrikker for responstid, feilrater og ressursbruk.I tillegg til det grafiske grensesnittet har Shifter et restbasert API som kan benyttes fra jenkins og andre script for å bygge og deploye applikasjoner. Derfor har shifter blitt en viktig del av både utvikling og produksjonsetting hos oss, som hjelper oss å sove godt om natten.I del fire av denne serien skal vi skrive litt om hvordan vi organiserer oss for å kunne jobbe godt med kontinuerlig forbedring av verktøyene våre.Det skal være lett å gjøre rett — del 3 was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Ola Hast

Det skal være lett å gjøre rett — del 2

Det skal være lett å gjøre rett — del 2Vi har valgt å lage en rekke verktøy som gjør livene våre enklere. Disse hjelper oss med å sette opp utviklingsmiljø, deployment og andre vanlige arbeidsoppgaver. Som vi var inne på i første del av denne artikkelserien har vi sett at dette gir oss både fart, trygghet og god nattesøvn. Et skikkelig kinderegg! Men hvordan kom vi egentlig i gang?Alle må starte en plassDa vi startet vår reise som verktøymakere, hadde vi et likt utgangspunkt som veldig mange andre bedrifter: En nedlåst Windowsplattform med Office og IE forhåndsinstallert, men dessverre ikke så veldig mye mer. Og du hadde heller ikke rettigheter til å installere noe selv. Dette er et veldig rasjonelt utgangspunkt om man ikke skal drive med utvikling.Bare det å få satt JAVA_HOME var i seg selv en utfordring, siden maskinen både titt og ofte fikk miljøvariablene resatt av administrasjonsverktøyet. Hele prosessen med sette opp og vedlikeholde et fungerende utviklingsmiljø var en frustrerende affære, som også gjorde det veldig vanskelig å teste ut nye ting. Utviklere brukte ofte ukesverk på å få satt opp alt og på å bli produktive medarbeidere.Dette gjorde at vi ble kjent med våre to første venner: Virtualbox og Vagrant.Kilde: medium.com/@botdotcom/installing-virtualbox-and-vagrant-on-windows-10Kombinasjonen av Virtualbox og Vagrant ga oss muligheten til å scripte oppsettet av et virtuelt linux-miljø uten å måtte forlate windows-plattformen. Da tok det ikke lang tid før vårt første hjemmelagde verktøy, provision-dev ble født.Nå har vi forlatt windows helt til fordel for en utviklingsplattform som kjører Linux, men verktøyet provision-dev lever videre.Provision-devProvision-dev er et konfigurasjonsrepo som lar oss velge selv hva vi ønsker å installere på maskinene våre. Sett utenfra så inneholder provision-dev to script.Configure.sh lar deg velge hva du vil installere i utviklingsmiljøet. Det kan typisk være hvilken versjon av Intellij man ønsker. Videre kan man velge om man ønsker å installere verktøy for sikkerhetstesting, databaseverktøy, mobilutvikling osv.configure.sh brukes til å velge hvilke verktøy man ønsker å installere i sitt miljøNår man har valgt hva man ønsker i utviklingsmiljøet sitt så kjøres steg to av provision-dev, nemlig provision.sh.Provision.sh setter opp alt du trenger for å gå fra en nytanket laptop med linux til å ha et fullt fungerende utviklingsmiljø med et utvalg Java-versjoner, Maven, Node, IDE og kode-editorer. Samt en rekke ekstraverktøy som ikke alle nødvendigvis trenger. Men det er likevel viktig at spesialistene også slipper å bruke masse tid på å sette opp sine verktøy.Dette gjør at du i løpet av få timer fra du får utlevert en maskin, kan ha et ferdig oppsatt utviklingsmiljø. Og vi har som mål at alle nye utviklere skal gjøre sin første commit mot master i løpet av første dag.BobBob er også en viktig del av plattformen vår. Av en eller annen grunn så virker det som at utviklere er fascinert av Byggmester Bob og de andre karakterene i serien. Som regel ender det opp med at interne verktøy får sine navn derifra.Kilde: YoutubeVår Bob startet som en rekke script som ble brukt til å bygge nettbank-applikasjonene, derav navnet Byggmester Bob. Etterhvert samlet vi disse scriptene i et felles gitrepo, slik at vi enklere kunne holde de like på tvers av utviklermaskinene. Som en ekstra bonus så bruker vi provision-dev til å sette opp en cron-job som sørger for at Bob alltid er oppdatert med de siste forbedringene som er gjort.I løpet av de sju årene siden første commit, så har Bob fått mange flere ferdigheter. Vi bruker nå Bob til blant annet å håndtere lokalt utviklingsmiljø, deploye til OpenShift og sette opp byggejobber.Bob har flere funksjonsområderBob er et verktøy du bruker fra kommandolinjen. Kommandoene og strukturen er inspirert av git, og både autocomplete og dokumentasjon av kommandoene er tilgjengelige fra terminalen. Kommandoene er gruppert etter funksjonsområde slik at det er lett å bruke og finne fram. Det er viktig for at det skal bli brukt.Bob og provision-dev utgjør basisen blantverktøyene våre og er de vi bruker mest i hverdagen, men de er ikke alene.Generering av applikasjonerI SpareBank 1 Utvikling er vi nå i overkant av 20 team som jobber med å lage stadig bedre nettbanktjenester til kundene våre. Og for at de skal kunne gjøre det, så må de kunne jobbe uavhengig av hverandre. Samtidig så skal vi kjøre et stort antall applikasjoner i containere og da ønsker man at mye er løst standardisert måte.Et godt eksempel på dette er logging. God logging er viktig av mange årsaker, og en god kandidat for standardisering. Det gjør livet enklere både for deg som utvikler og andre som har behov for å se i loggene. Og hvis man bruker verktøy som ELK-stacken, Splunk eller Humio kan man lettere søke på tvers av applikasjoner og få et bedre oversiktsbilde over applikasjonene dine.For å sørge for at alle som skal lage en ny applikasjon hos oss har et likt utgangspunkt har vi tatt i bruk applikasjonsgeneratorer. Bruk av en slik generator kan bidra til å fjerne en del yak-shaving:Oppsett av loggingStandardisert konfigurasjonOppsett av maven-prosjekt og avhengigheterI tillegg så gjør dette det mulig for oss å sørge for at applikasjonene kommer med ønskede sikkerhetsmekanismer innebygd.Det finnes flere verktøy du kan bruke. Av de enkleste så har man create-react-app og Spring-initializr. Vi hadde bruk for å lage noe litt mer tilpasset til vårt miljø, så derfor valgte vi Yeoman.Yeoman er et kommandolinjeverktøy som gjør det enkelt å kjøre generatorer. Det er basert på Javascript og Node slik at det fungerer fint på de fleste maskinplattformer. Det finnes også et utall ferdiglagde generatorer som man kan ta i bruk, eller man kan gjøre som oss, og lage en som er tilpasset din organisasjon.Her er et eksempel fra awl-generatoren vår. AWL står for Alliansens weblag og er templatene vi bruker til å lage apier og andre applikasjoner som er eksponert mot internett. Her har du mulighet til å velge hva slags type applikasjon det er og så får du et utgangspunkt med riktig konfigurert sikkerhetsnivå og frontend-modul ved behov.FallgruveneVerken standardisering eller verktøy som Bob er uten fallgruver. Og de bør man være klar over.Bob er en abstraksjon på toppen av en rekke verktøy. Det positive med abstraksjonen er at man forenkler mange operasjoner som i utgangspunktet er komplekse. Da slipper man å sette seg inn i hvordan det fungerer under panseret og man får utført det du ønsker å oppnå. Baksiden med dette er at det ikke alltid er lett å forstå hva som skjer. Derfor kan verktøy bli brukt feil og det kan bli vanskelig for brukerne å feilsøke hva som gikk feil de gangene det ikke fungerer som forventet. Abstraksjonene bør derfor være på riktig nivå og heller kombineres i et byggescript.I tillegg så tror vi at det er viktig at verktøyene er åpne. Dersom noen lurer på hvordan det fungerer under panseret, må koden være lett tilgjengelig og det må også være mulig for alle å bidra i utviklingen. Dette er noe vi skal skrive mer om i en senere artikkel.I del tre av denne serien skal vi se mer på hva vi har gjort for å gjøre produksjonssetting raskere, tryggere og hvordan det også bidrar til god nattesøvn.Det skal være lett å gjøre rett — del 2 was originally published in SpareBank 1 Utvikling on Medium, where people are continuing the conversation by highlighting and responding to this story....

Av Ola Hast

SpareBank 1 Utvikling på Instagram@sparebank1design@sparebank1utvikler