Minden, amit a technológiai adósságról tudni érdemes

Technológiai adósság: minden, amit tudni érdemes

A technológiai adósság megfelelő kezelése jelentheti a különbséget a sikeres és a sikertelen szoftverprojekt között. Figyelmen kívül hagyása vagy fel nem ismerése magasabb fejlesztési költségekhez és alacsony pénzügyi megtérüléshez vezethet. De mit is takar pontosan a technológiai adósság? Hogyan keletkezik és milyen fajtái vannak? Cikkünkben most ezeket mutatjuk be részletesen.

A technológiai adósság a hibáktól kezdve az örökölt kódon át a hiányzó dokumentációig mindent lefed.

Mi az a technológiai adósság?

A szoftveriparban a technológiai adósság egy mindennapos kifejezésnek számít, amit olykor szoktak technikai adósságnak, tervezési adósságnak vagy kódadósságnak is nevezni. Egy gyűjtőfogalomról van szó, amely a hibáktól kezdve az örökölt kódon át a hiányzó dokumentációig mindent lefed. 

A technológiai adósság minőségi hiányosságot jelent, amely minden fejlesztésnél keletkezik és a fenntarthatóságot nehezíti. Hosszú távon növeli a karbantartási, üzemeltetési és módosítási költségeket. Fenntartható termékek fejlesztése esetén ezért fontos explicit időt szánni a technológiai adósság kezelésére.

Honnan származik a technológiai adósság kifejezés?

A technológiai adósság terminológiát egy szoftverfejlesztő, Ward Cunningham alkotta meg, aki amellett, hogy az Agilis Kiáltvány 17 szerzőjének egyike, a wiki feltalálójának is tulajdonítják. Ő használta először ezt a metaforát, hogy a WyCash-nél a nem műszaki érdekelteknek elmagyarázza, miért szükséges a költségvetésbe erőforrásokat betervezni a refaktorálásra.

Ezzel egyúttal egy új divatos frázist alkotott a szoftveres közösségben, ami később számtalan tanulmány, vita és panelbeszélgetés tárgya lett.

A technológiai adósság jelentése az a inőségi hiány, amely a fenntarthatóságot nehezíti egy fejlesztés során.

A technológiai adósság különböző értelmezései

A technológiai adósság definícióját az évek során különbözőképpen fogalmazták meg. Nézzünk most meg néhányat ezek közül!

A technológiai adósság egy eszköz

Hasonlóan ahhoz, ahogyan valaki hitelt vesz fel egy ingatlanra, hogy a fellendülő ingatlanpiacra bejusson, a technológiai adósságot is gyakran használják eszközként az előrejutáshoz. 

Trey Huffine, a Gitconnected alapítója például egy startup szemszögéből magyarázza el a szerepét. Úgy fogalmaz, hogy a technológiai adósság minden olyan kód, amelyet most adunk hozzá a gyors nyereség elérése céljából, és amelynek kijavítása később több munkát igényel.

A technológiai adósságnak következményei vannak

Shaun McCormick definíciója a technológiai adósságról inkább a hosszú távú következményekre összpontosít. A technológiai adósságot olyan kódnak tekinti, amely csökkenti az agilitást a projekt előrehaladása során. Ugyanakkor nem használja a rossz vagy törött kód kifejezést.

Azt javasolja, hogy a valódi technológiai adósság mindig legyen szándékosés sose  véletlenszerű.

Mint mondja, a technológiai adósság akkor jön létre, amikor a fejlesztők rövidítéseket alkalmaznak, hogy gyorsabban elérjék a célt, mindez azonban egy nehezebben karbantartható kód árán történik. 

Gaminer megfogalmazása szerint a technológiai adósság olyan, mintha kölcsönt vennénk fel. Tehát segítségével többet érhetünk el, mint normális esetben, hosszú távon azonban magasabb költségeket kell megfizetnünk.

A technológiai adósság fajtái

Ahogy a technológiai adósságnak számos definíciója létezik, ugyanígy különböző szakemberek más-más kategóriákat határoznak meg ezen belül.

  • 2007-ben Steve McConnell a technológiai adósság 2 típusáról beszélt:

I. Szándékos –  Olyan adósság, amelyet valaki tudatosan, stratégiai eszközként vállal.

II. Nem szándékos – Ez a rossz munka és nem a stratégia eredménye.

  • Martin Fowler továbbgondolta McConnell koncepcióját és 4 kategóriát alkotott:

1.Szándékos és meggondolatlan – Leggyakoribb oka, hogy stratégiailag a gyors átadást helyezik előtérbe a jól megtervezett fejlesztési folyamattal szemben.

PÉLDA: A csapat úgy dönt, hogy nincs elég ideje, és szándékosan csökkenti a termék jellemzőit. Nem is tervezi a pótlásukat, és a sebességet a minőség elé helyezi. Vagy a projekt során leredukálják a kódolásra fordított időt azáltal, hogy kevesebb időt adnak a fejlesztőknek, ami nem megfelelő kódolást eredményez.

