Jakou jistotu máte vy?

Bez ohledu na to, kolik bílých labutí jsme pozorovali, není oprávněný názor, že všechny labutě jsou bílé.

Také jste si všimli, jak v programování řešíme stejné problémy jako řeší vědátoři? Jasně, nejde si toho nevšimnout. Ale i tak to tu napíšu.

Věda se dá dělat několika způsoby. První je intuitivní. Prostě něco pozoruji, z pozorování vyvodím nějaké závěry a těm věřím. Moc se nezatěžuji experimenty, spíš se snažím používat hlavu a z konkrétních pozorování dělat obecné závěry. Všechny labutě, které jsem kdy viděl byly bílé, takže je jasné, že jsou všechny labutě bílé.

Tuto metodu můžu výrazně vylepšit tím, že se spojím s ostatními, předvedu jim svoje výsledky a nechám je tam hledat chyby. To je obrovský krok vpřed. Ostatní můžou najít moje chyby v logice a napravit je. Dokonce mohli vidět i něco, co jsem já předtím neviděl. Třeba dokonce někdo viděl modrou labuť?

Třetí krok je, že se snažím dělat systematické pokusy, které mi o skutečnosti řeknou mnohem víc než nahodilá pozorování. Záměrně ten jev pozoruji v různých podmínkách a snažím se ho pochopit hlouběji. Fyzika s tímto přístupem začala před pár set lety, ostatní vědy se postupně přidávaly a těch pár zbývajících se na to už pomalu chystá.

Ale je tu ještě čtvrtý krok, který zatím udělalo jen pár oborů. Nesnaží se jenom dělat pokusy, které jejich hypotézy potvrdí. Dělají pokusy, které je mají vyvrátit. Záměrně se snaží najít si na své víře chyby, snaží se vymyslet pokus, který jejich teorii rozbije. Snaží se najít labuť jiné barvy. Čím víc takových pokusů udělají, tím je ta hypotéza pravděpodobnější (i když jistoty nikdy nedosáhnou).

Čím dál daný obor je v tomto žebříčku, tím jsou jeho předpovědi užitečnější. Věříte víc předpovědím fyziků nebo ekonomů? Tím nechci říci, že by obory, které se nedostaly tak daleko jako fyzika, byly nějak retardované. Z velké části je to tím, že je mnohem snazší tisíckrát pustit dělovou kouli z věže, než nasimulovat chování celého státu nebo dokonce planety. Ale ať už je příčina jakákoliv, obory které se s pokusy dostaly dál, mají mnohem přesnější předpovědi.

Stejné je to i s programováním. Máme intuitivní přístup. Napíši kus kódu, spustím ho a párkrát do něj kliknu. Moc nepátrám jestli funguje. Jde to zkompilovat, vypadá to, že to funguje, tak to asi funguje. Navíc jsem to napsal já, takže to určitě bude dobře.

Toto se dá vylepšit za pomoci review. Kód ukážu někomu jinému, a on mi tam určitě najde nějaké chyby. Nicméně je to podobné jako když si ekonomové navzájem píší recenze. Dokud se neudělá pokus, tak je to jen výplod fantazie. Ano, i když vám review dělá nejlepší expert ve firmě, o výsledné funkčnosti to má stejnou vypovídající hodnotu, jako když vám recenzi napíše nejlepší ekonom na světě.

Jediné co má vypovídající hodnotu jsou testy. Myslíte si, že vaše aplikace funguje tak jak má? Dokud to systematicky nevyzkoušíte, tak je to jen výplod vaší fantazie a zbožné přání. Důležité je to slovo systematicky. Musíte se zamyslet nad tím jaké podmínky ten test můžou ovlivňovat, a všechny je vyzkoušet, pěkně jednu po druhé. Nicméně tu stále hrozí to, že se budete snažit tu svoji hypotézu jen potvrdit. Budete pořád chodit k tomu samému rybníku a pořád tam uvidíte jenom bílé labutě. Budete pořád procházet jenom základní scénáře, zkoušet to co zkoušíte vždycky. I to je veliký pokrok oproti předchozím variantám, ale je tu velké riziko zaslepenosti.

