<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Honza Štěrba &#187; Metodika</title>
	<atom:link href="http://honzasterba.cz/category/metodika/feed/" rel="self" type="application/rss+xml" />
	<link>http://honzasterba.cz</link>
	<description>Poznámky, zápisky, blog.</description>
	<lastBuildDate>Sun, 04 Dec 2011 14:41:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Dobrý programátor</title>
		<link>http://honzasterba.cz/2009/dobry-programator/</link>
		<comments>http://honzasterba.cz/2009/dobry-programator/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 16:40:25 +0000</pubDate>
		<dc:creator>Honza</dc:creator>
				<category><![CDATA[Metodika]]></category>

		<guid isPermaLink="false">http://honzasterba.cz/?p=155</guid>
		<description><![CDATA[Tento dotaz mě zaujal natolik, že jsem k němu začal psát komentář. Ten jsem si pak přečetl (ano, dělám to) a smazal. Komentář vypadal nějak takto: Adame, dovolil bych si malou radu. Dobrý programátor se pozná tak, že když se po třech až pěti letech podívá na svůj kód a nechce se mu zvracet a [...]]]></description>
			<content:encoded><![CDATA[	<p>Tento <a href="http://www.podnikanivusa.com/2009/02/13/dotaz-do-poradny-jak-sehnat-zakazky/">dotaz</a> mě zaujal natolik, že jsem k němu začal psát komentář. Ten jsem si pak přečetl (ano, dělám to) a smazal. Komentář vypadal nějak takto:</p>

	<p><cite>Adame, dovolil bych si malou radu. Dobrý programátor se pozná tak, že když se po třech až pěti letech podívá na svůj kód a nechce se mu zvracet a ne ta že to o sobě tvrdí.</cite></p>

	<p><span id="more-155"></span></p>

	<p>Pointa budiž v tom, že dobrý programátor píše kvalitní kód a když se k němu po dlouhé době vrátí je s ním stále spokojen. Ale to není pravda. Pak mě napadla další extrémní varianta:</p>

	<p><cite>Dobrý programátor se pozná tak, že když se po třech až pěti letech podívá na svůj kód tak by ho nejradši přepsal od základů.</cite></p>

	<p>To je samozřejmě taky úplně vedle. Ale hezky to vystihuje klasickou nemoc mnoha kolegů. Napsat &#8211; zahodit &#8211; přepsat &#8211; a tak dále a pořád dokola. Nikam to nevede a efektivita mizerná. Tak jak se teda pozná ten <em>Dobrý programátor</em>?</p>

	<p>Na první pohled těžko. Nicméně myslím, že se dá vycházet z výše uvedeného. Ani jeden z případů není správně. V prvním případě máme tu čest s člověkem, který se za uplynulou dobu nic nenaučil a nikam se neposunul a v druhém případě v podstatě taky.</p>

	<p>Já vidím kvalitu programátora v tom jak se dívá na svůj produkt. Dalo by se to přirovnat k rozdílu mezi kamenosochařstvím a modelováním z plastelíny. Sochař vytesá sochu a jakmile je hotová už se v podstatě nedá změnit. Modelář pracuje s pružnou hmotou, která reaguje a dá se dále tvarovat. Stejné je to s kódem. Jediná věc, která je při tvorbě programů jistá je, že nic není jisté. Svět kolem nás se neustále mění a stejně tak programy a požadavky na ně. Dobrý programátor toto ví a staví svoje programy jako modely z plastelíny, kterou je možné dále tvarovat, protože tesat to pokaždé znovu do kamene se prostě nevyplatí.</p>

	<p>Nutno podotknout, že i pružnost se dá dotáhnout do extrému a pak člověk mezi všemi těmi abstrakcemi hledá kousky kódu, které něco dělají. Být dobrým programátorem znamená umět najít rovnováhu a to <em>ať si říka kdo chce co chce</em> v osmnácti neumí žádný.</p>]]></content:encoded>
			<wfw:commentRss>http://honzasterba.cz/2009/dobry-programator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pravidlo obrácené pyramidy</title>
		<link>http://honzasterba.cz/2008/pravidlo-obracene-pyramidy/</link>
		<comments>http://honzasterba.cz/2008/pravidlo-obracene-pyramidy/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 16:33:59 +0000</pubDate>
		<dc:creator>Honza</dc:creator>
				<category><![CDATA[Metodika]]></category>

		<guid isPermaLink="false">http://honzasterba.cz/?p=142</guid>
		<description><![CDATA[Docela nedávno jsem si uvědomil jednu zajímavou věc. Když se začíná nový projekt nebo přede mnou stojí nějaký netriviální programátorský úkol, často se mi stane, že se přistihnu jak jen tak nečinně sedím a lámu si hlavu nad tím, jak já to jenom vyřeším. Nakonec to samozřejmě všechno dobře dopadne. Nicméně proces, který vede k [...]]]></description>
			<content:encoded><![CDATA[	<p>Docela nedávno jsem si uvědomil jednu zajímavou věc. Když se začíná nový projekt nebo přede mnou stojí nějaký netriviální programátorský úkol, často se mi stane, že se přistihnu jak jen tak nečinně sedím a lámu si hlavu nad tím, jak já to jenom vyřeším. Nakonec to samozřejmě všechno dobře dopadne. Nicméně proces, který vede k úspěšnému konci, stojí za popis.</p>

	<p><span id="more-142"></span></p>

	<p>Jakási programátorská poučka říká, že programátorské úkoly se dělí na ty trivální a na ty co už někdo řešil. Jiná poučka říká, že každý problém se dá rozložit na konečné množství triviálních problémů. Kdyby toto neplatilo, byly by nám všecky současné programovací jazyky k ničemu.</p>

	<p>Osobně si programátorské problémy dělím na tři skupiny podle toho, zda si jejich řešení dokážu představit</p>

	<ol>
		<li>a jsem si jím jistý</li>
		<li>a jsem si jím jistý, ale nakonec to dopadne jinak</li>
	</ol>
	<ol>
		<li>jenom velmi vágně</li>
	</ol>

	<p>Zajímavá je samozřejmě druhá a třetí kategorie. Ta často vede k nekonečnému myšlenkovému procesu a pocitu beznaděje nebo ještě hůře inkompetence. Když jsem byl dotázán jak se s těmito situacemi vypořádávám podařilo se mi zformulovat řešení.</p>

	<p>Pokud je daný problém nevelkých romzěrů tak se většinou stačí ponořit do kódování a prvotní řešení časem vyplyne tak nějak samo od sebe. Jelikož se ale velikost problému odhaduje velmi těžce, práce se nakonec zlomí do pravidelných iterací jako u na prvních pohled větších problémů.</p>

	<p>Jak už to tak bývá proces je velmi jednoduchý. Hned na začátku je potřeba v sobě zapřít touhu porozumět hned všem sub-problémům, které mě čekají. Začít je nejtěžší. Druhým krokem je vymyslet nejmenší možný funkční celek. Nemusí to být programátorské veledílo, ale také to nesmí být úplná prasárna, aby se s tím dalo dále pracovat. Následně přichází ta úplně nejtěžší fáze. Je potřeba ten nejmenší možný celek naimplementovat. Nejtežší na tom je nepodlehnout pokušení dotahovat všechno do absolutní dokonalosti. To v drtivé většině vede k nekonešným smyčkám rozšiřování nekompletního díla a nakonec do propasti neudržitelného kódu.</p>

	<p>Jakmile je první iterace u konce většinou získám docela dobrou představu o výsledném dílu a ta spousta nezodpověditelných otázek na začáktu mi připadá jako směšný vtip. V tu chvíli přichází čas pro iterace ve stylu: test, implementace, refaktoring a znova. V horším případě v pořadí implementace, test, refaktoring.</p>

	<p>Nejvetší sranda je, že onen počáteční strach a nejistota se zatím vždy ukázaly jako neopodstatněné, takže v podstatě zatím pořád řeším triviální problémy. </p>]]></content:encoded>
			<wfw:commentRss>http://honzasterba.cz/2008/pravidlo-obracene-pyramidy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nomanagement management</title>
		<link>http://honzasterba.cz/2008/nomanagement-management/</link>
		<comments>http://honzasterba.cz/2008/nomanagement-management/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 16:32:51 +0000</pubDate>
		<dc:creator>Honza</dc:creator>
				<category><![CDATA[Metodika]]></category>

		<guid isPermaLink="false">http://honzasterba.cz/?p=140</guid>
		<description><![CDATA[Nedávno jsem měl s Rikim zajímavou debatu o manažerech. Jsou to důležití lidé. Vidíme se s nimai každý den a mají podstatný vliv na náš každodenní pracovní život. Podle nějaké manažerské teorie existují dva typy manažerů. Hands-on manažer je ten, který je s týmem pořád a na problémy reaguje hned jak nastanou. Zato hands-off manažer [...]]]></description>
			<content:encoded><![CDATA[	<p>Nedávno jsem měl s <a href="http://fczbkk.com">Rikim</a> zajímavou debatu o manažerech. Jsou to důležití lidé. Vidíme se s nimai každý den a mají podstatný vliv na náš každodenní pracovní život. Podle nějaké manažerské teorie existují dva typy manažerů. Hands-on manažer je ten, který je s týmem pořád a na problémy reaguje hned jak nastanou. Zato hands-off manažer je ten, který nechává tým být a jednou za čas se nechá uvést do obrazu. Takový člověk má potom docela zkreslený pohled na projekt, ale zase zdravější nervy. Podle mě existuje ještě jeden typ manažera, kterého v žádné manažerské příručce nenajdete.</p>

	<p><span id="more-140"></span></p>

	<p>Základní postup při sestavování softwarových týmů je následující</p>

	<ul>
		<li>vezmeme N senior developerů a ti systém navrhnou a naimplementují</li>
		<li>k nim přidáme M juniorů, kteří se v procesu něco naučí</li>
	</ul>
	<ul>
		<li>celé to bude řídit L manažerů protože potřebujeme zachovat učitý pomměr X = (M+N) / L</li>
	</ul>

	<p>Tento proces vychází z přesvědčení, že</p>

	<ul>
		<li>na komplexní úkoly je potřeba zkušené programátory</li>
	</ul>
	<ul>
		<li>na ty hloupé věci okolo nám stačí junior</li>
	</ul>

	<p>a to je základní kamen úrazu. Základní problém je v přesvědčení, že existují hloupé nebo jednoduché úkoly. Opačný názor, se kterým já souhlasím:</p>

	<ul>
		<li>dobrý programátor programuje byznys logiku</li>
		<li>dobrý programátor jednoduché úkoly automatizuje</li>
		<li>dobrý programátor testuje</li>
	</ul>
	<ul>
		<li>dobrého programátora zájímá klient více než zadání</li>
	</ul>

	<p>V případě, že najímáte jenom takové programátory odpadá vám potřeba mít hromadu manažerů, stačí když se shodnou na jednom <strong>vůdci</strong> pro řešení oněch nerozhodnutelných filozofických problémů. Do mixéru se pak přihodí <a href="http://en.wikipedia.org/wiki/SCRUM">SCRUM</a> nebo <a href="http://www.extremeprogramming.org/">XP</a> a tým je hotov.</p>

	<p>V čem je rozdíl? Takový tým bude podstatně dražší to ano. Nicméně neporovnatelně efektivnější a hlavně dlouhodbě levnější na provoz. Nejdůležitější rozdíl je v kvalitě odevzdané práce a to by mělo být to co nás všechny nakonec zajímá. A kde je ten nový typ manažera? Kdo ho ještě hledá tak nepochopil.</p>]]></content:encoded>
			<wfw:commentRss>http://honzasterba.cz/2008/nomanagement-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bezpečnost na straně klienta</title>
		<link>http://honzasterba.cz/2008/bezpecnost-na-strane-klienta/</link>
		<comments>http://honzasterba.cz/2008/bezpecnost-na-strane-klienta/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 16:04:55 +0000</pubDate>
		<dc:creator>Honza</dc:creator>
				<category><![CDATA[Metodika]]></category>

		<guid isPermaLink="false">http://honzasterba.cz/?p=88</guid>
		<description><![CDATA[Phishing, Identity theft a další nové kybernetické zločiny jsou v poslední době hitem internetu. Když se na nějakém webu objeví díry typu SQL Injection a XSS tak je to odborníkům spíše k smíchu, protože moderní vývojářské technologie proti těmto praktikám bojují samy od sebe a v drtivé většině jenom neznalost základních faktů a hloupost umožňují, [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://en.wikipedia.org/wiki/Phishing">Phishing</a>, <a href="http://en.wikipedia.org/wiki/Identity_theft">Identity theft</a> a další nové <em>kybernetické zločiny</em> jsou v poslední době hitem internetu. Když se na nějakém webu objeví díry typu <a href="http://en.wikipedia.org/wiki/SQL_injection"><span class="caps">SQL</span> Injection</a> a <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">XSS</a> tak je to odborníkům spíše k smíchu, protože moderní vývojářské technologie proti těmto praktikám bojují samy od sebe a v drtivé většině jenom neznalost základních faktů a hloupost umožňují, že se neustále objevují.</p>

	<p><span id="more-88"></span></p>

	<p>Server-side security je prostě z mého pohledu vyřešená. Prostředky jak se 99% útoků bránit jsou jednoduché a tomu zbytku se jde bránit jenom velmi těžce. Řeknu-li to jinak, tak pokud se dá stránka hackout pomocí <span class="caps">SQL</span> injection nebo <span class="caps">XSS</span> je čistě blbost dodavatele/provozovatele. Tomu, že vám někdo nakonec hackne captchu, nezabráníte, ani kdyby jste se rozkrájeli.</p>

	<p>Na straně klienta je to něco jiného. Nad člověkem, který vaši službu používá nemáte v podstatě žádnou kontrolu. Jediný bezpečnostní prvek na klientské straně je autentifikace, čili nějaký proces, kterým se propojí klient a jeho uživatelká data na straně aplikace. Většinou to vypadá tak, že zadáte jméno nebo email a heslo. Tomu se většinou říká jednoduchá autentifikace. Přidání dalších fází identifikace uživatele se bezpečnost svyšuje.</p>

	<p>Bankovní sektor pomalu přechází na dvoustupňovou autentifikaci (někteří dokonce na 2 a půl stupně). Jak to vypadá?</p>

	<ul>
		<li>1. stupeň: Uživatel něco ví (např. jméno a heslo).</li>
		<li>2. stupeň: Uživatel něco má (např. mobilní telefon na který mu je zasláno další heslo s omezenou platností).</li>
	</ul>
	<ul>
		<li>2,5. stupeň: Uživatel má ještě něco jiného (třeba šivrovací certifikát nebo čipovou kartu).</li>
	</ul>

	<p>Vícestupňová autentifikace sice radikálně zvyšuje bezpečnost na straně klienta, ale její spolehlivost je taky diskutabilní a ještě k tomu snižuji použitelnost aplikace. Její nutnost vyšla najevo poté co lidem na staně serveru došlo, že:</p>

	<ul>
		<li>Lidé jsou hloupí a nepamatují si složitá hesla</li>
	</ul>
	<ul>
		<li>Lidé jsou líní a i jednoduchá hesla si píší na papírky a lepí na monitor</li>
	</ul>

	<p>Toto se nidky nezmění. Běžný uživatel zůstane běžným uživatelem a klidně si jako heslo zvolí jméno svého psa. O důležitosti zvolit si bezpečné heslo můžeme uživatele školit jak chceme, ale 80% z nich stejně pořád bude mít hesla jednoduchá a ti co si zvolí složité je buď zapomenout nebo si je nějkam napíšou. Hesla se prosťě ztrácejí stejně tak jako mobily a míra škod způsobených útoky na iternetové bankovnictví v americe radikálně roste. V čechách zatím trpí jenom Česká spořitelna, ale zato docela často.</p>

	<p>A východisko? Jediné co mě napadá je biometrika. Ke všem svým počítačům se přihlašuji pomocí čtečky otisků prstů a heslo mám nastavené bezpečné a málem si ho už taky ani nepamatuju. Jak to ale přenást na web?</p>

	<p>Jednou možností je nastavovat si bezpečná hesla a nechat čtečku otisků je vyplňovat za nás na základě ověření otisku. To je ale spíše work-around než skutečné řešení. Moderní browsery se asi skutečně budou muset stát pravou aplikační platformou a pokud výrobci hardwaru přijdou se standardním <span class="caps">API</span> pro práci se čtečkami bio-údajů tak, aby browser nemusel řešit ovladače a podobné blbosti, snad se jednou dožijem bezpečnějšího webu.</p>]]></content:encoded>
			<wfw:commentRss>http://honzasterba.cz/2008/bezpecnost-na-strane-klienta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Začínáme programovat</title>
		<link>http://honzasterba.cz/2007/zaciname-programovat/</link>
		<comments>http://honzasterba.cz/2007/zaciname-programovat/#comments</comments>
		<pubDate>Mon, 22 Oct 2007 15:54:19 +0000</pubDate>
		<dc:creator>Honza</dc:creator>
				<category><![CDATA[Metodika]]></category>

		<guid isPermaLink="false">http://honzasterba.cz/?p=69</guid>
		<description><![CDATA[Odborná fóra jsou skvělá věc. Osobně mám radši pozici odpovídajícího než tazatele, a proto se taky ptám až v mometě kdy jsem přesvědčen, že na problém jsem krátký a prostě s tím nepohnu. Velmi jsem si oblíbil čeksé rails fórum. Otázky ostatních uživatelů jsou často vítaným impulzem k rozšiřování znalostí o rozličných zákoutích Ruby on [...]]]></description>
			<content:encoded><![CDATA[	<p>Odborná fóra jsou skvělá věc. Osobně mám radši pozici odpovídajícího než tazatele, a proto se taky ptám až v mometě kdy jsem přesvědčen, že na problém jsem krátký a prostě s tím nepohnu. Velmi jsem si oblíbil <a href="http://rails-forum.cz">čeksé rails fórum</a>. Otázky ostatních uživatelů jsou často vítaným impulzem k rozšiřování znalostí o rozličných zákoutích <a href="http://rubyonrails.org">Ruby on Rails</a>. Najdou se ovšem i off-topic dotazy. Jeden <a href="http://rails-forum.cz/viewtopic.php?pid=760#p760">takový dotaz</a>, zastrčený ve špatném tématu a totálně off-topic, mě inspiroval k napsání tohoto článku.</p>

	<p><span id="more-69"></span></p>

	<p>Nepamatuji si kdy jsem poprvé napsal svůj první řádek kódu, ale mysím, že to bylo v BASICu před mnoha a mnoha lety. Měl jsem nějaký DOSový editor a v podstatě jsem moc nerozuměl tomu co dělám. Po nějaké době jsem si začal hrát s Pascalem a dokonce jsem se pokoušel psát applety v tehdy ještě mladičké Javě, ale celá ta objektovost mě přišla jakási divná a v podstatě jsem ji nechápal a nijak moc ani neřešil. Java mě tehdy nechytla.</p>

	<p>S vážným programováním jsem se asi potkal až na střední škole. Sice jsem už jakési zkušenosti s programováním a měl jsem za sebou i díla jejichž velikost se počítala na tisíce řádků (!!!), ale ve škole jsem poznal disciplínu, která pro mě byla absolutní novinkou. Jmenovala se <strong>Algoritmizace</strong>. Stačilo něco na čmárání a zadání problému a pomocí <a href="http://en.wikipedia.org/wiki/Flowchart">vývojových diagramů</a> jsme algorimizovali. Totálně to změnilo můj pohled na programování.</p>

	<p>Proč tolik historie? Již zmíněný <a href="http://rails-forum.cz/viewtopic.php?pid=760#p760">příspěvek</a> evokuje jednoduchou otázku. Kdy jsem prvně použil nějaké <a href="http://en.wikipedia.org/wiki/Integrated_development_environment">IDE</a>? Je dobré začínat programovat v IDE? Jednoduše odpovědět nelze. Mým prvním <span class="caps">IDE</span> byl TurboPascal, dá-li se tak nazvat. Byl to v podstatě jednoduchý <a href="http://en.wikipedia.org/wiki/Multiple_document_interface">MDI</a> konzolový editor, který uměl zdrojáky kompilovat, spuštět a dokonce i debugovat. Žádný správce projektů, žádné <em>build skripty</em>, prostě jednoduchý zdroják a pár klávesových skratek pro <em>compile</em>, <em>run</em> a <em>debug</em>. Prostě pohoda. Dost těžko se mi představuje, že by mě po první hodině výuky programování někdo posadil před počítač, řekl &#8220;Tady máš <span class="caps">IDE</span>.&#8221; (Netbeans, Eclipse a pod.), tady je Java a tady je zadání a <em>makej</em>.</p>

	<p>Myslím, že smyslem <span class="caps">IDE</span> je ulehčit programátorovi práci. K čemu je ale <span class="caps">IDE</span> človeku, který ještě nemá jasno v pojmech jako třída, metoda, kompilátor a <em>bytecode</em>? Akorát ho to zmate. Začínáte-li dnes programovat a <em>nějak se v tom všem ztrácíte</em>, tak <em>to všechno</em> zahoďte. Účelem <span class="caps">IDE</span> není člověka brzdit, ale pomoci mu. Pokud vás <span class="caps">IDE</span> jenom brzdí a nerozumíte jeho účelu, zahoďte ho. Vezměte se třeba <strong>InType</strong>, <strong>PSPad</strong> nebo <strong>vim</strong> a své první pokusy si kompilujte a spouštějte na příkazové řádce. Za pár let mi budete vděční.</p>]]></content:encoded>
			<wfw:commentRss>http://honzasterba.cz/2007/zaciname-programovat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agilní metodiky a Ruby</title>
		<link>http://honzasterba.cz/2007/agilni-metodiky-a-ruby/</link>
		<comments>http://honzasterba.cz/2007/agilni-metodiky-a-ruby/#comments</comments>
		<pubDate>Mon, 06 Aug 2007 15:27:56 +0000</pubDate>
		<dc:creator>Honza</dc:creator>
				<category><![CDATA[Metodika]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://honzasterba.cz/?p=37</guid>
		<description><![CDATA[Pokud vám toto uniklo, tak důrazně doporučuji obětovat tři čtvrtě hodiny a předášku si poslechnout. Je to podobné kvality jako většina věcí vycházející z dílny ThoughtWorks a Martina Fowlera. O agilní metodiky se zajímám už nějakou tu dobu, ale tato přednáška mě hodně nadchla i pro opomíjené praktiky jako pair-programming a test first, code after. [...]]]></description>
			<content:encoded><![CDATA[	<p>Pokud vám <a href="http://www.infoq.com/presentations/applying-agile-to-ruby">toto</a> uniklo, tak důrazně doporučuji obětovat tři čtvrtě hodiny a předášku si poslechnout. Je to podobné kvality jako většina věcí vycházející z dílny <a href="http://thoughtworks.com">ThoughtWorks</a> a <a href="http://martinfowler.com">Martina Fowlera</a>.</p>

	<p><span id="more-37"></span></p>

	<p>O agilní metodiky se zajímám už nějakou tu dobu, ale tato přednáška mě hodně nadchla i pro opomíjené praktiky jako <strong>pair-programming</strong> a <strong>test first, code after</strong>. Celkové statistické zhodnocení vlivu Ruby a Agile na průběh projektu sice nelze brát na 100% (je to pořád jenom statistika), ale závěr je nevyvratitelný. Agilní metodiky v kombinaci s dynamickými jazyky jsou dobré nejenom pro vývojáře (práce je zábavnější), ale i pro manažery a byznys jako takový (projekty jsou úspěšnější a výdělečnější).</p>]]></content:encoded>
			<wfw:commentRss>http://honzasterba.cz/2007/agilni-metodiky-a-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jak správně komunikovat</title>
		<link>http://honzasterba.cz/2007/jak-spravne-komunikovat/</link>
		<comments>http://honzasterba.cz/2007/jak-spravne-komunikovat/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 15:21:46 +0000</pubDate>
		<dc:creator>Honza</dc:creator>
				<category><![CDATA[Metodika]]></category>

		<guid isPermaLink="false">http://honzasterba.cz/?p=31</guid>
		<description><![CDATA[Dostal se ke mě popis servisního požadavku zadaného klientem dodavateli, který mě přivedl k hlubšímu zamyšlení. Obě strany pro jistotu zachovám v anonymitě, jejich identita pro tento článek beztak postrádá významu. Zmíněný požadavek měl zhruba následující znění (pokusím se převést na jiný, ale podobný příklad): Prosim o zmenu typu u 2 poli v nasi databazi: [...]]]></description>
			<content:encoded><![CDATA[	<p>Dostal se ke mě popis servisního požadavku zadaného klientem dodavateli, který mě přivedl k hlubšímu zamyšlení. Obě strany pro jistotu zachovám v anonymitě, jejich identita pro tento článek beztak postrádá významu. </p>

	<p><span id="more-31"></span></p>

	<p>Zmíněný požadavek měl zhruba následující znění (pokusím se převést na jiný, ale podobný příklad):</p>

	<p><cite>Prosim o zmenu typu u 2 poli v nasi databazi:</cite><br />
<cite>1) tabulka Automobily &#8211; pole Otacky motoru &#8211; zmenit z typu Integer na String (zachovat jiz zadane hodnoty)</cite><br />
<cite>2) tabulka Motory &#8211; pole Otacky &#8211; zmenit z typu Integer na String (zachovat jiz zadane hodnoty)</cite></p>

	<p>Dále je potřeba upřesnit, že ke každému Automobilu je v databázi přiřazeno více motorů (mapř. různé výbavy) a Otáčky jsou u Automobilu i přiřazených motorů vždy stejné.</p>

	<p>Klient má zřejmě nějaké znalosti práce s databází, protože se vyjadřuje pomocí termínů s databázemi souvisejícími <em>pole</em>, <em>typ</em>, <em>Integer</em> a <em>String</em>. Nicméně o vývoji aplikací nemá páru. Na tom není nic špatného. Je přirozeným projevem inteligentních lidí, že se snaží komunikovat s druhými jejich jazykem. V případě komunikace klient &#8211; implementátor, je ale to dle mého názoru vyloženě špatně. Ne, že bych si myslel, že každý si má mluvit po svém a na druhého kašlat Slovník komunikace by měl být založen víceméně na termínech klienta a dohodnutých termínech vyplívajících z kontextu vyráběné aplikace. Slova jako třída, tabulka, metoda a Integer nemají v takovýchto výměnách co dělat.</p>

	<p>Smysl předchozího tvrzení se nám objasní po té, co se dozvíme, jak se výše zmiňovaná komunikace vyvíjela dále. Poté co se dodavatel logicky požadavku klienta vzepřel a dožadoval se vysvětlení potřeby takovýchto změn spolu s dodáním odůvodnění jejich nesystémovosti (u číselných polí se ztratí možnosti třídění a porovnávání a podobně), přišla následující odpověď:</p>

	<p><cite>Začali jsme do databáze přidávat auta na Hypermoderní pohon, u kterých se otáčky neuvádí, místo toho jsmě chtěli mít v poli Otáčky hodnotu Hypermoderní.</cite></p>

	<p>Tato věta se už se začíná přibližovat správému chování klienta. Říká, co chce, a ne, co má dodavatel udělat. Dodavateli logistiky taky říkáme &#8220;Převezte nám tento předmět na toto místo.&#8221; a ne &#8220;Pošlete řidiče, ať jdou pro auto, nasednou, natankujou, zařadí jedničku&#8230;&#8221;. Myslím, že podobnost je patrná. To, s čím měl klient přijít už v prvním okamžiku, je, že potřebuje rozšířít aplikaci pro správu Automobilů tak, aby uměla reprezentovat modely s Hypermoderním pohonem a představuje si, že to bude vypadat tak, že místo hodnoty Otáček se bude zobrazovat text Hypermoderní pohon. Obě strany by věděli na čem jsou, ušetřilo by se spousta času a hlavně možné katastrově při implementaci podle původního zadání.</p>

	<p>Otázka nakonec zní, jak takového stavu dosáhnout? Klienty nám nikdo nevychová a nikdo je ani neučil jak se komunikuje s dodavateli software a poučený laik je vždy horší než úplné poleno. S lidmi se holt musí pracovat, vysvětlovat a hledat společně schůdné cestičky vedoucí k všestranné spokojennosti. Chtějte po klientech vědět, co potřebují, a ne, co máte dělat aby byli spokojení, to musítě vědět sami.</p>

	<p><em>Je mi jasné, že jsem tu asi neobjevil nic nového nebo dokonce světoborného. Účelem tohoto zápisu je formalizovat jednoduchý osobní názor.</em></p>

	<p><em>Dále přiznávám, že příklad je nic moc a vypadá docela absurdně, ale nic lepšího mě nenapadlo.</em></p>]]></content:encoded>
			<wfw:commentRss>http://honzasterba.cz/2007/jak-spravne-komunikovat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

