středa 12. dubna 2006

Reimplmentace kola

Jedna z nejčastějších chyb, se kterou jsem se setkal při vývoji, je snaha implementovat něco co bylo již dávno implementováno. Tahle snaha je označována jako - reimplementace kola. Existuje velké množství důvodů proč nedělat reimplementaci kola a existují asi tak jeden až dva důvody proč to dělat.

Proč nedělat reimplementaci kola

  • Je pravděpodobné, že kolo někdo implementoval jako open source, tak proč jeho práci nepoužít. Pokud někdo implementoval kolo né uplně vhodně k našim potřebám, pak je velice pravděpodobné, že můžeme naši práci na stávajícím základu postavit.
  • I když si myslíme pravý opak, tak většinou nemáme dostatečné zkušenosti a znalosti pro implementaci kola.
  • Je více než pravděpodobné, že si při reimplementaci budeme muset poradit s problémy, které nejsou v době rozhodnutí známe.
  • Budeme muset vynaložit navíc zdroje na implementaci a testy. Tedy na nejdražší položky (lidi a čas) z hlediska vývojového cyklu.
  • Pravděpodobně vystavíme vývojáře tomu, že ačkoliv existuje defacto průmyslový standard kola, který je široce rozšířen, že budou nuceni přejít na naší proprietární implementaci.
  • Pravděpodobně taktéž existují nástroje, které mohou v jistých směrech s kolem pracovat jedním či druhým směrem.

Proč dělat reimplementaci kola

  • neexistuje dostupná implementace kola a nebo část, na kterou bychom mohli použít
  • problém s licencí implementace kola

Pokud zvážíme všchna pro a proti, tak si troufám tvrdít, že prod devět z deseti případů je reimplementace úplně zbytečná a lze ji považovat za chybnou ať už z hlediská nákladů nebo side efektů. Nyní je více než vhodné položit si otázku,proč vlastně vývojáři s oblibou reimplementují kolo?

Já osobně vidím tři základní důvody

  • potřeba dokázat si, že to umíme
  • nechuť trávit čas hledaním, když sami nejlépe víme jak to udělat
  • neschopnost používat standardní zdorje informací - zeptat se kolegy, potom Googlu a na závěr v odborné konferenci

Minimálně první dva důvody jsou hodně abych tak řekl stupidní...