Pokud se totiž vědomě nepokoušíte hypotézu vyvrátit, tak hrozí, že budete nepříjemná fakta ignorovat. Možná ne záměrně, ale náš mozek je tak stavěný. Co se mu nehodí, to jednoduše nevnímá. Je proto potřeba změnit způsob myšlení a snažit se aktivně naše hypotézy vyvracet. Věříte, že máte aplikaci dobře zabezpečenou? Dokud se do ní pravidelně a systematicky nepokoušíte prolomit, tak je to zase spíš jen zbožné přání než realita. Věříte, že váš systém utáhne tu zátěž jakou potřebujete? A zkusili jste si to vyvrátit?

Oproti vědcům máme tu výhodu, že je software obvykle snadno testovatelný. Dá se jednoduše nasimulovat skoro cokoliv potřebujete. Takže nemáte stejnou výmluvu jakou mají všichni ti klimatologové, psychologové nebo ekonomové. Vy pokusy dělat můžete.

Takže je jen na vás, jestli chcete mít stejnou spolehlivost jako ekonomové nebo jestli by se vám spíš líbilo mít stejně spolehlivé předpovědi jako fyzici. Záleží jen na volbě metody, kterou si vyberete.


Jako malé bonusové cvičení tu mám různé hypotézy, které pravděpodobně máte kolem vaší aplikace. Zkuste jim přiřadit body, podle toho jak moc systematicky ověřujete jejich správnost. Jeden bod je za intuitivní přístup, dva za to samé plus review, tři za systematické testy a čtyři za systematické negativní testy.

  1. K našim datům se nikdo nepovolaný nedostane.
  2. Naše aplikace má správnou architekturu.
  3. UI je přehledné a pro zákazníka snadno pochopitelné.
  4. Nemáme tam žádnou chybu.
  5. Naše aplikace utáhne zátěž jakou potřebujeme.
  6. Produkční konfigurace je správně.
  7. Když dám všechny komponenty dohromady, tak to bude fungovat.
  8. Když udělám změnu, tak bude všechno výše uvedené i nadále platit.
  9. Blikající nadpisy jsou nejlepší na světě.
  10. Stihneme to naimplementovat včas.
  11. Ten nový proces zvýší naší produktivitu.

Tak co, kolik máte čtyřek? Já moc ne. A kolik jedniček? Víc než je zdrávo co? Tak co s tím uděláme?

Zdroje: Problémy popperovské falsifikace

Nezapomeňte na organizátora

Když jsem tu onehdá psal, co všechno potřebujete, když chcete vylézt na osmitisícovku, tak jsem na něco zapomněl. Ano, potřebujete cíl, plán, zdroje, odhodlání a štěstí, ale je tu ještě něco, bez čeho se neobejdete – schopný organizátor. Někdo, kdo dohlédne na to, že cíl pořád platí, že se plán plní, a že jsou zdroje k dispozici. Někdo, kdo zařídí řešení nečekaných událostí, někdo, kdo dohlédne na to, že se spolu baví ti, co se spolu bavit mají a někdo, kdo dohlédne na všechny ty drobné detaily, které se ztrácí v poli problému někoho jiného.

V ideálním světě bychom organizátora nepotřebovali, lidi by dělali co mají, správně by si věci prioritizovali a dodržovali by termíny. Jenže v ideálním světě nežijeme. Takže potřebujeme někoho, kdo se bude ptát, jestli už máme koupené letenky, zamluvené šerpy a jestli máme dost peněz.

Píšu to tady samosebou proto, že se na organizátora často zapomíná i když děláme software. A přitom je to jednoduché. Pokud děláte něco netriviálního, potřebuje právě jednoho člověka, který bude mít na starost organizaci. Někoho, kdo dohlédne na to, že lidé dělají co mají, že je plán pořád ještě splnitelný, že se plní všechny milníky a že se mu lidi nepřesunuli na úplně jiný projekt. Je jedno, jestli takovému organizátorovi budete říkat project manager, scrum master nebo vrchní dozorce. Někoho takového jednoduše musíte mít. Pokud ho nemáte, tak počítejte s tím, že to co děláte, neskončí moc dobře. Co neskončí, ono to pravděpodobně vůbec nezačne.

V poslední době jsem viděl několik pokusů, jak se bez organizátora obejít. Všechny mají něco společného – nefungují. Uvedu tu pár z nich.

Napište to do mailu, wiky nebo issue tracking systému

