Minule jsem nenechal na Not Invented Here syndromu nit suchou. Člověk holt musí být kontroverzní, aby zaujal. To se mi snad povedlo, ale musel jsem obětovat objektivitu. Teď se to pokusím napravit.
Pokud je to jádro vašeho podnikání, dělejte to sami bez ohledu na cokoliv
Ano, Joel to jako obvykle věděl už deset let zpátky. Pokud máte něco, čím se odlišujete od konkurence, je NIH nezbytností. Takže, pokud se od konkurence odlišujete vychytaným UI, nemůžete na to použít stejné komponenty jako má konkurence. Pokud se chlubíte bleskovou rychlostí, občas vám nezbyde nic jiného, než si připravit vlastní Linuxovou distribuci. Pokud prodáváte databáze, musíte si kupodivu napsat vlastní databázi. Pokud jste Apple, tak si myslíte, že jste byli seslání shůry a pověřeni výrobou naprosto dokonalých věcí a musíte si dělat sami úplně všechno. A v tom je ten problém. Zatímco Apple si může dovolit navrhovat vlastní procesory, vy si to dovolit nemůžete.
NIH je neuvěřitelně drahý
Cokoliv si totiž vyvíjíte sami, je neuvěřitelně drahé. Opravdu neuvěřitelně. Fakt hodně. Představte si obrovitánské číslo. NIH je ještě mnohem dražší.
To nám je jako programátorům obvykle jedno, ale našim zákazník a zaměstnavatelům by to jedno být nemělo. Začíná to vývojem. Nejdřív vám to přijde jednoduché. Pak narazíte na pár hraničních případů, které jsou opravdu hnusné. No a nakonec vás dorazí změna požadavků, která vás donutí to přepsat. Jako všude jinde vývoje SW platí, že to jak to mělo vypadat, víme až když už je pozdě.
Vývojem to samozřejmě nekončí. Máme tu ještě dokumentaci a testování. Infrastrukturní kód se hrozně blbě testuje. Případy užití jsou obvykle špatně definovatelné, je tam spousta možností pro nečekané stavy a podobně. Často to nedokáže testovat nikdo jiný než programátor a programátoři jsou velmi špatní testeři.
Dále tu máme zaučování nových kolegů. Každý kdo chce u vás začít pracovat, se to musí naučit používat za vaše peníze. Když použijete existující technologii, máte velkou šanci najít někoho, kdo se to naučil za peníze vaší konkurence.
V neposlední řadě je tu údržba. Přicházejí stále nové a nové požadavky a vy pořád musíte platit někoho, kdo se o ten NIH musí starat. Často je to váš nejšikovnější člověk, kterého už dávno potřebujete na něco jiného.
Aby se všechno toto vyplatilo, musíte si být hodně jisti, že to opravdu nezbytně nutně potřebujete. Vyplatí se investovat hodně času a úsilí, a zjistit, jestli by se vám přeci jen něco existujícího nehodilo.
Hlavní je, opravdu se snažit najít něco, co by nám mohlo vyhovovat. I za cenu obětování některých požadavků. I když víme, že to není dokonalé. I když se bojíme, že nám to za pár let nebude stačit. I tak je velká šance, že existující technologie sice nebude super, ale bude vám prostě stačit. Jak říkají latiníci, bude good enough.
Dvakrát měž, jednou řež
Míval jsem kolegu, který říkával: “Každý, kdo se rozhodne napsat si vlastní knihovnu, by měl před tím desetkrát oběhnout barák, aby si to dobře rozmyslel.” Takže ano, NIH je často nezbytný. Ale aby se vám vyplatil, musíte si být sakra jistí, že chápete kolik vás to bude stát a kolik vám to přinese.
Ještě jsem měl připravených pár historek o tom, jak i já, ač jinak dokonalý, k NIHu pravidelně nevědomky sklouznu. Ale tím bych ten článek jen zbytečně natahoval a zkazil bych si pointu. Teď slibuji, že už se o NIHu nebudu nějaký čas vyjadřovat.