The Neverending Story: Keď manažment hľadí len na čísla - Riešenie (Časť 2)
Kapitola 4: Divadlo v zasadačke
Scéna 1: Plánovací meeting
Manager: "Koľko trvá ten feature?"
Developer: "Čisto implementácia? 3 dni."
Manager: "Výborne! Shipneme za 3 dni!"
Developer: "Ale potrebujem aj..."
Manager: "3 DNI!"
Realita:
- Implementácia: 3 dni ✅
- Testy: 2 dni (manager: "Nepotrebné!")
- Code review: 1 deň (manager: "Prečo?!")
- Refaktoring: 2 dni (manager: "ČO?!")
- Dokumentácia: 1 deň (manager: "Nemáme čas!")
Potrebné: 9 dní
Schválené: 3 dni
Výsledok: +6 dní technického dlhuScéna 2: Retrospektíva
Manager: "Prečo velocity klesla z 50 na 20 bodov?"
Developer: "Lebo 60% času opravujeme staré bugy..."
Manager: "Prečo máte toľko bugov?!"
Developer: "Lebo sme nerobili testy..."
Manager: "Prečo ste nerobili testy?!"
Developer: "Lebo ste povedali že nemáme čas..."
Manager: "To nie je výhovorka!"
Developer: *ticho premýšľa nad životnými voľbami*Scéna 3: Produkčný incident o 3:00 ráno
*Telefón zvoní o 3:00 ráno*
Manager: "Produkcia nefunguje! OPRAV TO!"
Developer (polospánok): "Ktorý modul?"
Manager: "NEVIEM! TEN ČO NEFUNGUJE!"
Developer: "Dobre, debugujem..."
*O 2 hodiny neskôr*
Developer: "Našiel som to. Je to v tom module čo sme quick-fixli pred 6 mesiacmi..."
Manager: "Prečo ste to neurobili poriadne?!"
Developer: "Lebo ste povedali že nemáme čas na refaktoring..."
Manager: "To bolo pred 6 mesiacmi! Už ste to mali opraviť!"
Developer: "Kedy? Stále nám dávate nové features..."
Manager: "NEMÁM ČAS NA VÝHOVORKY!"
*Developer o 5:00 ráno aktualizuje LinkedIn*Kapitola 5: Pokus o rozhovor (tragikomédia)
Pokus č. 1: Jemný prístup
Developer: "Mám návrh na zlepšenie architektúry"
Manager: "Koľko features to prinesie?"
Developer: "Žiadne, ale zrýchli to budúci vývoj"
Manager: "Takže nula features?"
Developer: "Áno, ale..."
Manager: "Ďalší bod programu."Pokus č. 2: Biznis jazyk
Developer: "Refaktoring nám zníži time-to-market o 30%"
Manager: "Zaujímavé! Koľko to trvá?"
Developer: "2 týždne"
Manager: "2 TÝŽDNE?! To sú 4 features!"
Developer: "Ale dlhodobo ušetríme..."
Manager: "Dlhodobo? Potrebujem features TERAZ!"Pokus č. 3: Strašenie
Developer: "Ak to nezrefaktorujeme, systém spadne"
Manager: "Kedy?"
Developer: "Neviem presne... možno za rok?"
Manager: "Za rok? O rok si spravíme starosti!"
Developer: "Ale potom to bude 10× drahšie..."
Manager: "O rok to nebude môj problém, budem na inom projekte"
Developer: *zamrzne v šoku*Pokus č. 4: Partizánsky refaktoring
Developer: "Implementoval som feature X"
// Tajne zrefaktoroval 30% kódu
Manager: "Prečo to trvalo týždeň namiesto 3 dní?"
Developer: "Bolo to komplexnejšie než som čakal..."
Manager: "Nabudúce lepšie odhady!"
Developer: "Jasné..." *misia splnená*Kapitola 6: Cena vety "Nemáme čas"
Reálny príklad z e-commerce platformy:
// Rok 0: "Rýchle riešenie"
class ProductService {
getProduct(id) {
return database.query(`SELECT * FROM products WHERE id = ${id}`);
// SQL injection čaká na svoju chvíľu
}
}
// Rok 1: "Pridaj feature rýchlo!"
class ProductService {
getProduct(id) { /* copy-paste */ }
getProductWithReviews(id) { /* copy-paste */ }
getProductWithRelated(id) { /* copy-paste */ }
// ... 50 podobných metód
}
// Rok 3: Bezpečnostný audit
Auditor: "Máte 50 SQL injection zraniteľností"
Manager: "OPRAVTE ICH VŠETKY!"
Developer: "To je 50 metód na prepísanie..."
Manager: "Koľko to trvá?!"
Developer: "Mesiac"
Manager: "MESIAC?!"
// Keby sme to spravili správne v roku 0
// Oprava by trvala: 1 týždeň
// Reálne trvala: 1 mesiac
// Cena "nemáme čas": 3× viac práceEfekt snehovej gule
Rok 0: Preskočený 1 týždeň refaktoringu
Ušetrené: 1 týždeň
Strata: 0
Rok 1: Každý feature trvá o 20% dlhšie
Strata: 10 features × 0.2 týždňa = 2 týždne
Rok 2: Každý feature trvá o 50% dlhšie
Strata: 10 features × 0.5 týždňa = 5 týždňov
Rok 3: Systém kolabuje, núdzový refaktoring
Strata: 8 týždňov
Celkom: Ušetrený 1 týždeň, stratených 15 týždňov
Návratnosť: -1400%Kapitola 7: Ako prelomiť cyklus
Stratégia č. 1: 20% daň na každý šprint
const zdravySprint = {
kapacita: 100,
features: 70,
refaktoring: 20, // Povinných 20% na technický dlh
bugy: 10
};
// Vývoj velocity v čase S refaktoringom:
// Šprint 1: 70 bodov
// Šprint 2: 72 bodov (refaktoring pomáha)
// Šprint 3: 75 bodov
// Šprint 4: 80 bodov
// BEZ refaktoringu:
// Šprint 1: 80 bodov
// Šprint 2: 75 bodov (dlh spomaľuje)
// Šprint 3: 65 bodov
// Šprint 4: 50 bodov (kolaps)Stratégia č. 2: Skrytý refaktoring
Manager: "Feature X, 3 dni"
Developer: "Jasné!"
// Deň 1-2: Zrefaktorujem základy
// Deň 3 ráno: Implementujem feature (3 hodiny)
// Deň 3 popoludnie: Testy, dokumentácia
Manager: "Už hotové?!"
Developer: "Áno, bolo to jednoduchšie než som čakal"
// Ďalší feature
Manager: "Feature Y, 3 dni"
Developer: "Hotové za 1 deň"
Manager: "Si čoraz lepší!"
Developer: "Áno..." (pretože refaktoring sa vyplatil)Stratégia č. 3: Preklad do biznis jazyka
❌ Vývojársky jazyk:
"Potrebujeme zrefaktorovať legacy modul"
✅ Biznis jazyk:
"Investícia 2 týždne = 30% rýchlejší vývoj navždy"
❌ Vývojársky jazyk:
"Technický dlh nás spomaľuje"
✅ Biznis jazyk:
"Každý feature teraz stojí 2× viac než pred rokom"
❌ Vývojársky jazyk:
"Kód je spaghetti"
✅ Biznis jazyk:
"Pravdepodobnosť kritického výpadku: 60%"
"Odhadovaná strata na incident: 50 000 €"
"Ročné riziko: 180 000 €"
"Cena refaktoringu: 20 000 €"
"Návratnosť: 9× investícia"Kapitola 8: Príbehy s dobrým koncom
Môj vlastný projekt (reálny príbeh)
Počiatočný stav:
- 144 tabuliek (copy-paste peklo)
- 500 000 riadkov kódu
- 2 features za šprint
- 15 bugov mesačne
Po 2 týždňoch refaktoringu:
- 1 konfigurovateľná tabuľka
- 50 000 riadkov kódu (90% redukcia!)
- 8 features za šprint (4× rýchlejšie!)
- 2 bugy mesačne (7.5× menej!)
Reakcia manažéra: "Prečo sme to neurobili skôr?!"
Moja odpoveď: *ticho, lebo by som povedal niečo, čo by som ľutoval*Epilóg: Koniec nekonečného príbehu
Plot twist: Ten príbeh MÔŽE skončiť!
function ukonciNekonecnyPribeh() {
// Krok 1: Priznajte problém
console.log("Máme technický dlh. Je to realita.");
// Krok 2: Zmerajte ho
const dlh = zmerajTechnickyDlh();
console.log(`Dlh: ${dlh.hodiny} hodín práce`);
console.log(`Ročná cena: ${dlh.naklady} €`);
// Krok 3: Predajte riešenie
const roi = vypocitajNavratnost();
console.log(`Investícia: ${roi.cena} €`);
console.log(`Návratnosť: ${roi.zisk} €`);
// Krok 4: Alokujte čas
console.log("20% každého šprintu = refaktoring");
// Krok 5: Sledujte zlepšenie
sledujVelocitu();
sledujPocetBugov();
return "Koniec nekonečného príbehu";
}Záver: Kvantita ≠ Kvalita
Čo manažment miluje:
- Veľa features ✅
- Vysoká velocity ✅
- Splnené míľniky ✅
- Čísla vyzerajú dobre ✅
Realita:
- Features plné bugov 🐛
- Velocity klesá 📉
- Míľniky sa posúvajú ⏰
- Technický dlh exploduje 💣
Lepší prístup:
Menej features + Vysoká kvalita = Udržateľná velocity
Viac features + Nízka kvalita = Nekonečný príbehPamätajte:
"Kto sa ponáhľa, pomaly chodí."
"Daj mi 6 hodín zoťať strom a prvé 4 strávim ostrením sekery." – Abraham Lincoln
68% IT projektov je "marginálnych" pretože manažment hľadel len na kvantitu.
Keby sme investovali 20% času do kvality, boli by sme v tých 29% úspešných.
Máte na výber:
🔴 Nekonečný príbeh (opravovať navždy)
🟢 Príbeh s koncom (investovať do základov)
Ktorý príbeh chcete žiť?
Článok napísal Solution Architect, ktorý prežil The Neverending Story na viacerých projektoch. Zrefaktoroval 144 tabuliek na 1 konfigurovateľný komponent. Naučil sa presviedčať manažment, že kvalita > kvantita.
P.S.: Ak váš projekt vyzerá ako nekonečný príbeh, nie je neskoro. Začnite 20% pravidlom. Vaše budúce ja vám poďakuje.
P.P.S.: Manažéri – prosím prečítajte si tento článok. Developeri – pošlite to svojim manažérom. Anonymne. 😅