neděle 22. dubna 2007

Náklady na vývoj v Jave

Jedním z důvodů proč se Java tolik neuchytila v oblasti menších a středních aplikací, kde dlouhá léta dominuje PHP, jsou vysoké náklady na vývoj. Zvýšené náklady na vývoj jsou jedním ze dvou klíčových faktorů, tím druhým je problém hostingů. Z pohledu nákladů na vývoj je potřeba rozlišovat několik oblastí, které spolknou nemalou část zdrojů finančních a časových.

Náklady na vývojáře

Největším nákladem je z pohledu firmy vývojář. Vývojáře Javy je totiž drahé vychovat a drahé udržet. Například finanční nároky junior java vývojářů neklesají v Praze pod 40 tišíc hrubého. V případě senior vývojářů je to někde minimálně o 15 tisíc výše. Pokud vezmeme v potaz, že firma na plat musí vynaložit přibližně dvojnásobek a vynásobíme si to velikostí menšího týmu, tak se dostáváme k nezanedbatelným číslům.

Oproti tomu najmout si člověka, který je schopen používat nějaký skriptovací jazyk, vyjde levněji. Nároky na takového PHP vývojáře jsou mnohem menší než nároky na java vývojáře, kde se musí zohlednit komplexnost celé platformy. Navíc PHP vývojáři nejsou rozděleny do pomyslných kast - junior, senior, architekt.

Jako příklad vezměme typického vývojáře frontendu webové aplikace, v případě PHP i Javy je přibližně porovnatelná znalost - HTML, CSS, JavaScript a skriptovacího jazyku PHP resp. JSP. Jenže java vývojář musí ještě připočítat znalost technologií jako Servlet API, JSTL, XML, použitého web frameworku (JSF, Struts, Tapestry), přidružených procesů např. deploy a formát aplikace a Javy jako takové (API, objektový přístup, konkurenčnost). To všechno jsou samozřejmě nároky, které se počítají.

Jinými slovy, to aby člověk vytvořil jednoduchou aplikaci v Jave a PHP má nesrovnatelné nároky. Java se sice může dnes chlubit velice pokročilými vývojovými nástroji, které diferenci mezi nároky snižují, ale pořád jsou velké. Na druhou stranu, pokud obohatíme tým java junior vývojářů o pár zkušenějších senior vývojářů, dostaneme aplikaci, která bude pravděpodobně - lépe navržená (z hlediska architektury), spravovatelná, rozšiřitelná, otestovaná a s trochou snahy bude i škálovat.

Z krátkodobého hlediska přináší skriptovací jazyky, abychom pořád nemluvili o PHP, menší náklady na vývoj. Naopak náklady se z dlouhodobějšího hlediska mohou zvýšit při rozšiřování/změně aplikace. Vždycky je proto nutné zvážit oba faktory. Komplexnost celé Java platformy má svůj nezanedbatelný důvod v otevřených standardech a snaze o zpětnou kompatibilitu.

V budoucnu by se jako jedna z cest, k snižování nákladů na vývoj v Jave, mohla ujmout integrace se skriptovacími jazyky. Tím by se ušetřilo v oblasti řekněme junior vývojářů. Troufám si tvrdit, že dobří a drazí senior vývojáři budou třeba v každém projektu, který to myslí se svou existencí vážně, bez rozdílu jazyku/platformy. Senior vývojáře považuji za garanty technologické implementace z hlediska výsledné kvality.