pondělí 30. července 2007

Diagnóza: syndrom Neimplementováno zde

Vývojář, architekt a nebo manažer postižený syndromem Neimplementováno zde trpí nedostatkem smyslu pro realitu. Neimplementováno zde se projevuje tak, že máme chorobnou touhu si všechno naimplementovat sami, protože jsme přesvědčení že:

  • je to jednoduché
  • budeme mít všechno plně pod kontrolou
  • napíšeme si to přesně pro naše potřeby
  • nikdo to nezvládne tak dobře jako my

A tak si vývojáři píší například vlastní transakční manažer, MVC implementace a ORM frameworky. Nikdy za celou dobu svojí participace v cirkuse zvaném vývoj jsem neviděl, že by neimplementováno zde přineslo výhody, které by výrazně převážily náklady na jeho vývoj.

Moje zkušenost s Neimplementováno zde

  • ze začátku to vypadalo jednoduše, ale teď se to nějak obludně rozrostlo
  • máme sice pod kontrolou celý kód, ale fakticky už mu nikdo nerozumí
  • naše potřeby se postupem času změnily a jednoduché řešení přestalo postačovat
  • protože se jedná o vlastní řešení, tak nám chybí dokumentace, ale to nevadí každý se přece může podívat do kódu

Dalším dvěma vlastnostem, kterým trpí většina vlastních řešení, se budu věnovat detailněji. Výkonnost je jednou z nich. Naše vlastní řešení většinou neškálují takže se jim v tom snažíme pomoci všemožnými způsoby. Přidáváme různé cache a zkoušíme různě pokoutné techniky. To má za následek, že v kódu je daleko více chybového bastlu, kterému už opravdu nikdo nerozumí.

Chybovost, protože naše vlastní implementace (frameworky) používáme jenom my tak nemáme velkou zpětnou vazbu. Místo toho se do produkční kvality dostaneme s velkou obtíží tak na čtyři iterace, ale kódu potom rozumí přibližně dva vývojáři ve firmě a z toho je jeden na odchodu a druhý na nemocenské.

Jak z toho ven? Těžko, pokud vývojáři neakceptují také nevýhody neimplementováno zde. Dobrým řešením je participace v open source projektech. Pokud se nám něco nelíbí či nedostačuje, tak to můžeme přímo ovlivnit a zároveň budeme mít pravděpodobně silnou zpětnou vazbu. Dobrá rada na závěr, eliminujte Neimplementováno zde a ušetříte si spoustu času a prostředků na vývoj.