Poznáte ho. Určite ho poznáte. Sedíte si v kresle a on sa zakráda poza váš chrbát. Dokonca niekedy sa drzo objaví aj pred vami. O kom hovorím? O neporiadku.
Neporiadok prechádza niekoľkými vývojovými fázami. Najskôr je malý, nepozorovaný. Schováva sa za kancelárskou sponkou. Ani si nevšimnete a už si k sebe zobral váš hrnček so včerajším čajom. Už sa dostáva do fázy, kedy je pozorovateľný, ale stále nie je agresívny. Neporiadok je samoorganizujúca sa, semidemokratická entita. Následne prejde do fázy: kopovitý neporiadok. Začne kumulovať potenciál. Typicky sa to prejaví v raste výšky kopy, kde sa neporiadok nachádza. Keď už má dostatok potenciálu, expanduje. Z kopy sa oddelia malé kôpky, ktoré majú vyššiu mobilitu než matererská kopa. Obsadia vám napríklad stoličku.
Už ste skúšali odstrániť neporiadok zo stoličky? Určite áno. Vrátili ste neporiadok späť na pôvodnú kopu. To je však len prilievanie oleja do ohňa. Neporiadková kopa získa späť svoju matériu a je tak schopná rýchlejšie expandovať. Narozdiel od vás, neporiadok totiž nespí. Druhý deň už je obsadená nie len pôvodná stolička, ale aj ďalšie. Kopy navzájom fungujú synergickým efektom. Typická útočná metóda používaná kopovitými neporiadkami je zosuv. Neporiadok sa zosunie zo stola, na stoličku a parapet. Z parapetu zhodí kvetináč. Rozbitým kvetináčom sa dostane na zem a vďaka vyliatej vode z kvetináča, presiakne o meter ďalej. Pokiaľ sa neporiadku nepostavíte, ovládne vás, vašu kanceláriu, váš biznis, váš život a akvárium.
Ako vyzerá neporiadok v IT?
Kedysi sa ľudská blbosť šírila rýchlosťou zvuku. Vďaka počítačom sa šíri rýchlosťou svetla.
- anonymný autor ľudovej IT múdrosti
Vďaka IT získal neporiadok nové formy, nové prostriedky a nové zákerné metódy.
Povedzme, že ste mladá, dynamická, progresívna, agilná, agresívne, progresívna firmička. Na počte nálepiek, ktoré si dáte, ale nezáleží. Vyvíjate program, softvér, komponentu alebo ako si už svoj komplexný systém nazvete. Viete, že už od prvého riadku kódu sa v ňom nachádza neporiadok? Neviete. Há. A to je presne moment kancelárskej sponky. Dva zbytočné riadky, kde jeden pričíta jedna a druhý odčíta jedna. O deň neskôr dostane váš vývojár za úlohu naprogramovať takú a takú fciu. Zistí, že podobná tam je. Tu nastupuje na scénu silný pomocník IT neporiadku, spoločnosť Copy & Paste limited. Z dvoch riadkouv sa stanú štryri? Ale kdeže. Osem. Pretože vývojár nemá čas sa zamyslieť. Už po ňom sales chce ďalšiu funkciu. Než sa stihnete spamätať, už je tam tých riakdov sedemnásť.
Potom k sebe tento kód pribalí knižnicu, ktorá je potrebná na nejaké fcie. Vzhľadom na to, že implementujete komplexný, multimodulárny systém, pribudne do systému ďalší modul. Ako vznikne? No duplikáciou už existujúceho a zmenou kódu v ňom. Vývojár v novom module nahradí funkcie, tak aby vyhovovali novým požiadavkam. A množstvo neporiadku sa opäť zdvojnásobilo. Naviac nový modul so sebou ťahá knižnicu, ktorú nepotrebuje. Tá presiakne do build systému. Vzhľadom na to, že je experimentálna, začne kolidovať so systémovými.
Tu ešte namá neporiadok takú silu. Skutočnú energiu mu dáte, až systém spustíte. Zbytočné riadky a knižnice začnú po disku a v databáze vytvárať zbytočné záznamy. Neporiadok začína kysnúť a transformovať sa. Do databázového stroja sa lejú miliardy bitov, ktoré vývojár zabudol zmazať na konci tranzakcie. Neporiadok prechádza na vyšší level. Už ovláda váš server.
Tie hlúpejšie neporiadky si vystačia s tým, že šudlajú s hlavou disku z ľava doprava tak dlho, až vám odpália aj najkvalitnejší disk, ktorému práve skončila záruka. A neporiadok sa presťahuje zo serveru na poličku. Tie inteligentnejšie formy neporiadku vedia, že je nerozumné si pod sebou odpíliť server a preto sa po sieti šíria ďalej. Pomocou klientskej aplikácie sa zo servera dostanú na desktopy. Muhaha. Už ovládli vašu sieť. Ľudia sa zdesia. Začnú vymýšľať obranné mechanizmy, firemné postupy, workaroundy, ako sa vyhnúť zlému fungovaniu, ale stále udržať systém v chode. To je presne to, čo neporiadok potreboval.
Na chviľku si odpočinie a poobede sa nasáčkuje do počítača, ktorý dostal nový zamestnanec. Všetko je stratené. Nikto ho nezastaví. Vďaka svojej rafinovanej podobe užiera ľuďom nervy, firme peniaze. Čo je však ešte zákernejšie. Ľudia s ním spolupracujú. Uveria, že ich Neporiadok je, správna cesta a indoktrinujú ho do malej zdravej nehyperagilnej firmičky, ktorú práve získali akvizíciou.
All your base are belong to us! You’re on the way to destruction. Hahaha!
Všetka základne patria nám! Ste na ceste k zničeniu. Hahaha!
- legendárne AYBABTU
Stop. Ako zastaviť neporiadok, ktorý má väčšiu silu ako lokomotíva. No, holými rukami ho nezastavíte. Zastavovať dôsledky proliferácie neporiadku nie je účelné. Často vedie k workaroundu a neporiadok vám dal ďalší šach-mat.
Jednou z možných účinných techník je prevŕtať sa k jadru problému, z ktorého neporiadok čerpá svoje sily. To chce čas, kľud a nohy v suchu. Budete sa musieť prevŕtať kódom až do oblastí, kam sa už žiadny programátor neodváži vstúpiť. Objavíte odkazy starej programátorskej civilizácie, ktorá zanikla pred dávnymi rokmi. Prebojujete sa cez prales nebezpečných nedokumentovaných funkcií. Až sa dostanete k dvom riadkom. Ktoré tam niekto na začiatku zabudol. S opatrnosťou pyrotechnika ich odstránite. Vrátite sa späť do kresla. Chyba odstránená. Workaround sa stáva zbytočným. Systém je stabilnejší. Uff.
Neporiadok spraví ale ďalšiu ofenzívnu reakciu. A vám nezostáva nič iné, len sa vrhnúť do súboja s ním. V jednej ruke plne nabitý opakovací Debugger, v druhej ruke špeciálne upravený antikódujúci hlbinný vrták značky Valgrind & Helgrind. Ponoríte sa do džungle kódu a mažete nezmysly, čo to dá.
Táto metóda je napríklad súčasť Lean developmentu. Kde je dôležité pre ďalší úspešný rozvoj, včas odstrániť neporiadok.
Aké metódy na boj s neporiadkom používate vy?