Myšlenka je to jednoduchá. Někam napíšu co je potřeba udělat, pošlu to lidem kteří to můžou udělat, a oni to udělají. V čem je problém? Toto bohužel funguje jen u jednoduchých věcí a to ještě jenom za předpokladu, že ti lidé nemají nic jiného na práci. V reálném světě mají lidé úplně jiné priority a pokud si někdo nevydupe jejich čas, tak budou jednoduše dělat něco jiného. A i když ten čas mít budou, pořád potřebujete někoho, kdo to bude koordinovat, kdo bude v hlavě držet všechny závislosti a dohlédne na to, že se před B udělá A.

Způsobte jim bolest

Když ti zmetci nechtějí dělat, co po nich chci, tak jim způsobím bolest a tím je k tomu donutím. Řekněme, že po někom chci, aby vylepšil infrastrukturu. Tak mu tu stávající rozbiju, a tím ho donutím to napravit. Geniální. Až na to, že to nefunguje. Kdyby to ti lidé mohli napravit, tak už to dávno udělali. To že to ještě není, má pravděpodobně nějaké příčiny. A když jim s odstraněním těch příčin nepomůžete, tak to prostě nebude. Jediné čeho se dočkáte bude, že tu bolest vámi způsobenou přenesou na někoho jiného. V lepším případě na vás, v horším na zákazníka.

Takže abych to shrnul. Pokud se pokoušíte o něco netriviálního, musíte mít někoho, kdo to bude organizovat. Pokud ho nemáte, tak ho rychle začněte hledat nebo na ten projekt rovnou zapomeňte.

Korporátní hry – Salámová metoda

Definice

Salámová metoda je označení pro praxi či taktiku, kdy se kontroverzní či obtížné cíle, řešení a požadavky, které by se celkově prosazovaly jen těžko, nebo by byly zcela neprůchodné, rozdělí na malé dílčí krůčky a prosazují se postupně. Pojem se používá pro popis postupů v širokém spektru oblastí počínaje vojenstvím a pokračuje přes zákonodárné snahy až po prosazování tras dálnic. [1]

Alternativní názvy

Salámová taktika, vaření žáby

Motivace a použití

Salámové metoda je velmi účinná útočná taktika, často používaná k prosazení cílů v situacích, kdy je potřeba prosadit něco na první pohled neprosaditelného. Za pomoci posloupnosti malých a zdánlivě neškodných kroků je možné vmanévrovat protivníka v podstatě do jakékoliv pozice. Celá metoda je založena na faktu, že soupeř považuje jednotlivé kroky za málo nebezpečné či dokonce neškodné a celý záměr si uvědomí, až když je pozdě.

Možné protiútoky a obrana proti nim

Rozlišujeme dvě fáze, v kterých se oběť může pokusit o obranu

Obrana v počátku
Pokud soupeř odhalí, že se pokoušíte o salámovou taktiku, může se začít bránit již v počátečních fázích hry. V takovém případě je dobré zahrát hru „Čisté úmysly“ nebo „Jak vás něco takového mohlo napadnout?“. I když soupeř vaši taktiku odhalí, je pro ně nesmírně obtížné se bránit. Vždyť se vlastně nic nestalo. Vždyť po něm chcete jen drobnost. Proč se rozčiluje kvůli takové maličkosti?

Obrana v pozdější fázi
Mnohem častější je varianta, kdy si protivník uvědomí co se děje, až když už je téměř vmanévrován tam, kam je potřeba. V takovém případě je jeho možnost obrany rovněž omezená. Se všemi předchozími kroky přeci souhlasil a nyní chce najednou couvnout? To se nemohl ozvat rovnou? To jde zcela jistě proti našim korporátním zásadám. Je rovněž možné zahrát hru „Teď už je to jedno“.

Realizační rady

Ačkoliv je tato technika vysoce účinná, je potřeba vhodně volit velikost kroku. Pokud je jeden z kroků, obzvláště v počátku, příliš velký, hrozí odhalení vašeho záměru. Oponent rovněž dostane příležitost a záminku k obraně. Při velkém počátečním kroku je velmi obtížné zahrát „Čisté úmysly“ nebo „Jak vás něco takového mohlo napadnout?“. Pokud k příliš velkému kroku dojde ke konci, je jeho nebezpečí menší, protože v pozdějších fázích hry máme silnější pozici. Navíc, když si soupeř uvědomí, kam až jsme ho dostali, je jeho motivace k boji výrazně oslabena. Z těchto důvodů doporučujeme začít malými kroky a s postupem času je prodlužovat.

Zdroje

[1] Salámová metoda – Wikipedia
[2] Jistě, pane premiére – Jaderné odstrašování