2. Szándékos és körültekintő – Ebben az esetben a csapat tisztában van a technológiai adósság generálásával, ennek ellenére továbbhalad. A csapat a kezdetektől fogva pontosan látja a következményeket, tudja, hogy szükség lesz a legjobb gyakorlatok újbóli áttekintésére és alkalmazására, ha egyszer lesz rá idő.

3.Nem szándékos és meggondolatlan – Ez a technológiai adósságok legkárosabb típusa. Akkor fordul elő, amikor a szoftverfejlesztő csapat nem alkalmazza a legjobb gyakorlatokat, és nem tudja, hogy technológiai adósság halmozódik fel. Ez lehetetlenné teszi a megoldások megtervezését vagy az adósság negatív hatásának mérését.

PÉLDA: Előfordul, hogy bizonyos csapattagok nem rendelkeznek a szoftver kódjának megírásához szükséges készségekkel. Ennek ellenére felhatalmazást kapnak arra  hogy dolgozzanak rajta. Miközben kódolnak, technológiai adósságot generálnak és halmoznak fel. A fejlesztők a készségek hiánya miatt nincsenek is tisztában azzal, hogy milyen kárt okoznak a projektnek, így nem tudnak körültekintően eljárni.

4. Nem szándékos és körültekintő – A csapat ilyenkor egy szoftverfejlesztési ütemterv minden lépésénél alkalmazza a legjobb gyakorlatokat, de valamilyen okból mégis technológiai adósság generálódik, amit a szakemberek képesek kezelni.

PÉLDA: Ebben az esetben egy hozzáértő csapat dolgozik a szoftver kódján, ugyanakkor a technológiai adósság egy nem látható kódolási hiba miatt keletkezik. Képességeiknek köszönhetően a szakemberek képesek ezt azonosítani és megfizetni.

  • 2014-ben egy akadémikusokból álló csoport megállapította, hogy a technológiai adósság kategorizálására szolgáló meglévő keretek nem foglalkoznak közvetlenül az adósság konkrét természetével. 

Egyúttal elutasították a McConnell és Fowler által felvázolt kategóriákat, és azt javasolták, hogy a technológiai adósságot a jellege alapján osztályozzák, és ne aszerint, hogy azok stratégiai vagy nem stratégiai jellegűek.

Az ennek eredményeként született dokumentum szerint, amelyet a Software Engineering Institute “Towards an Ontology of Terms on Technical Debt” (A technológiai adósság fogalmainak ontológiája felé) címmel tettek közzé, a technológiai adósság 13 különböző típusáról beszélnek. Ezek mindegyikéhez kulcsfontosságú mutatókat határoznak meg:

  • Építészeti adósság
  • Építési adósság
  • Kódadósság
  • Hibaadósság
  • Tervezési adósság
  • Dokumentációs adósság
  • Infrastruktúra adósság
  • Emberi adósság
  • Folyamat adósság
  • Követelmény adósság
  • Szolgáltatás adósság
  • Tesztautomatizálási adósság
  • Tesztadósság

Mi lehet a technológiai adósság oka?

Egy projekt során sokféleképpen halmozódhat fel technológiai adósság, nézzünk most meg ezek közül néhányat!

#1. ok: A tervezés hiánya

Amennyiben időmegtakarítás céljából a projekttervezés befejezése előtt kezdődik a fejlesztés, akkor nagy valószínűséggel később vissza kell térni egyes elemekhez és át kell dolgozni azokat. 

#2. ok: Külső erők

Ilyen lehet például az üzleti nyomás. Gyakran fordul elő, hogy a piac vagy az üzleti vezetők azt várják el, hogy a termék minél hamarabb közönség elé kerüljön, még abban az esetben is, ha nem készült el az összes szükséges változtatás. Ez meglehetősen gyakori a termékmenedzsment területén.

#3. ok: Tudatlanság

Ha a projektmenedzser és a projektcsapat nem ismeri a technológiai adósságot, akkor szinte biztosan szembe találják vele magukat. Ha olyan folyamatot követnek, amely nem veszi figyelembe ennek következményeit, akkor a projektet érintő eredendő kockázatok ismerete nélkül haladnak előre.

#4. ok: A rugalmasság hiánya

A rugalmasságra és a változtatásra való képtelenség szintén technológiai adóssághoz vezet. A vezetők esetében elengedhetetlen a flexibilitás.

#5. ok: Nem megfelelő dokumentáció 

Amennyiben nem készül el a megfelelő dokumentáció a projekt folyamán, az olyan technológiai adósságot eredményez, amelyet később meg kell majd fizetni.

#6. ok: Az együttműködés hiánya 

A projekt csapaton belüli tudásmegosztás hiánya befolyásolja a hatékonyságot, ami technológiai adósságot teremt. Az online kollaborációs eszközök használata segíthet a kulcsfontosságú információk cseréjének javításában.

