čtvrtek 5. dubna 2012

Programová chyba jako test charakteru

Někdy je zajímavé sledovat, jak programátoři reagují na nahlášení chyby, za kterou jsou zodpovědní. Málo co odhalí lidský charakter tak, jako chování v relativně krizové situaci. Pokusil jsem se s mírnou nadsázkou popsat typologií programátorů právě podle jejich reakcí na chybu. Možná se poznáte nebo třeba někoho z vašich kolegů. :)

Já přeci chyby nedělám

Zastánce této techniky, pan Božský, se snaží za každou cenu zbavit zodpovědnosti za chybu. Případné přiznání chyby by mu narušilo vlastní pocit idealismu, který chová vůči své osobě.

"Chyba sice nastala v mojí třídě, ale vůbec jsem netušil, že ji budeš používat takto!
To je cílené chování aplikace dle specifikace."

Přestože se aplikace chová objektivně špatně a specifikace vůbec neexistuje. Dost času ztrácíte tím, že musíte dotyčného přesvědčit o jeho zodpovědnosti za chybu.

Hulk

Nahlásit chybu takovému programátorovi se obvykle trochu bojíte. Víte, že jeho počáteční reakce je dost agresivní. Zbledne, pak zezelená, natlakuje se, začne prskat a hledat nějaký cíl, na který by se mohla svalit část viny za vznik chyby.

"Sakra, zase to někdo pořádně neotestoval!
Přeci jsem upozorňoval, že úprava může způsobit problémy!
No a co, že jsem to dal k otestování těsně před uzavřením iterace!"

Na hrubý pytel, hrubá záplata :)

Hlavně nenápadně a zatloukat

Programátor se doslechne o chybě, rychle ji opraví a tváří se jako by o žádné chybě ani nevěděl.

"Mně se chybu nedaří navodit. Prosím prověř (testere) chování v aktuální verzi.
Vidíš, že se to chová správně!"

Přiznání, že tam chyba opravdu byla, se od něho dobrovolně nedočkáte. Po urgencích se možná přizná, ale pachuť neupřímnosti zůstává.

Sebemrskačství

"Hrozně mě ta chyba mrzí! To snad není možné! Jak se to mohlo stát?! Takový jsem si dával pozor!"

Každá chyba je pro něho stresovou záležitostí. Každé šlápnutí vedle ještě více sráží jeho již tak nízké sebevědomí. Pošlete jej na kurs asertivního chování!

Alibismus ukrytý v pseudosložitosti

Zaplavit kolegy hromadou nadbytečných informací, které navodí dojem toho, že prostě chyba v tak komplikované situaci musela zákonitě vzniknout.

"Databáze je taková a maková, nastavení bylo netypické, plán optimalizace nepředpokládatelný. S tím jsem sice mohl počítat, ale těch možných stavů je tolik, bla bla bla ..."

Prostě to oprav a neztrácej svůj ani můj čas zbytečným vysvětlováním!

Jsem z planety pokročilých uživatelů

"Proč se tohle UI uživatelům nelíbí, vždyť je tam tolik funkcí a všechny jsou pěkně vidět naráz?!
Spousta informací pěkně rozmístěná po velkém formuláři.
Barvy jsou dostatečně výrazné, aby upozornily na důležité části UI.
Proč by to nemohlo zobrazit vždy dialogovou zprávu o úspěšném ukončení zpracování."

Takový člověk podle sebe a svých subjektivních vjemů chybně předpokládá chování ostatních uživatelů. Pokud nezná nebo nechápe základní pravidla uživatelské použitelnosti (UX), zkuste mu je vysvětlit. Ale ať už nediskutuje a upraví to!

A jaká by měla být správná reakce?

Jedná se o velmi zjednodušený postup, ale můžete zkusit třeba:

  1. Zajistěte si kompletní informace o chybě. Potřebujete znát kontext spuštěné aplikace (zákazník, operační systém, typ prohlížeče, apod.), postup navození chyby, popis co je vlastně chybou a jak by se měla aplikace správně chovat. Vše by mělo být součástí hlášení o chybě ve vašem systému na sledování chyb.
  2. Někdo by měl chybu klasifikovat. Určit její závažnost a přiřadit jí prioritu, která ovlivní rychlost její opravy. Měl by také domyslet nápravná opatření, např. opravu dat v databázi, apod.
  3. Chyba je směrovaná na vás. Objektivně rozhodněte, zda-li je problém opravdu na vaší straně nebo ji směrujte na příslušného správce části aplikace, se kterou chyba souvisí. Zkuste omezit počet přehazování chyby mezi řešiteli. Ztrácíte čas váš i ostatních.
  4. V rámci řešení můžete získat další informace o důsledcích chyby (výši škody). Zveřejněte tyto informace pro ostatní zainteresované kolegy. Buďte transaparentní, upřímní a nic nezatloukejte. Zvýšíte tím efektivitu řešení problému.
  5. Odstraňte systémově příčiny problému tak, aby se chyba neopakovala. Přijměte nápravná opatření na související chyby. Napište programový test, který se bude provádět automaticky a upozorní na případné vrácení podobné chyby.
  6. Informujte o vyřešení chyby. Sdělte právě tolik informací, kolik postižená strana potřebuje vědět.

Žádné komentáře:

Okomentovat