středa 12. srpna 2009

Pálit trasírkami

Někdo z pravidelných čtenářů tohoto blogu by mohl následující přirovnání považovat za můj násilný pokus nalézt paralelu v umění válečném. Nicméně to o čem budu povídat není nejen z mojí hlavy, ale i termíny jsou původní.

Volně převyprávěno z Tracer Bullets and Prototypes - Pragmatic Programmers Andy Hunt and Dave Thomas talk with Bill Venners about the importance of getting feedback during development by firing tracer bullets and building prototypes.

Představte si, že ležíte ve tmě někde v buši a máte zasáhnout cíl. Máte dvě možnosti. První, znáte přibližnou polohu cíle, povětrnostní podmínky, atd. a z těchto údajů spočítáte balistickou dráhu kulky, nastavíte mířidla, zatajíte dech a vystřelíte. Pokud jste počítali dobře, vaše údaje se shodovaly s reálnými a cíl se nepohnul tak možná trefíte.

Druhou možností je použít značkovací munici též zvanou trasírky. Trasírka je speciální kulka, která za sebou po vystřelení nechává svítící stopu. V zásobníku bývá napáskováná každá n-tá střela tohoto typu. Při použití značkovací munice prostě vystřelíte a podle dráhy střely, kterou vidíte, zkorigujete náměr, tak aby pokud možno další střela našla cíl a nebo se mu alespoň přiblížila.

Nyní je pravá chvíle na uvedení paralely se softwárovým vývojem. Představte si, že stojíte před vývojem nového softwaru a nebo na prahu nového releasu. Někde na jeho konci je doručení finální podoby. Stejně jako při té střelbě v buši je mnohdy obtížné vědět přesnou polohu a čas od času se cíl pohne (kdo by to byl čekal). Některé požadavky dopadnou více či méně včas, některé jsou nejasné, a některé si vyložíme jinak. V takovém případě postup, kdy uděláme jeden velký odhad (předpoklad) na začátku a potom doručíme na konci (vystřelíme) kompletní řešení, často selhává.

Oproti tomu trasírky se dají do řeči softwárového vývoje převést asi následovně. Na začátku uděláme nějaký předpoklad, provedeme podle něj vývoj a po čase to vezmeme a ukážeme zákazníkovi. On nám řekne jak blízko nebo daleko jsme od jeho představ. Uděláme korekci a v další iteraci a opět ukážeme zákazníkovi. Tak společnými silami, postupným korigováním dráhy střely, dojdeme k řešení po kterém zákazník touží.

Mě se pálení trasírkami zdá jako vhodný způsob, ačkoliv v něm vidím jedno nebezpečí. Občas se stane, především pokud nešijeme na míru jenom jednomu zákazníkovi, že to co si vymyslí jeden zákazník, se jeví jako nepoužitelné pro jiného zákazníka, protože jeho představa je diametrálně odlišná. Tím chci říci, že není úplně nejlepší, aby korekci vaší hlavně dělal zákazník bez vaší asistence, protože by to také mohlo skončit tím, že se střelíte do nohy.