28. října 2009

Testování s Mockitem

Pokud to někdo myslí s testováním vážně, tak se asi bez mockování neobejde. Já jsem dříve používal jMock a musím říct, že mě to celkem na nějaký čas od mockování odradilo - samotný zápis mi přišel velice upovídaný, měl jsem problémy s refactoringem a hlavně to bylo celé hodně náročné na údržbu. Zhodnotil jsem to tehdy, že je to moc práce bez velkého přínosu. Ještě bych měl možná podotknout, že jsem psal testy vždy až po produkčním kódu.

Na nedávném setkání s vývojáři v Ostravě mi byla doporučena knihovna Mockito. Sice jsem s ní ještě nic nedělal, ale už mě chytla - kód je hezky čitelný (stylem mi to připomíná hamcrest), bezproblémový refactoring, není nutné psát metody pomocí řetězců a celé mi to prostě přijde takové intuitivní. Jinak o důvodech vzniku Mockita je možné si přečíst na stránkach autorova blogu.

Pokud se vám Mockito líbit nebude, tak zkuste něco z následujících knihoven (na které mám uloženy odkazy): jMockit, EasyMock, jMock a nebo rMock (pokud máte s těmito knihovnami nějaké zkušenosti, tak se rád přiučím).

Nakonec ještě posílám odkaz na zajímavý článek "Mocks Aren't Stubs" od Martina Fowlera.

Jaký build nástroj používáte? - výsledky

V poslední anketě mě zajímalo, jaký build nástroj se nejčastěji používá. Celkem hlasovalo 86 lidí s tímto výsledkem:

  1. Maven (59%)
  2. ANT (55%)
  3. Něco jiného (9%)
  4. GANT (1%)


Dnes bez komentáře, protože k tomu není potřeba nic dodávat :).

1. října 2009

Programátoři vs. kodeři

Při své práci na volné noze jsem již pár firem navštívil a všude mi to přijde stejné - část vývojářů jsou programátoři a část kodeři.

Programátor

Schopnost myslet - asi to zní úsměvně, ale toto je největší schopnost (a tedy rozdíl oproti koderovi) programátora. O své práci přemýšlí, přemýšlí, zda to co dělá dává smysl, zda zadání, které dostal neobsahuje nějaké nesmysly, nesrovnalosti. Programátorovi jde také často o "dobrý pocit" z práce - nejde vždy jen o to udělat nějaký úkol co nejrychleji, něco narychlo zbastlit, ale dělat věci tak, aby s nimi byl člověk sám spokojený.
Programátor bude obecně asi také více nespokojený člověk, protože mu záleží na tom, aby dělal v "prostředí", které dává smysl, které ho někam posouvá dále.

Kodér

Kodéra ze všeho nejvíce zajímá zdrojový kód - rád kód vytváří, ale nebaví ho si vymýšlet zadání, přemýšlet nad ním, diskutovat o něm. Ideálně dostane zadání, které obsahuje úplně vše - od informace, jaké metody má udělat a kam je umístit, přes informaci, že je nutné přidat tlačítko "Odeslat" k formuláři (toto je realita, jeden kolega udělal webový formulář bez tlačítek na odeslání). Díky velké orientaci na samotný kód dokáží psát velice efektivně a kvalitně.


To, zda je vývojář programátorem nebo kodérem nesouvisí ani tak s tím, jak kdo je dobrý v Javě, jak moc zná různé knihovny, frameworky, ale asi spíše s tím, jaký má přístup k práci, co ho baví více. Někdo je od přírody přemýšlivý, zkoumavý, zodpovědný, pečlivý, ...

Z pohledu sestavení vývojového týmu je zřejmé, že každý tým potřebuje oba dva typy vývojářů - někoho, kdo bude udávat směr a přemýšlet o aplikaci a někdo, kdo bude dělat (kvalitní) kód. Jen je otázka v jakém poměru to namíchat - má zkušenost je zatím taková, že poměr programátorů vs. koderů je přibližně 1:2.