pátek 27. dubna 2007

Evoluce CZJUG - workshop, code camp

Včera proběhlo dubnové setkání (prezentace) CZJUG. Před prázdninami nás čekají ještě dvě setkání, ale to jistě všichni víte. V tomto článku bych se s vámi rád podělil o nápady a myšlenky na další rozvoj kolem CZJUG, které se nám s Roumenem honí hlavou a to především díky Vašim ohlasům.

S velkou pravděpodobností se podařilo vyřešit problémy s nahráváním jednotlivých setkání. To je povzbudivé především pro ty z vás, kteří se nemohou účastnit osobně. Hodně z Vás si přeje, aby se v rámci jednotlivých prezentací objevilo více praktických ukázek. Budeme se tento požadavek reflektovat, ale zároveň bychom s těmi praktickými ukázkami spojili další evoluci CZJUG.

Workshopy, code camps a jiné hrátky

Časová omezení jednotlivých setkání jsou jasně dané, ale rádi bychom zkusili něco, čemu se říká workshop a code camp. Obě dvě aktivity jsou především zaměřené prakticky s přímým zapojením účastníků.

  • workshop - praktické cvičení na specifické téma např. JPA, účastníci kódují podle zadání pod vedením instruktora. Cílem je osahat si danou technologii v praxi.
  • code camp - oproti workshopu není omezen specifickým tématem, ale čistě jenom oblastí např. J2EE. Není žádný instruktor a jedná se v podstatě o to, že každý si pracuje na svojí vlastní aplikaci (každý mže mít jinou). Pokud má nějaký problém, otázku, námět k diskusi, podělí se o to s ostatními a společně se snaží celou věc vyřešit/prodiskutovat.

Zatím je to všechno pouze v rovině úvah, ale asi bychom workshop kombinovali s code campem a celé by to přibližně vydalo na půl dne. Z toho vyblívá, že by se takto koncipovaná akce konala pravděpodobně o víkendu. Rádi bychom udrželi bezplatný vstup pro účastníku takovéto akce, ale to záleží na tom, jak se nám podaří zajistit podporu této akce.

Podpora je především o zajištění vhodných prostor pro pořádání takto velkých akcí. Každý z účastníků totiž potřebuje notebook a ten zase potřebuje napájení a přiznejme si, asi by nebylo úplně nejlepší kdyby seděl na zemi s notebookem v klíně. Navíc by nebylo na škodu, kdyby bylo k dispozici lehčí občerstvení. To všechno již zavání tím, že bude potřeba sponzoring, ať už přímo (peníze) a nebo nepřímo (prostory, občerstvení, speaker/instruktor).

Od Vás bychom rádi slyšeli, tady v diskusi a nebo na CZJUG mailling listu, jestli máte o nějakou formu workshopu a nebo code campu zájem. Případně jak se Vám tahle myšlenka líbí. Pokud jste firma, která by pořádání podobných akcí ráda podpořila, určitě nás kontaktujte.

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.