Obsah článku / Contents
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 dlhu

Scé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:

typescript
// 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áce

Efekt 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

typescript
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ť!

typescript
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íbeh

Pamä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. 😅

Všetky články