6 Responses to “Vzor: Neporiadok”
[...] roste, narůstají mu zuby a začíná kousat. Dokonce velmi pěkný příklad přidal. No jen se podívejte. [...]
Neporiadok nemusi byt vzdy len evil… len s nim treba vediet robit.
http://scienceworld.cz/psychologie/perlicka-chvala-neporadku-224
Ved aj tie najefektivnejsie datove struktury nestavaju na poriadku, ale entropiu udrzuju na uzde velmi citlivo.
[...] Debordelizácia nie je jednorázový krok, musí prebiehať neustále. Neporiadok nespí! [...]
[...] Nástroje pre kontinuálnu integráciu (continuous integration) slúžia na to, aby sme mali prehľad o kvalite kódu a aby sme včas dokázali zachytiť chyby. Pomocou nástroja Hudson CI dokážeme zachytiť trendy vo vývoji. Získame prehľad o množstve chýb a o rôznych patologických príznakoch v kóde. Typickým zástupcom patologického stavu v softvérovom projekte je kopírovanie kódu. [...]
[...] Je to predsa tak jednoduché. Požiadavky uvedené na začiatku článku vôbec nie sú zadaním, je to čistý chaos. [...]
[...] 10. Neporiadok na stoloch a pracovisku. Tento nesoftvérový indikátor môže až prekvapivo dobre kopírovať [...]