Ett av de mest märkbara skiftena de senaste två åren är hur vi av nödvändighet lutar oss mot digital infrastruktur. Trots att de som underhåller infrastrukturen under pandemin också kämpade med att hitta nya arbetsmetoder, stod systemen pall på ett beundransvärt sätt.

Vi har lärt oss att webben kan förse oss med allt från personlig skyddsutrustning till virtuella bröllop. När knappt något annat gav oss tröst sökte många av oss allt längre in i våra digitala kokonger. När användningen av webben ökade dramatiskt upptäckte vi nya skiljelinjer och områden som kan förbättras. Nu kommer en ny våg av teknologier som kan bygga på och uppdatera våra upplevelser på nätet. Här ska vi ta en titt på dagens trender som rör sig mot att bygga om internet som vi känner det.

Koda för nöje och vinst

Om du frågar nästan vilken utvecklare som helst om det program de just utvecklat är tillräckligt bra, kommer de svara att det kunde ha gjorts bättre. Det finns likheter med hur musiker till slut ändå släpper sitt album, även om de känner att det inte är helt färdigt. Eller som John Lennon en gång sade om Beatles tidlösa verk: ”Det finns inte ett enda av dem jag inte skulle vilja spela in igen”.

Från det här resonemanget kan vi förstå en av de viktigaste drivkrafterna bakom kontinuerliga förbättringar: Mjukvaruutvecklare leds av något som liknar en artistisk anda, en okuvlig enträgenhet att bygga något utmärkande. Vi säger ofta att allt handlar om läsbarhet och underhållbarhet, men sanningen är att många av oss motiveras lika mycket av en medfödd önskan att skapa något av inneboende värde.

Excellens är förstås inte den enda motivationen; den andra är vinsten. Trots alla odds innovatörer har emot sig, när allt plötsligt stämmer kan de ekonomiska förmånerna bli häpnadsväckande. Även om programmerarens attityd är notoriskt svår att förena med affärsmässigt skarpsinne har möjligheten att para ihop dessa egenskaper potentialen att fånga det där plötsliga ögonblicket då allt stämmer.

Trenderna inom mjukvaruutveckling smälter samman

Vartefter dessa starka motivationskrafter arbetar sig in i industrins smältdegel får vi ett utvecklingslandskap som förändras i snabb takt. Låt oss ta en titt på några av de mest inflytelserika trenderna inom mjukvaruutveckling och hur de sammanfaller just nu.

Samverkan. De tekniktrender som formar mjukvaruutvecklingen under 2022.
Samverkan. De tekniktrender som formar mjukvaruutvecklingen under 2022.

Molnanpassningen och den högre ordningens infrastruktur

Att allt mer pengar läggs på molntjänster är odiskutabelt. Faktum är att utgifterna för molnet nyligen övertog över hälften av alla it-kostnader. Anledningen är enkel: Virtualiserad infrastruktur och tillhörande verktyg erbjuder en mer agil lösning för många behov. Det fascinerande är hur användningen av molnet utvecklas.

Idén med molnbaserade, dynamiska virtuella maskiner (alltså infrastruktu as som tjänst eller IaaS) var en kraftfull idé, men det visade sig bara vara den första skissen på utvecklingens canvas. PaaS och serverlösa funktioner är nästa logiska steg. Vi ser också diversifiering och specialisering av lösningar – en vertikal såväl som horisontell evolution. Virtualiserad infrastruktur låter innovativa aktörer utveckla högre ordningens lösningar. Spelarna på denna arena kan indelas i två breda läger: API-värdar (hosters) och API-leverantörer (providers).

Serverlösa utrullningar och API-leverantörer

Tjänster som Vercel and Netlify är två bra exempel på toppmoderna API-värdar. De representerar en slags serverlös infrastruktur som rider ovanpå lagren med IaaS och PaaS, alltså infrastruktur som tjänst respektive plattform som tjänst. Dessutom representerar de en specialisering av den infrastruktur som inriktar sig på speciella användningsområden.

Alla som har suttit framför Vercels användargränssnitt och rullat ut en komplex front-end-applikation med ett klick vet vad jag menar: Vercel är ”serverless plus”, det vill säga det är en serverlös-lösning som finslipats för ett exakt behov.

På samma gång är MongoDB Atlas ett gott exempel på en modern API-leverantör. Detta råkar vara ett API som primärt levererar så kallad datauthållighet (data persistence). Kärnan i MongoDB Atlas är ett API som tjänst som är tillgängligt på distans. Andra liknande tjänster är Sentry.io och Auth0.

Liksom Vercels lösning som API-värd, är det centralt att dessa lösningar erbjuder en hög grad av abstraktion – mycket ull för lite skrik – finslipat för ett visst ändamål. Dessa lösningar är byggda ovanpå det moderna virtualiseringslagret.

Den traditionella modellen är att rulla ut datalagring i den virtuella infrastrukturen, fast i molnet. Men att använda något som MongoDB Atlas är som att ha en specialiserad datalagringspartner som gjord för att göra det enklare att integrera det du har med det du behöver.

