Olen hakanud hiljuti järjest enam mõtlema tarkvara jätkusuutlikkusele. Ja jätkusuutlikuse all ma pean silmas selle hilisemat hooldamist ja erinevate sõltuvuste uuendamist. Ajalooliselt olen alati uusi hobiprojekte alustades teinud julgeid tehnoloogilisi valikuid, et õppida midagi uut ja murda välja enda mugavustsoonist. Tihti ei ole võimalik kellegi teise heaks töödates teha selliseid valikuid, sest see mõjutab potentsiaalselt kogu ettevõtet, ning seega eeldab ka mingis ulatuses kooskõlastamist. Kuid hobiprojektide puhul piirangud puuduvad ja seega on võimalik katsetada uusimaid trende ja tehnoloogiaid. Olen kasutusele võtnud sellisiseid tehnoloogiaid ja teeke, mis kunagi ei olnud veel üldse nii populaared ja ka nende tulevik oli küsitav. Näiteks olen kasutanud Dropwizard'it, Vue.js, MongoDB, Spring Boot'i ja Kotlin'i just nende algusaegadel. Nüüd aga hakkab tunduma, et ehk on sellel lähenemisel ka oluline puudus.
Kindlasti on uute trendide ja tehnoloogiate proovimine oluline just isikliku arengu seisukohast. Ja ilmselt olen nende katsetuste tulemusena saanud palju uusi teadmisi ja kogemusi. Kuid olen märganud, et mu hobiprojektid ei kipu ära lõppema. See tähendab, et hoolda ja arendan ikka veel tarkvara, millega alustasin pea 10 aastat tagasi. Kõik need tehnoloogilised valikud on jätkuvalt pildil ja aja möödudes põhjustavad kohati ka järjest rohkem peavalu. Mõnede tehnoloogiate ning teekide uuendamine on väga töömahukas ja aeganõudev. Mis omakorda paneb valiku ette, et kas kirjutada kogu tarkvara ümber uuematele tehnoloogiatele või siis jätkata vanaviisi, ning investeerida palju aega selle töökorras hoidmisele. Mõlemad valikud on ebameeldivad ja panevad pigem mõtlema, et kas projektides, millel ei ole selget "aegumiskuupäeva", peaks tehnoloogiat valides kasutama just rohkem "vanu ja igavaid" lahendusi.
Kõige ilmekam on see probleem just JavaScripti maailmas. Seal muutuvad nii NodeJS versioonid, kui ka kasutajaliideste raamistikud, väga kiiresti. Näitesk Vue.JS 3 ei ole tagasiühilduv Vue.JS 2-ga. Vue.JS kasutajaliidese teegid, nagu Vuetify 2, ei ole ühilduvad Vue.JS 3-ga. ReactJs uued versioonid defineerivad ümber, et millised on parimad praktikad ja kuidas tuleks kirjutada komponente. Ning paljud teegid sõltuvad metsikutes kogustes teistest teekidest. Tulemuseks on supp, mida on väga vaevaline uuendada ja hoida pika perioodi jooksul töökorras.
Sama dilemma tekib tegelikult ka väljaspool hobiprojekte ja puudutab kõiki ettevõtteid. Kas anda järgi arendaja soovile kasutada uusimat ja kõige huvitavamat tehnoloogiat või siis jääda kindlaks vanale ja tõestatud tehnoloogiale.