Minové pole softwarového inženýrství

Joel Spolsky vydal sérii tří článků (+ úvod), v nichž popisuje, jak (ne)(de)motivovat programátory při práci. Obsah není nic až tak světoborného (osobně mám pocit, že Joel se možná už trochu vypsal), ale zaujala mě jedna věc: Joelova vojenská "interview question".

O co jde? Vojáci jsou cvičeni, aby se ve chvíli, kdy zjistí, že je okolo nich minové pole, okamžitě zastavili (a tím pádem nešlápli na minu). Také jsou cvičeni, aby při útoku (předpokládám, že Joel myslí na otevřeném poli) reagovali tak, že se rozeběhnou k nepříteli a zároveň na něj stříleli – nepřítel se tak musí krýt a bránící se vojáky nemůže zasáhnout. Ti se k němu nakonec dostanou tak blízko, až ho zlikvidují. Otázka zní: Co když uprostřed útoku zjistíte, že jste v minovém poli? Zarazíte se nebo budete dál pokračovat směrem k nepříteli? Těžké dilema.

Správná odpověď je, že budete postupovat vpřed. Pravděpodobně se nevyhnete ztrátám (někteří vojáci šlápnou na minu), ale za předpokladu, že máte dost sil na odražení útoku, většina vojáků přežije. Pokud by vojáci zůstali stát uprostřed minového pole, nepřítel je postupně po jednom vybije.

Toto dilema není jako interview question vůbec špatné – má totiž hezkou analogii ve světě software: Dosaďte si za miny slovo "chyby" a místo nepřítele použijte "konkurence". Co budete dělat, pokud na vysoce konkurenčním trhu zjistíte, že váš softwarový produkt má chyby? Půjdete je opravovat, nebo radši budete přidávat nové funkce, a dotahovat či předbíhat tak konkurenci? Řešení je mnohdy stejné jako ve vojenské variantě dilematu: Budete přidávat funkce, jak jen to půjde – bugy přeci postihnou jen někoho, dají se přežít a opravit někdy později.

Až se tedy budete někdy v duchu ptát, proč má třeba Firefox tolik léta neopravených chyb, vzpomeňte si na tento resp. Joelův článek. Kdyby byly všechny chyby ve Firefoxu opravené, dost možná by ho lidé pro funkční zaostalost nepoužívali – předběhl by ho Internet Explorer i Opera. S jinými programy je to obdobné. (Ano, myslím si, že že Firefox je v současnosti nejlepší prohlížeč a Internet Explorer i Opera jsou pozadu. Ne, neřešte to v komentářích :-)

(Pro pořádek: Vím, předchozí analogie trochu zjednodušuje. Když je chyb hodně, začnou ubírat na hodnotě produktu víc, než přidávají nové funkce. V tu chvíli (nebo spíš o něco málo dřív) už se začne vyplácet je opravovat. Podrobnou analýzu na toto téma napsal Eric Sink a odkazoval jsem na ni už před časem. A mimochodem, pro mě osobně klesá hodnota programu s jeho chybovitostí většinou docela rychle.)