Sopra Steria kaller seg Norges største IT-konsulentselskap, med 1.800 ansatte her til lands.
Og med 45.000 ansatte totalt i over 25 land, og 4,1 milliarder euro i omsetning i 2018, kan vi trygt slå fast at de er ganske så digre.
Konsulentene deres koder løsninger i alt fra bank- og forsikringsbransjen til handel og service og transport og medier, som gjør teknologivalgene Sopra Steria tar interessante.
For å svare på kode24s spørsmål om hvilke teknologivalg de har tatt i 2019, og skal gjøre i 2020, har de satt en diger gjeng på saken. Svarene kommer derfra fra direktør Marianne Selle, seniorutvikler Jørgen Brække, seniorutvikler Silje Garshol Løvaas, seniorutvikler Johannes Brodwall, avdelingsleder Audun Tømte Haugnes, CTO Frode Carlsen, seniorutvikler Kjetil Kværne og seniorutvikler Marius Røed.
Hvilke teknologier begynte dere å bruke i 2019? ✨
💡 Frontend:
React (med Hooks), TypeScript, microfrontends, OpenAPI, PWA
For frontend ser vi at React fortsatt er vinneren innen frontend-rammeverk, spesielt i Norge og Norden, med lansering av React Hooks i begynnelsen av 2019. Typescript blir også mer og mer brukt, og er defintivt en must-know i 2019.
«Det ser ut til at flere og flere begynner å eksperimentere med micro-frontends.»
Innen arkitektur på frontend, så ser det ut til at flere og flere begynner å eksperimentere med microfrontends. Med overgangen til microservices og eventbasert arkitektur på backend - samt et større ønske om å bruke autonome team - så ser man også verdien av slikt på frontend, og Vipps er blant dem som har hengt seg på dette. Som følge av dette, så ser vi at verktøy brukt for å dele komponenter på tvers av team, som Storybook, og OpenAPI (Swagger 3), som bidrar med kodegenerering av Typescript i frontend og DTOer i backend, brer om seg for stadig raskere utvikling i dette komponenttankesettet.
Ellers ser man generelt en stor økning i mobilbruk vs. desktop, og fokus på mobil brukeropplevelse blir bare viktigere og viktigere. Google har bl.a. startet egne satsninger på dette, herunder optimalisering av mobil web-performance og Progressive Web Apps.
💡 Backend:
Kotlin, Java 11, C#8, .NET Core 3.0
I 2019 så ser vi generelt sett definitivt en økt interesse for minimalisme i bibliotek/rammeverk/avhengigheter, og en økt bevissthet rundt sikkerhet når det gjelder de avhengigheter man tar i bruk i prosjektene – en bevissthet vi regner med vil henge ved i 2020 også.
Vi ser at flere tar i bruk Kotlin i år, men det ser fortsatt ut til å være adoptert på enkeltteam/individ-nivå blant Java-/Spring- «flyktninger». Det later likevel til at det har erstattet interessen for Scala som alternativt språk på JVM.
6 ting jeg IKKE vil drive med i 2019
For Java-tilhengerne, så går de fleste nå over til OpenJDK og bytter til Java 11. Versjon 12 og 13 har vært lite tatt i bruk enda, men det ligger en spennende feature roadmap fremover med bl.a. Project Valhalla.
For de som sverger til Microsoft-teknologi, så er C# 8 i 2019 det primære programmeringsspråket på backend-løsninger. Vi ser også at .NET Core har erstattet .NET Framework, og en av de store nyhetene på Microsoft fronten i år var .NET Core 3.0, som gjør cross plattform-rammeverket komplett i forhold til å kunne utvikle på alle plattformer; mobil, web, desktop, AI, spill, IoT og cloud.
💡 Integrasjon:
OpenAPI 3.0, Swagger, utprøving av GraphQL
Versjon 3.0 av Swagger specification fikk det nye navnet OpenAPI specification, og har befestet seg som interface-definisjonsspråk for REST-API-er. Vi ser i økende grad at team lykkes med contract first utvikling med OpenAPI, både for backend-frontend-integrasjon og for system-til-system integrasjon.
GraphQL er fortsatt en aktuell teknologi i noen scenarioer, spesielt der man skal integrere flere datakilder. Men interessen vi så for noen år siden har dabbet av nå.
💡 Publisering:
headless CMS, Sanity.io
Innen publisering ser man flere som prøver seg på det norske Sanity.io eller tilsvarende «rene» headless CMS, hvor de mer tradisjonelle CMSene som f.eks. Episerver har større fokus på å bli mer en Customer Experience platform med blant annet personalisering, kampanjestyring, A-B-testing, søk - samtidig som de også sikter på å utnytte headless-tankesettet.
Slik kommer du i gang med Sanity.io
💡 Database:
PostgreSQL, SQL, Oracle GoldenGate, IBM InfoSphere
PostgreSQL har festet grepet som allround-database for ulike datamodeller (relasjon, KV, dokument), og fortsetter å spise Oracle der det ikke er spesielle kapabiliteter eller lock-in. SQL befester rollen som datahåndteringsspråk, og vi antar at andre lignende alternativer vil gradvis konvergere eller forsvinne. Vi ser økt interesse for CDC (Change Data Capture) for smidig legacy-migrering gjennom Oracle Goldengate og IBM InfoSphere (stormaskin). Dette øker fleksibilitet for migrering av gamle monolitter.
💡 DevOps:
Kafka, Kubernetes, Docker, Azure, Parcel
Kafka har fått en vekst gjennom året, og det kommer av den store interessen som er nå for microservices, og den store veksten driver igjen opp kjennskapen til asynkron kommunikasjon. Vi regner derfor Kafka som mer eller mindre etablert som go-to plattform for hendelsesorientert utvikling i 2019. Vi ser også mye bruk av Kafka som MQ Killer, med lettere integrasjon og som «hippere» alternativ, med samme praksiser og mønstre for feilhåndtering, persistent fire-and-forget, eller request/response patterns. Vi har sett noe eksperimentell bruk av Kafka som database, men det er utfordrende med skjema- og modell-endringer.
«Vi regner Kafka som mer eller mindre etablert som go-to plattform for hendelses-orientert utvikling i 2019.»
Kubernetes + Docker = Sant. Med den økte bruken av containere i 2019, så har dette langt på vei befestet sin stilling som container plattform, og vi kommer til å se mer av denne duoen i 2020.
Stort sett er utvikling i skyen foretrukket i 2019 fremfor OnPrem-løsninger. Blant løsningene som finnes der, ser vi stor popularitet hos Microsoft sin Azure, med Azure DevOps som foretrukket verktøy for automatisert bygg og release.
Hvilke teknologier sluttet dere å bruke i 2019? 💩
Teknologier vi ser det blir mindre av i nye prosjekter i 2019 er blant annet Angular. Angular har vist seg å være vanskeligere å mestre enn utfordrerne, primært React og Vue. Allerede i 2018 state of js-rapporten rapporterte svært mange av de som hadde erfaring med Angular at de ikke ønsket å benytte rammeverket videre.
Angular er fortsatt i utstrakt bruk, men vi ser at det ofte oppleves i mange prosjekter som et for komplekst rammeverk i forhold til verdien det gir.
Vi ser også at flere uttrykker skepsis til kompliserte og automatiske rammeverk som Spring og et ønske om en mer minimalistisk bruk av rammeverk.
- Alt håp er ute, jeg tar systemet mitt offline
Hvilke teknologier antar dere å begynne å bruke i 2020? 🔮
💡 Frontend:
Vue.js har lenge vært nevnt som en «up and coming» teknologi, og vi er spente på om flere vil begynne å ta i bruk Vue i 2020, da man gjerne ser fordelene av et fullverdig rammeverk kontra React med alle sine biblioteker. Men React vil nok fortsatt står svært sterkt i året som kommer.
For Angular sin del vil nok versjon 9 med deres nye compiler Ivy være avgjørende for om noen velge Angular-toget i 2020. Ellers blir det spennende å se om 2020 blir året for Webcomponents. Det å kunne lage custom html-elementer, uavhengig av teknologi, er gjerne noe som sammenfaller godt med både autonome team og microfrontends.
«Vi er spente på om flere vil begynne å ta i bruk Vue i 2020.»
💡 Backend:
Vi forventer økt grad av bytte til micro-containere, blant annet ved bruk av Eclipse MicroProfile.
Apache spark har også vært en spennende nyhet i år, med bedre ytelse enn python, så dette er definitivt noe vi kommer til å se nærmere på og ta i bruk til neste år.
💡 DevOps:
For Kubernetes så forventer vi økt bruk av sidecars for zero-trust security (f.eks. Istio) gjennom 2020.
GitHub har også etablert en veldig solid offering. Vi antar det vil utradere mang en internbygget utviklingspipeline og interne DevOpsteam/-roller, og forventer at verktøy som Jenkins, Jira, Sonarqube, Nexus, Artifactory etc. erstattes i stort tempo. Videre er sikkerhetsscanning gjennom Github+Dependabot er en svært god kombinasjon for forvaltning av avhengigheter. Kombinasjonen Github Actions + Github Packages har meget høyt potensial, men vi antar at dette fortsatt er noe umodent frem til sommeren.
Om dere bare skulle lært dere én ny teknologi for å bli klare for 2020, hvilken ville det vært? 💡
Dersom du ikke kjenner til disse teknologiene ved starten av 2020, så er faren stor for at du faller litt bakpå:
💡 Frontend:
TypeScript
TypeScript fra Microsoft er strengt typet Javascript som blant annet gjør det lettere å unngå runtimefeil, og har en lav innføringskostnad da det lett kan innføres i systemer som allerede bruker javascript. Vi ser at man utforsker TypeScript på grunn av muligheten for å unngå feil, men at bedre støtte for refactoring og code completion gir stor verdi for utviklerne. Dette blir mye brukt allerede, og vi antar at vi vil se mer bruk av det i 2020.
How I rewrote our codebase to TypeScript in a week
💡 Backend:
Kotlin
Kotlin er et språk som har full interoperabilitet med Java, og dermed lett kan innføres i eksisterende Java-kodebaser. Det er blant annet mer konsist enn Java, har god støtte for funksjonell programmering og har en fail-fast kompilator som minsker risiko for runtime-feil.
💡 DevOps:
Kafka
Fokuset på microservices tror vi bare vil fortsette i 2020, og for å følge med denne trenden, så er Apache sin Kafka et nyttig verktøy å ha i beltet.
💡 Integrasjon:
OpenAPI
Med å bruke contract first-utvikling med OpenAPI skriver man en YAML-fil som definerer endepunktene og objektene i API-et. Fra dette kan man bruke for eksempel openapi-generator eller NSwagStudio til å generere TypeScript, Java, Kotlin eller C# kode for grensesnittet. Med et godt oppsett er dette produktivt og en støtte for utvikling.
Hva tror dere blir bransjens største utfordringer i 2020? 🔥
TLDR; Hvordan klippe opp og sy sammen igjen store systemer, etterspørsel på IT-hoder, tankekors vedrørende autonome team og ny trend med nearshoring og AI, fokus på verdiskaping fremfor buzzwords
Arkitekturmessig blir utfordringen den samme som den alltid har vært: Hvordan klippe opp problemet man skal løse i mindre biter og hvordan sy disse sammen igjen. Vi tror at microservices, REST (spesielt med OpenAPI) og Kafka vil dominere svaret i det nye året, men som tidligere trender vil det være krevende å bruke verktøyene godt.
«Man skal helst kunne litt innenfor alle fagdisipliner – også utenom programmeringen.»
Det er også stadig vanligere med autonome team i prosjektene, og dette krever igjen mer av utviklerne. Man skal helst kunne litt innenfor alle fagdisipliner – også utenom programmeringen, som testmetodikk og UX. Vil dette føre til at man mister fagspesialistene og former flere allroundere, eller vil man kunne greie å fortsatt dyrke spydspissene samtidig som man får selvdrevne team som kan driver kontinuerlige leveranser?
Det er stadig stor etterspørsel etter de gode IT-hodene i markedet, og dette er en utfordring som også vil prege bransjen 2020. Det vil være en utfordring både å finne og utdanne gode folk. Utviklingen innen IT, både på teknologi og måten vi jobber på, går raskt. Dette medfører at alle som jobber i bransjen derfor må være stadig villige til å lære mer og være opptatt av å utvikle egen kompetanse.
«Vi ser også at det i større grad gås bort ifra outsourcing av prosjekter til blant annet India.»
Vi ser også at det i større grad gås bort ifra outsourcing av prosjekter til blant annet India. Det har vært vanskelig å kvalitetssikre kompetansen man får og vanskelig å formidle behovsforståelse over kulturelle og fysiske avstander. Drift og juridiske spørsmål rundt innsyn i sensitive data har bydd på ytterligere problemer. Trenden har snudd, og prosjektene har kommet tilbake. Kvaliteten har blitt bedre, prisen har blitt litt høyere, driften enklere og brukerne er mer fornøyde. Bransjen er inne for en ny transformasjon, og den nye trenden vil være nearshoring og AI for å minke på kostnaden. Men hva vil dette gjøre for kostnad, risiko, drift og ikke minst det juridiske?
Helt til slutt så mener vi at en viktig faktor for å lykkes videre er å ikke bli fascinert av teknologien i seg selv, men av verdien som skapes. Når det dukker opp så mange teknologiske muligheter, er det fristende å bli mer opptatt av å teste ut teknologi enn å sikre at man kan bruke den til noe fornuftig. Bransjen har et ansvar for å være veivisere og gode rådgivere i hvordan bruke teknologien best mulig. Mange kommer nok dessverre til å kaste bort mye penger på buzzword-løsninger som de ikke får noe ut av.
Bouvet: - Nå er Java 8 på vei ut!
Bouvet oppsummerer 2019, og spår mer Grafana, skytjenester, AR/VR og no-code i 2020.