úterý 28. října 2014

(Ne)marný boj s technologickým dluhem

Naše řešení je technologicky složité a bylo by složíte, i kdybychom nestříleli sami sebe do nohou. Pokud děláte distribuovaný systém, bude ten systém prostě složitý. Máme složitý systém, který je navíc okořeněný různorodostí jazyků a middlewaru, a proto je důležité bojovat s technologickým dluhem, aby na nás neustále nepadal nějaký kostlivec ze skříně. Nám se to v GoodData daří se střídavými úspěchy. V tomhle článku jsem zkusil sepsat pár postřehů a technik, které jsme vyzkoušeli.


Škatulata, škatulata hýbejte se


Dlouhou dobu jsme měli celé řešení rozdělené horizontálně, kdy si každý tým spravoval svojí vrstvu respektive službu. V tomhle rozpoložení se nám s technologickým dluhem nedařilo moc dobře bojovat a nejenom to. Vázl nám i vývoj regulérních produktových požadavků a to především pokud bylo potřeba týmovou spolupráci. Udělali jsme velký třesk a týmy jsme přestavěli na vertikální. Před reorganizací jsme měli tým erlangových vývojářů, java vývojářů, javascriptových vývojářů a perlových vývojářů. Teď máme týmy, kde je obrazně řečeno jeden erlangista, jeden javista, jeden perlista a jeden javascriptař.

Tohle rozložení, už z podstaty, moc nenahrává splácení technologického dluhu. Nebo lépe řečeno, nepozoruji žádný významný rozdíl. Troufám si tvrdit, že jsme si ověřili, že hýbání lidí zleva či zprava nemá na technologický dluh žádný vliv (přestože to nebyl hlavni cíl reorganizace).


Přiznejte si, že máte problém a ten kvantifikujte ho

Je to jako na sezení anonymních alkoholiků, tedy ne že bych tam někdy byl, musíte si nejprve přiznat, že máte nějaký problém. My jsme si udělali seznam s popisem jednotlivých oblastí a určili jsme si jejich priority. Seznam nám visí na vstupních dveřích kuchyňky, aby ho nikdo nemohl minout - viditelnost. Důležité je, že je to něco konkrétního, kvantifikovatelného, nejenom něco abstraktního.


Shoda, že s dluhem hodláte něco dělat

Důležitá je shoda s managementem, že je v zájmu všech s dluhem něco dělat. Management má někdy tendence tyhle problémy bagatelizovat, proto je důležité vysvětlovat, vysvětlovat a zase vysvětlovat a to i opakovaně. Technologický dluh nezmizí mávnutím kouzelného proutku. Alergie managementu na jakoukoliv zmínku o technologickém dluhu vyplývá ze snahy inženýrů vždy a za každých okolností se na něj vymlouvat. Právě proto se musíte shodnout, že s ním chcete bojovat.


Boj musí být priorita

Každý kvartál začínáme se seznamem priorit, na které se budeme zaměřovat. Pokud se nám tam nedostal konkrétní bod z výše uvedeného seznamu, nikdy se nic nestalo, dluh zůstal dluhem. Dávat si za prioritu cíl bojovat s technologickým dluhem nestačí. Vyberte si konkrétní bod ze seznamu, se kterým chcete bojovat a tomu dejte stejnou prioritu, jako produktovým požadavkům. Ve scrumu jsme zkoušeli rezervovat část kapacity týmu, ale i to nemělo zářné výsledky. Pocitově mi přišlo nejlepší, když byl celý sprint dedikovaný právě na konkrétní oblast technologického dluhu.


Vlastnictví

Technologický dluh se často obnaží v místech, které jsou vlastněné všemi a zároveň nikým. Je to podobné, jako s kurtizánou, se kterou obcuje půlka fotbalového mužstva, a když otěhotní, nikdo se k tomu nemá, protože to může být kohokoliv. A je úplně jedno jestli se jedná o část code base a nebo nějakou sdílenou službu. Jasné vlastnictví umožňuje lepší plánování a alokaci zdrojů. Pokud není možné určit jednoznačného vlastníka, musí se daná věc nějakým způsobem rozsekat. Pokud to není možné, většinou to indikuje nějaké nezdravé závislosti. Jejich rozmotání bývá často zdrojem všech problémů.


Trpělivost

Obrňte se trpělivostí, protože splácení technologického dluhu je běh na dlouhou trať. Boj s větrnými mlýny je to ve chvíli kdy máte nejasné vlastnictví, kolidující priority a zároveň musíte hasit požáry. V tom případě začněte od začátku výše uvedeného seznamu.