En annan intressant observation kring de framgångsrika verktygen i detta gebit är att de tenderar att ha tre aspekter: ett API som applikationer kopplar sig till, stöd för kodbaserad integration, och ett webbaserat administrationsgränssnitt.

Men API-byggare då?

Vi kan alltså se att molnplattformarnas era har stakat ut en väg till något nytt, men det är svårt att förutse exakt vad. Det är en process som handlar om att upptäcka var användarnas behov – och som inte alltid är kända för dem själva – på nya sätt möter de implicita förmågor dessa nya verktyg har.

Intressant nog förblir själva byggandet av API:erna något som är relativt oförändrat. Förbättringarna har kommit i inkrementella steg, men inte alls som den disruption vi sett inom värdskap och leverans. En rörelse mot att ena API-konstruktion med värdskap och leverans skulle representera en omvälvning full med möjligheter.

Låt oss nu titta på några områden med aktiv utveckling inom mjukvarukonstruktion.

Verktyg och ramverk för front-end

Javascript fortsätter att stadigt utvecklas på framsidan av applikationerna, där magin mellan tredjeparts API:er och logiken i baksidan, och interaktionen mellan människa och maskin, tar sig uttryck. Samtidigt pågår ett grasserande naturligt urval genom tuff konkurrens bland de ramverk som byggs ovanpå Javascript.

Projekt som Solid, Svelte och Qwik trycker på utvecklingen i flera olika riktningar medan mer etablerade, reaktiva ramverk som React and Vue fortsätter att växa. Det är inte ofta man ser så intensiva, fokuserade iterationer och korspollinering inom ett område.

Specialanpassad mellanvara

Mycket av arbetet inom molntekniken handlar om att integrera existerande verktyg och om att förena API:er, vilket alltid kommer att involvera människor för att utföra specialanpassningar på mellanvarunivå. Detta beror på att det ultimata målet med all automation är att ta hand om människans varierande behov.

Utvecklingsspråk på serversidan, som Rust, och ramverk som JHipster, innebär en intressant utveckling, men i stora drag är området i ett ständigt flöde. Liksom framsidan väntar baksidan på en mer genomgripande evolution.

Nuvarande lösningar som Java, Node.js och Python (och deras besläktade ramverk) är alla väl anpassade till miljön och utvecklas ständigt som svar på verklighetens krav. Jag tror att de kommer utgöra ett viktigt och aktivt område även fortsättningsvis. Precis som IaaS fortsätter att vara ett vitalt lager inom den serverlösa tekniken, kommer kod för mellanvara att vara viktig för överskådlig tid.

Low code och maskininlärning hotar att konkurrera med mänskliga utvecklare, men kommer till sist att ses som bara ytterligare verktyg i utvecklarens verktygslåda. Ett utmärkt exempel på innovativa tankar inom low code är Builder. För att se hur maskininlärning kan assistera vid programmering behöver vi bara titta på GitHub Copilot.

Frikopplade arkitekturer, så kallade mikrotjänster

Nästa sak vi behöver titta på är avlägset frikopplade arkitekturer, även kallade mikrotjänster. Dessa kommer även fortsatt att växa och bli mer förstådda. Det monolitiska arkitekturparadigmet var uppenbarligen inkapabelt att dra full nytta av den potential som ligger i molntekniken.

Alternativet, en arkitektur för mikrotjänster, implicerar att ta på sig den börda devops innebär, och som är långt från trivial att bära. Mikrotjänster är på samma gång en möjliggörare för att skala upp processer, och något som ökar komplexiteten. Alla innovationer som vill omfatta nya teknologiska inriktningar – exempelvis API:er som tjänst, utvecklingen inom frontend, eller specialanpassad mellanvara – får räkna med komplexiteten i arkitekturer för mikrotjänster.

Processautomatisering

Processautomatisering – alltså att kombinera de processer som olika team använder för att bygga och leverera mjukvara – blir utifrån sin förmåga att paketera och leverera bästa praktiker allt mer viktig. Inom detta område ser vi ett fokus på skräddarsydda lösningar. Varje organisation är unik, så det ligger ett värde i att ta det som man vet fungerar inom större organisationer som Google och Microsoft, och fånga detta i lösningar som fungerar för team av alla storlekar och typer.

De många lösningarna för CI/CD, verktyg för hantering av byggen och beroenden, och ramverk för testning, är exempel på vilka utvecklaraktiviteter verktygen för processautomatisering riktar in sig på. Versionshantering och relaterade tjänster som Github faller också in inom denna kategori av verktyg. Processautomation är ytterligare ett nyckelområde med betydelse för framtidens mjukvara.

En ny slags utvecklarupplevelse

Som vi ser i bilden i början av artikeln är var och en av dessa trender inom mjukvaruutveckling en förändringskraft att räkna med. Tillsammans pekar de mot en ny typ av utvecklarupplevelse, som är övertygande, men fortfarande inte helt manifesterad. Vi kan se de ingående krafterna och hur de rör sig, men framtiden är ändå inte helt tydlig. Mjukvaruutvecklare lever i en spännande tid.