#7. ok: Párhuzamos projektek 

A párhuzamos fejlesztések szintén adósságot okozhatnak, mivel a változtatások egyetlen forrásba történő egyesítéséhez szükséges munka többlet energiát kíván.

#8. ok: A követelmények módosítása

Ha egy projekt követelményei megváltoznak, az szintén technológiai adósságot okoz.

#9. ok: Az iparági szabványok elhanyagolása

Ezek figyelmen kívül hagyása szintén jó példája a technológiai adósság halmozásának, amire a későbbiekben biztosan figyelmet kell fordítani a projekt során.

#10. ok: Gyenge vezetés 

A felelősségvállalás hiányától kezdve a rossz vezetésen át az utolsó pillanatban végrehajtott változtatásokig, minden oka lehet az adósság generálásnak.

A technológiai adósság minden esetben rossz?

Ha egyszerűen szeretnénk válaszolni erre a kérdésre, akkor a technológiai adósság nem jó, és nem rossz. De adósság. 

A legtöbb szoftvercéget manapság a piaci verseny arra kényszeríti, hogy rövid idő alatt fejlesszen és szállítson. A startupok különösen érzik annak súlyát, hogy minél gyorsabban képesek legyenek előállni a termékkel. Ez a nyomás pedig sok termék- és szoftverfejlesztő csapatot arra ösztönöz, hogy kompromisszumot kössön a technológiai adósság bevállalása kapcsán.

Agilis projektmenedzsment vs. vízesés modell

Az agilis csapatok vélekedése szerint a technológiai adósság nem eleve rossz. Valójában a legtöbb – ha nem minden szoftvertermékben van – valamilyen mértékű technológiai adósság. 

Ha figyelembe vesszük, hogy a csapatok mennyi kódot szállítanak naponta  – különösen agilis környezetben, ahol a működő szoftver a haladás elsődleges mércéje -, ez nem meglepő állítás.

Ugyanakkor a vízeséses módszertan és más dokumentáció vezérelt keretrendszerek szerint dolgozó szoftverfejlesztő csapatok nem osztják ezt a szemléletet.

A technológiai adóssággal kapcsolatos hozzáállás nem csak a vállalati filozófiától, hanem az egyes részlegektől és szerepköröktől függően is nagymértékben eltérhet.

Hogyan előzhetjük meg a technológiai adósság generálását?

Mint ahogy már említettük, a technológiai adósság nem feltétlenül rossz dolog, mivel a versenytársaknál gyorsabban juthatnak el termékeink a piacra. Ahogy visszajelzéseket kapunk, a hibákat javítani lehet, és a termék fejlődik, miközben bevételt hoz a szervezet számára.

A megtermelt pénzből ki lehet fizetni a felhalmozott technológiai adósságot. Fontos azonban azzal is tisztában lenni, hogy ez az adósság váratlanul is jelentkezhet az irreális idő- vagy erőforrás korlátok miatt. 

Vannak módszerek, amelyekkel a projektmenedzser elkerülheti a technológiai adósságot:

1. Beszéljünk a technológiai adósságról

Ez kulcsfontosságú. Ha a csapattagok tisztában vannak vele, akkor nagyobb valószínűséggel azonosítják azokat az utakat, amelyek azt eredményezik. Érdemes figyelmet szentelni rá, például olyan kérdéseket, feltenni, hogy: “Ha a rövidítés a helyes választás, mit nyerhetünk vele? Mik a kihívások és a jövőbeli következmények?”

2. Legyen idő a kezelésre

Mindig gondoskodni kell arról, hogy az ütemtervben legyen idő a technológiai adósságok mielőbbi kezelésére, hogy a sebezhetőségek és gyengeségek csökkentése mellett haladhasson előre a projekt.

3. KPI-ok használata a projekt elvárásainak nyomon követésére

Azzal, hogy KPI-okkal rendelkezünk a projekt teljesítményéről vagy a fejlesztésről, jobban priorizálhatjuk a technológiai adósságot kezelő munkát. 

4. A technológiai adósságok folyamatos monitorozása

Fontos, hogy a csapat a technológiai adósságot a feladatok elvégzése közben rendszeresen nyomon kövesse és más feladatokkal együtt kerüljön rangsorolásra.

5. Legyenek reális céljaink

A technológiai adósság felhalmozásának biztos módja, ha túl hamar, túl sok feladatot kap a csapat. Mindig igyekezzünk reális határidőket és célokat kitűzni, amelyeket teljesíteni tudunk anélkül, hogy spórolni kellene, és esetleg technológiai adósságot halmoznánk.

Az agilis irányzatok egyre nagyobb teret hódítanak projektek során és a szervezetek életében. Fejlessze Ön is gyakorlati eszköztárát és szerezzen nemzetközi képesítéseketMélyítse el tudását agilis képzéseinken!