Faktor času - můj blog

 

Digitální Heisenbergův princip, Paretův princip a long tail


4. 9. 2012

Poslední dobou jsem pracovně trochu vybočil. Po letech profesí, kde jsem zejména četl a psal nejrůznější dokumenty, jsem se vrátil k tomu, s čím jsem před 25 lety začínal. Tenkrát to byl assembler pro osmibitový procesor, dnes to je Visual Studio pro .NET pod Windows, ale principy zůstávají pozoruhodně stejné. Není tu prostor pro manažerská řešení, zbývá to prostě udělat a to pokud možno dobře.

Jeden můj bývalý kolega, programovali jsme spolu, říkal, že práce programátora je tak stresující proto, že ačkoliv ji programátor udělá dobře, tak nikdy neví, jestli se to někde nepokazí (on to říkal trochu jinak, ale to si domyslíte). Jak dobře mu teď rozumím.

Programuji docela složitou věc, v aplikaci běží asynchronně teď už desítky procesů a navzájem si předávají data. Většina z nich pracuje v "near-to-realtime" režimu (jedná se o zpracování zvuku), takže hledání chyby je opravdu obtížné. Jakmile se do toho jakkoliv zasáhne, chová se to úplně jinak – je to takový digitální Heisenbergův princip neurčitosti: buďto víme, co program dělá, nebo víme, jaký je obsah proměnných a stav procesů – ale nikdy ne obojí současně. Dvě nejdelší procedury mají každá 3100 programových řádek zdrojového kódu (nepsal jsem to sám, jedná se o strojově generovaný zdrojový kód jiným programem, který jsem pro to napsal) a hledání případné chyby "ručními" postupy je nemožné.

Stále více si uvědomuji černobílost kvality výstupního kódu – buďto je to napsané správně, nebo je to prostě špatně. A nemyslím teď nějaké kosmetické drobnosti jako polohu a tvar tlačítek, mám na mysli to, zda výstupní soubory budou obsahovat požadovaná data, mít formát kompatibilní s případnými přehrávači nebo prohlížeči. Největší obavy mám z toho, že někde nechám nějakou hloupou drobnost, která za nepříznivých okolností (plný disk, plná paměť počítače, zásah antiviru, pád systému a podobně) způsobí ztrátu dat, která jsou pro uživatele cenná. A jsou to přitom složité věci, generování a konverze .mp3 souborů, tvoření a změna .pdf souborů s přílohami, vytváření a ověřování elektronických podpisů, pořizování časových razítek nebo vypalování CD a DVD datových disků. Nic jednoduchého.

Často se mi stává, že jsem doslova ochromen představou plejády všech těch nepříznivých okolností, na které musím při psaní každé části kódu vždy a pořád myslet. Ale tady je to opravdu potřeba, protože k poškození nebo ztrátě dat dojít prostě nesmí. (Můžete namítnout, že uživatelé mají data zálohovat, ale to je směšný argument – jak byste se tvářili na to, kdybyste třeba v Excelu otevřeli soubor a přitom o něj přišli.)

Pamatuji si jednu aplikaci, která u zahraničního výrobce perfektně fungovala a Čechách občas selhala, protože aplikace se špatně vyrovnala s tím, když měl uživatel Windows v národním nastavení nastavenu podle místních zvyklostí desetinnou čárku na místo očekávané desetinné tečky. A podobně neuvěřitelným problémem mě fascinují Windows Vista Ultimate na mém domácím počítači – když chci skenovat pomocí příslušné komponenty Windows, naloguji se raději do anglického profilu. V tom českém mám totiž místo srozumitelného "Black and white" a "Grayscale" dvě česká slova, a to "Černobíle" a "Černobílý". A já nikdy nevím, co je co. (Windows 8 na tom jsou lépe: používají "Černobíle" a "Stupně šedi".)

Ten kolega měl pravdu. Je to stres pramenící z toho, že nestačí využít Paretův princip a ověřit si všechny předpokládané situace, je potřeba prozkoumat i „long tail“ a připravit se na to, aby na tyto málo četné situace aplikace reagovala se ctí a uživatele nezklamala. Jediné, co na to funguje, je pečlivá práce a soustavné dodržování pravidel „inherentní bezpečnosti“ – ale o tom až někdy příště.

Odkazy pro zvídavé: Princip neurčitosti, Paretův princip, Long tail, Inherentní bezpečnost.

Další články z rubriky Práce

MOJE SILNÉ STRÁNKY

  • Záleží mi na tom, aby moje práce měla pro zákazníka adekvátní přidanou hodnotu.
  • Jsem poměrně univerzální co do zastávané projektové role. Můžu mít celkový nadhled a současně řešit dílčí technické problémy.
  • Jsem připraven přijímat odpovědnost a zvládat těžké úkoly.

KONFLIKTNÍ OBLASTI

  • Potřebuji být u toho, když se přijímají rozhodnutí o mojí práci. Vadí mi být na druhé koleji a v závislém postavení.
  • Říkám, co si myslím, a očekávám fér jednání. Jinak spolupracuji jen s obtížemi nebo vůbec ne.
  • Jsem "studený čumák". Soustředím se na práci a na legraci mě moc neužije.

A KDYŽ ZROVNA NEPRACUJI...

  • Studuji. Chci obnovit svoji nabídku a zahrnout nové znalosti. Také potřebuji nové obzory, nová témata a inspiraci.
  • Rád chodím po horách. Jak vidím kopec, musím nahoru.
  • Moji oblíbení herci jsou Tony Shalhoub, Clint Eastwood a Bruce Willis.