Partyzánskou stezkou

 Termín "partyzánština" znáte určitě taky. Je to přístup, kdy u věcí, které považujete za správné nebo prospěšné do budoucna, nečekáte na nějaké schválení "shora" nebo na to až získáte konsenzus okolí, ale prostě sednete a zkusíte je zrealizovat. Nevím jaké zkušenosti s tím máte vy, ale mě se takto podařilo docílit poměrně podstatných změn ve způsobu práce mojí i mého okolí. Myslím si, že partizánština z vás může udělat spokojenější vývojáře v úspěšnějších firmách.

Samozřejmě vše má svá pro i proti. Proč si ale myslím, že tento způsob prosazování změn je jeden z těch lepších? Tento způsob realizování věcí má totiž oproti ostatním přístupům několik velmi pozitivních faktorů, které mají zásadní dopad na výsledek:

  • věci děláte na svou odpovědnost - jinými slovy, jdete se svou kůži na trh a to je hodně velký motor
  • nemáte času nazbyt - abyste snížili své riziko, děláte to ve svém volném čase (přesčas), nebo v rámci projektu s vidinou, že vynaložená práce se vám v něm ještě stihne vrátit a termíny i rozpočet nepřekročíte - to ale taky znamená, že děláte jen nezbytné minimum toho, aby už to bylo použitelné (taky vidíte analogii se startupy?)
  • prvním uživatelem jste vy sami - sklízíte ovoce své vlastní práce a pokud zjistíte, že ta myšlenka není životaschopná, zaříznete ji velmi rychle sami aniž byste tím ovlivnili ještě někoho dalšího - na druhou stranu pokud potenciál má, vyladíte si ji minimálně tak, aby vám přinášela užitek a dobře se s ní pracovalo (princip eating your own dogfoot)
  • jste vnitřně motivovaní - buď vidíte příležitost nebo vás něco tak štve, že s tím chcete hnout
  • okolí váš výtvor / postup adoptuje pouze tehdy, je-li dostatečně dobrý i pro ně - vy jim nic nemůžete nařídit a užitečnost je to nejlepší měřítko kvality (neboli, pokud váš kolega používá vaši knihovnu, nástroj či postup sám o sobě, odvedli jste dobrou práci - evidentně i on považuje danou věc za přínosnou)
  • cestou se hodně naučíte - ostatní už budou pouze sklízet ovoce (pokud nějaké bude), ale pouze vy naberete spoustu zkušeností designem API, zkoumáním konkrétní technologie a vlastním procesem tvorby či následné evangelizace a prosazování nápadu u ostatních

Čím víc o tom píšu, tím víc analogií se startupy vidím - jediný rozdíl je v tom, že partyzánštinu provádíte jako standardní zaměstnanec firmy. Je možné začít i ve velmi malém - třeba vás štve buildovací systém (třeba mě děsivě žral kdysi špagetti Ant). Zkuste si vytvořit paralelní build s jiným nástrojem (já takhle kdysi prosadil ve Forrestu Maven) - zkraje to pro vás bude dvojitá práce, ale až to prošlápnete máte v argumenty proč jít tímhle směrem vyzkoušené na vlastní kůži a zároveň vyzkoušenou cestičku pro ostatní. Jedna z mých prvních partyzánštin byla třeba pidi-knihovnička na automatizovanou migraci DB patchů (v roce 2007 toho open-source ještě moc nebylo), kterou jsem zplácnul za pár hodin a dodnes ji ve Forrestu používáme (nemá tolik vlastností jako třeba Liquibase, ale zdá se, že zatím plně vyhovuje našim potřebám).

Partyzánština má i svá negativa - kromě rizika a úsilí, které na sebe berete ve chvíli, kdy danou věc vytváříte časem zjistíte ještě pár věcí. Velmi dlouhou dobu mají vaši kolegové tendenci se obracet na vás vždy, když narazí na sebemenší problém. Kupříkladu já musím ještě doteď hledat odpovědi na některé problémy spojené s Mavenem a to i přesto, že to je open-source nástroj s bohatými informacemi na webu. Pokud se jedná přímo o váš kód, tak kolegové často ani nedebugují (nebo jen povrchně) a rychle se s problémy obrací na vás. Vy, jakožto autor a propagátor myšlenky, nemůžete dost dobře říct ne, protože byste si tím podtrhávali vlastní stoličku. S tím vším samozřejmě souvisí problematická dokumentace, na kterou při tomto přístupu samozřejmě není mnoho času. Někdy se to dá, ve chvíli, kdy se postup prosadí, dohnat, ale dost věcí zůstane bez dokumentace už navždy (já to u pár věcí taky ještě nedohnal :/ ).

Další negativum je to, že se chtě nechtě na své výtvory trochu upnete a když pro vás fungují, jste velmi citliví na kritiku, že se u toho někdo trápí. Kolegové mají navíc větší tendenci kritizovat - open-source knihovny mají obecně daleko lepší status než knihovna vytvořená člověkem sedícím o židli vedle (to, že je open-source knihovna kolikrát daleko větší prasečina, je už věc vedlejší). Chyby a nedokonalosti ve vašem kódu jsou vnímány citlivěji než chyby v open-source kódu, i když vy je máte opravené obratem a u open-source kódu se na řešení často čeká i měsíce. Někdy mohou být problémem jen drobnosti, které se dají lehce napravit, ale pro někoho však už to může být důvod k odmítnutí. Protože se jedná o věc, kterou chcete prosadit ve firmě s omezeným počtem lidí, je ztráta každého stoupence pro vás víc než bolestivá.

Můžete se setkat i s relativně nefér argumentací, že kdyby se možná místo vašeho postupu / knihovny / nástroje použilo něco jiného, možná by to bylo celé jednodušší. S tím se dá jen těžko polemizovat, protože jednak často neznáte jejich kontext, ve kterém se snažili danou věc použít a jednak nikdo nemůže říct, na jaké problémy by narazili s alternativním přístupem. Může se stát, že váš nápad zkusí aplikovat na úplně jinou situaci, než z které jste vycházeli vy. Velmi pravděpodobně o věcech přemýšlejí jinak než vy a tudíž si váš přístup / knihovnu nějak přizpůsobí. Navíc použití každé nové věci stojí víc času, přemýšlení a zkoumání, než kdyby se použily staré zažité postupy (napodruhé už to může být úplně jinak). Zkuste pak objektivně rozhodnout, kde se chyba stala a jestli to je problém lokální nebo systémový.

Tak či tak - to všechno útočí na vaši motivaci a vy jste jen člověk. Časem začnete přemýšlet, jestli vám to za to stojí.

Možná to teď vypadá, že negativa převažují, ale není tomu tak. To nejdůležitější nakonec je, jestli se váš nápad v dlouhodobém měřítku přeci jen ujme. Pokud jej lidi okolo vás vezmou za svůj, stane se samozřejmostí a možná se i časem zapomene, čí práce to byla. Možná někoho někdy ještě napadne se podívat do zdrojáků a uvidí tam váš podpis. Možná na vaší práci někdo jiný postaví ještě něco lepšího a vy si budete moci říct - byl jsem u zrodu celé myšlenky. Právě o ty nové myšlenky a postupy v našem oboru konec konců jde - jinak se sami pasujeme jen na dělníky pásové výroby.

Když si po sobě článek znovu pročítám, cítím, že je velmi subjektivní - já jsem z podstaty partyzán a proto budu samozřejmě tento přístup obhajovat. Co si o tom ale myslíte vy? Máte nějaké podobné zkušenosti s partyzánštinou - ať už pozitivní nebo negativní?