Hva er de viktige tingene du bør vurdere når utviklingsavdelingen skal lage et nytt produkt? Sammen med budsjett og ressurser, må du velge riktig ‘Tech Stack’ for å få prosjektet ditt til å lykkes.
Når vi snakker om ‘Tech Stack’, så refererer vi gjerne til alle de viktigste teknologiene som utgjør programvaren din. Det er den teknologien som får de underliggende verktøyene, rammeverk og bibliotekene som brukes til å bygge og kjøre et nettsted, en webapplikasjon eller mobilapplikasjon.
En tech-stack er stort sett delt inn i to: klientsiden (frontend) og serversiden (backend). Front-end er det brukerne ser når de samhandler med et nettsted eller applikasjon. Front-end utvikling fokuserer på grafikk, knapper og hvordan ting oppfører seg når noen samhandler med dem.Backend fokuserer på data (informasjon), beregninger, forretningslogikk, tilgangsstyring osv. og gir frontend all informasjon den skal vise til brukeren.
Front-end tech-stack består vanligvis av tre elementer:
- HTML – som brukes til å strukturere og plassere innhold. Tenk på dette som rammen som forteller alt hvor du skal dra.
- CSS – som bestemmer hvordan innholdet vises. Den styrer farger, fonter, layout osv.
- JavaScript - Aktiverer interaktivitet og forbedrer funksjonaliteten til et nettsted eller en app.
Backend-siden består som regel av:
- Programmeringsspråk som Java, C#, PHP, C/C++, Kotlin eller Python . Et programmeringsspråk er typen kode en utvikler vil bruke for å opprette applikasjonen din.
- Et rammeverk som Django, Flask, .NET, Ruby on Rails eller Laravel. Rammeverket er et sett med komponenter skal forenkle utviklingsprosessen.
- Database som MySQL, Oracle, MongoDB, PostgreSQL, MS SQL. Det er her data er lagret.
- En webserver som Apache, Nginx eller IIS. Serveren din er et dataprogram eller en fysisk maskin som lagrer, behandler og leverer ditt kodede innhold til brukere som et nettsted eller program.
Det finnes for øvrig flere lag med serverteknologi. Hardware, skyteknologi (cloud) som Azure eller AWS, Operating system som Windows eller Linux og flere.
Hvorfor er valget av «tech stack» viktig?
Når du bygger programvare, vil du starte med riktig grunnlag. Du må velge en teknologi basert på problemet du vil løse. Konkurranseevnen, skalerbarhet og levedyktigheten til nettstedet eller applikasjonen du lager vil avhenge av teknologi du velger.
Det er lett å bli forvirret og skille fordeler og ulemper med de alternativene du har. Hver teknologi har sine styrker og svakheter, og du vil ikke bruke tid og penger på en løsning som ikke er skalerbar med selskapets vekstambisjoner.
Les mer: Hva er teknisk gjeld?
Valg av endelig tech stack vil ha innflytelse på flere ting. Som f.eks;
- Påvirke hvordan applikasjonen eller system fungerer
- Påvirke hvordan det vil oppføre seg i fremtiden
- Ha innvirkning på hvor fleksibelt og skalerbart produktet ditt vil være
Det vil også ha en innvirkning på hva slags utviklere du skal rekruttere. De fleste utviklere spesialiserer seg gjerne på spesifikke teknologier fordi det er for mange for en enkelt person å lære og vedlikeholde over tid.
Hver teck stack har styrker og svakheter. Noen tillater for eksempel avansert tilpasning. Andre er mer skalerbare. Noen er bedre for prosjekter som trenger mye plass til å vokse.
Les mer: Hva bør du se etter når du rekrutterer nye IT-utviklere?
Så hvordan velger du riktig tech stack for ditt utviklerteam?
Jo større nettverk bak et språk er, jo bedre for utvikleravdelingen. Et stort nettverk betyr gjerne mange gratis ressurser for utviklere å lære av og mange open source-biblioteker som en utvikler enkelt kan utnytte for å spare tid.
Like viktig som antall medlemmer, er hvor aktive medlemmene og nettverket er. Noen teknologier som Basic eller Cobol, som er 50+ år gamle, har åpenbart mange tilgjengelige ressurser, men samfunnet er nok ikke like oppdatert og aktivt lenger.
Å ha muligheten til å ta del i et aktivt nettverk kan være en enorm tidsbesparelse for utviklere når de møter på komplekse utfordringer i utviklingsprosessen. Da har de ulike forum og kanaler hvor de kan finne hjelp og støtte, som Github, og spørsmål og svar-nettsteder som StackOverflow, Medium eller Reddit.
Sett bort fra tilgjengelige ressurser og nettverk, så er noen flere faktorer du bør vurdere:
- Hva skal dere lage – hva ønsker dere å oppnå - Kartlegg brukerens opplevelse. Noen teknologier kan være mer passende for spesifikke bruksområder enn andre.
- Finn ut hvor mye du kan bruke nå, hva du kan budsjettere for fremtidige faser av utviklingen, og hva du kan sette av til løpende vedlikehold. Hvis du trenger å nå bestemte inntektsmål for å fortsette fremtidige faser av utviklingen, må du være tydelig på det.
- Nåværende trender - teknologier kommer og går, og det er kanskje ikke lurt å forplikte seg på lang sikt til en som blir utdatert.
- Tilgjengeligheten av utviklere på markedet innen de ulike teknologier - noen ganger kan det være klokere å gå etter en teknologi som tilbyr et godt utvalg av talentfulle kandidater.
- Dine utvikleres egne ambisjoner - gode programvareselskaper lar utviklerne utvide ferdighetene sine på den måte de ønsker.
Noen nye teknologier som Ionic eller React Native er veldig unge, men de blir raskt populære fordi det er en kostnads- og tidseffektiv teknologi som lar deg raskt bygge mobilapplikasjon for alle store plattformer på en kodebase.
På den annen side eldes noen gamle teknologier, som Python eller C++, aldri og er fortsatt veldig populære og de utvikles videre. Uansett hvilken tech stack dere benytter dere av, er det utviklerteamet som faktisk skal gjøre jobben og som skriver koden for deg.
Les mer: Hvordan tiltrekke seg nye it-utviklere?
Som du ser, handler det både om mulighetene i teknologiene, men også om populariteten og utviklingen.
Ulike mobil- og webapplikasjoner krever forskjellige utviklingsverktøy.
Dessverre finnes det ingen beste sammensetning av front- og backend verktøy som kan brukes på alt. Når du velger en tech stack, må du gjøre det basert på hva dere faktisk skal lage og hvem som skal lage det.