<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>!FrAgile Thinking &#187; Pair Programming</title>
	<atom:link href="http://blog.jendrusz.pl/tag/pair-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jendrusz.pl</link>
	<description>Software Development, Agile, Microsoft .NET, Muzyka</description>
	<lastBuildDate>Thu, 23 Jul 2009 13:11:23 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.jendrusz.pl' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/8887127bb14be5b999f37b1921b33c0a?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>!FrAgile Thinking &#187; Pair Programming</title>
		<link>http://blog.jendrusz.pl</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.jendrusz.pl/osd.xml" title="!FrAgile Thinking" />
	<atom:link rel='hub' href='http://blog.jendrusz.pl/?pushpress=hub'/>
		<item>
		<title>ALT.NET a programowanie w parach</title>
		<link>http://blog.jendrusz.pl/2008/12/16/altnet-a-programowanie-w-parach/</link>
		<comments>http://blog.jendrusz.pl/2008/12/16/altnet-a-programowanie-w-parach/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 08:37:36 +0000</pubDate>
		<dc:creator>jenrom</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[ALT.NET]]></category>
		<category><![CDATA[Pair Programming]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://blog.jendrusz.pl/?p=135</guid>
		<description><![CDATA[Ostatnio wywiązała się bardzo ciekawa dyskusja na liście mailingowej altdotnet na temat doświadczeń związanych z programowaniem w parach. Wszystkie osoby zainteresowane tą praktyką zachęcam do przeczytania wątku poświęconego tej dyskusji. Najbardziej interesującym aspektem w zamieszczonych wypowiedziach jest zgodność co do tego, że programowanie w parach nie jest złotym środkiem i nie warto programować w parach [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jendrusz.pl&blog=5537249&post=135&subd=jendrusz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-149" style="margin:5px;" title="altnet" src="http://jendrusz.files.wordpress.com/2008/12/altnet.jpg?w=156&#038;h=59" alt="altnet" width="156" height="59" />Ostatnio wywiązała się bardzo ciekawa dyskusja na liście mailingowej <a href="http://tech.groups.yahoo.com/group/altdotnet/"><span class="ygrp-pname">altdotnet</span> </a> na temat doświadczeń związanych z programowaniem w parach. Wszystkie osoby zainteresowane tą praktyką zachęcam do przeczytania <a href="http://tech.groups.yahoo.com/group/altdotnet/message/17952">wątku</a> poświęconego tej dyskusji.</p>
<p>Najbardziej interesującym aspektem w zamieszczonych wypowiedziach jest zgodność co do tego, że programowanie w parach nie jest złotym środkiem i nie warto programować w parach przez cały czas pracy, bowiem występują czasami zadania na tyle łatwe, że programowanie w parach jest po prostu nieefektywne. Patrząc na zamieszczone w wątku przykłady, takie jak tworzenie prostych widoków, wydaje mi się to bardzo rozsądnym argumentem.</p>
<p>Poruszony został także temat ping pong programming, o którym pisałem także w <a href="http://blog.jendrusz.pl/2008/12/11/programowanie-w-parach-hot-or-not/">poprzednim poście</a>. Jak widać z wypowiedzi, wiele osób chwali sobie wykorzystanie tej praktyki w celu nauczania w zespole TDD, które nie tylko <a href="http://codebetter.com/blogs/ian_cooper/archive/2008/09/23/learning-and-crafstmanship.aspx">moim zdaniem</a> jest bardzo trudne w obyciu i wymaga dłuższego okresu nauczania.</p>
<p><a href="http://www.lostechies.com/blogs/jimmy_bogard/default.aspx">Jimmy Bogard</a> wspomniał również o wykorzystaniu par w procesie projektowania. Z mojego doświadczenia wynika, że jest to bardzo skuteczna metoda. Należy jednak zwrócić uwagę na to, że projektowanie w metodologiach zwinnych eliminuje tak zwanny &#8222;<a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front">upfont design</a>&#8221; poprzez  nieustanne  projektowania. Stosując więc projektowanie w parach każda para rozpoczynając implementację kryterium akceptacyjnego tzw. &#8222;<a href="http://en.wikipedia.org/wiki/User_story">user story</a>&#8222;, korzystając na przykład z UMLa, może wyznaczyć i przedyskutować proponowaną przez nią architekturę. Największą zaletą tego rozwiązania moim zdaniem jest to, że zostaje wymuszany proces projektowania, które często zostaje pomijane w przypadku, gdy nad danym zadaniem pracuje tylko i wyłącznie jedna osoba. Poza tym mam nadzieję, że każdy jest świadom tego, &#8222;że co dwie głowy to nie jedna&#8221; i w efekcie końcowym zapewnia to, w stosunkowo krótkim czasie, powstanie &#8222;lepszej&#8221; architektury. Projektując w parach żadna z zaangażowanych osób się nie nudzi, o czym nie zawsze można powiedzieć w przypadku większej liczby osób. Oczywiście występują również sytuacje, w których wymagany jest udział większej liczby osób, gdyż dyskutowane rozwiązanie nie dotyczy tylko jednego kryterium akceptacyjnego. Tych faz projektowania jest jednak stosunkowo mało.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jendrusz.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jendrusz.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jendrusz.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jendrusz.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jendrusz.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jendrusz.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jendrusz.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jendrusz.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jendrusz.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jendrusz.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jendrusz.pl&blog=5537249&post=135&subd=jendrusz&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jendrusz.pl/2008/12/16/altnet-a-programowanie-w-parach/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8bcd127033469a9da5c4d426782db6cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jenrom</media:title>
		</media:content>

		<media:content url="http://jendrusz.files.wordpress.com/2008/12/altnet.jpg" medium="image">
			<media:title type="html">altnet</media:title>
		</media:content>
	</item>
		<item>
		<title>Programowanie w Parach &#8211; Hot Or Not?</title>
		<link>http://blog.jendrusz.pl/2008/12/11/programowanie-w-parach-hot-or-not/</link>
		<comments>http://blog.jendrusz.pl/2008/12/11/programowanie-w-parach-hot-or-not/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 08:33:44 +0000</pubDate>
		<dc:creator>jenrom</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Pair Programming]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://blog.jendrusz.pl/?p=55</guid>
		<description><![CDATA[Mój kolega z byłej ławki Marek Goldmann poruszył dosyć ciekawy aspekt metodologii Extreme Programming, którym jest programowanie w parach. Programowanie w parach jak i inne elementy metodologii Extreme Programming są często pomijane w trakcie implementacji metodologii zwinnych w większości firm. Prowadzi to najczęściej w późniejszej fazie projektu do utrudnień związanych z jego realizacją. Dowodem na to jest wypowiedź Jima Shorea na jego blogu. W porównaniu do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jendrusz.pl&blog=5537249&post=55&subd=jendrusz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.globalnerdy.com/2008/08/28/pair-programming-chairs/"><img class="size-medium wp-image-64 alignright" style="margin-top:5px;margin-bottom:5px;" title="pairon" src="http://jendrusz.files.wordpress.com/2008/12/pairon.jpg?w=262&#038;h=150" alt="http://www.globalnerdy.com/2008/08/28/pair-programming-chairs/" width="262" height="150" /></a></p>
<p>Mój kolega z byłej ławki <a href="http://javavsme.wordpress.com/">Marek Goldmann</a> <a href="http://javavsme.wordpress.com/2008/11/25/programowanie-w-parach/">poruszył </a>dosyć ciekawy aspekt metodologii <a href="http://www.extremeprogramming.org/">Extreme Programming</a>, którym jest<br />
<a href="http://c2.com/xp/PairProgramming.html">programowanie w parach</a>. Programowanie w parach jak i inne elementy metodologii Extreme Programming są często pomijane w trakcie implementacji metodologii zwinnych w większości firm. Prowadzi to najczęściej w późniejszej fazie projektu do utrudnień związanych z jego realizacją. Dowodem na to jest <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html">wypowiedź Jima Shorea</a> na jego blogu. W porównaniu do innych aspektów Extreme Programming przyznaje, że nie poświęciłem wystarczającej uwagi praktyką związanych z programowaniem w parach. Wydaje mi się, że jest tak głównie, dlatego, że jako pracownik jestem przekonany o tym, że większość firm nie wprowadzi programowania w parach ze względu na koszty, z którymi się to wiąże. Zresztą jestem ciekaw ile firm w Polsce stosuje przynajmniej po części inne elementy Extreme Programming takie jak <a href="http://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a> czy <a href="http://martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a>?</p>
<p class="MsoNormal">Jako, że żadne rozwiązanie nie jest złotym środkiem na wszystkie problemy, nie śmiem twierdzić, że wprowadzenie programowania w parach rozwiąże całkowicie większość problemów. Pewne zalety jednak są widoczne natychmiastowo. Przede wszystkim zwiększona wykrywalność błędów, która jest jednym z głównych powodów stosowania programowania w parach. Ostatnimi czasami miałem możliwość pracowania wspólnie z kolegą przy tworzeniu skryptów automatyzacji buildu i deployementu aplikacji, nad którą pracujemy. Mimo, że niektóre z opisywanych wymagań w poście Marka nie były spełnione, jestem przekonany, że nie był to czas zmarnowany. Poza wykryciem wielu bugów i wielu problemów, które pojawiłyby się w późniejszej fazie uzyskaliśmy bardzo ważny dla nas cel. Mianowicie to, że nie tylko jedna osoba jest teraz w stanie zarządzać i wprowadzać zmiany w powstałych skryptach. Czyli, mogę śmiało stwierdzić, że powstała pewna współwłasność kodu.</p>
<p class="MsoNormal">Powracając do wpisu Marka. W komentarzach pojawiła się ciekawa uwaga dreamera:</p>
<blockquote>
<p class="MsoNormal">&#8222;Zapomniałeś wspomnieć o b. ważnej moim zdaniem rzeczy: między partnerami w parze nie powinno być zbyt dużej różnicy w doświadzczeniu/wiedzy/umiejętnościach &#8211; w przeciwnym razie przepływ wiedzy będzie minimalny (jeśli wogóle jakiś będzie) a obie osoby będą pracowały poniżej swoich możliwości &#8211; co ogólnie prowadzi do frustracji…&#8221;</p>
</blockquote>
<p class="MsoNormal">Nie zgodzę się do końca z tą wypowiedzią, dlatego że dobór takiej pary może z sobą nieść również dużo zalet. Osoby pracujące przez dłuższy czas przy jednym projekcie mogą się szybko &#8222;wypalić&#8221;, przez co ich produktywność się zmniejszy lub mogą w ogóle zrezygnować z pracy. Źródłem tego problemu najczęściej jest brak dalszego rozwoju. Rozwiązaniem wówczas może być właśnie programowanie w parze z osobą mniej doświadczoną najlepiej nową w zespole. Mimo, że osoba bliska &#8222;wypalenia&#8221; w takiej parze pełni role mentora sama ponownie przechodzi proces nauczania, co daje jej poczucie rozwoju. Można by się pokuśić o stwierdzenie, że przy zastosowaniu takiego rozwiązania &#8222;upieczemy dwie pieczenie na jednym ogniu&#8221;: nowa osoba będzie poznawać nieznane jej dotychczas zagadnienia, a jednocześnie nie będzie przestoju w dalszej realizacji zadań w projekcie.</p>
<p class="MsoNormal">Jedną z praktyk, która moim zdaniem może dobrze zadziałać w sytuacji gdy między osobami występuje duża różnica umiejętności jest <a href="http://www.stickyminds.com/sitewide.asp?Function=WEEKLYCOLUMN&amp;ObjectId=9101&amp;ObjectType=ARTCOL&amp;btntopic=artcol">ping pong programming</a>. W sytuacji tej osoba <strong>A</strong> bardziej doświadczona pisze test nadając pewien tok myślenia drugiej osobie <strong>B</strong> w parze, która jest odpowiedzialna za stworzenie implementacji. W trakcie gdy za &#8222;sterami&#8221; usiądzie osoba <strong>B</strong> starająca się doprowadzić kod do takiej postaci by test przeszedł, osoba <strong>A </strong>jako <a href="http://portal.acm.org/citation.cfm?id=1380285">nawigator </a>może koncentrować się na definiowaniu kolejnych testów i nadzorem kodu pisanego przez partera.</p>
<p class="MsoNormal">Metody te nie zawsze mogą przynieść zamierzony efekt, dlatego, że nie każda osoba musi chcieć pracować w parze. W tej sytuacji nie należy narzucać rozwiązań na siłę. Warto też pamiętać o tym by osoby w zespole nie pracowały w tej samej parze nie dłużej niż jeden dzień, gdyż może to doprowadzić do wielu efektów ubocznych.</p>
<p class="MsoNormal">W celu bardziej dogłębnego zapoznania się z praktyką programowania w parach polecam wysłuchanie <a href="http://agiletuning.pl/2008/11/03/odcinek-02-programowanie-w-parach/">podcastów</a> zamieszczonych na stronie <a href="http://agiletuning.pl/">agiletuning.pl</a>.  Jako, że nie mam dużego doświadzenia z tą praktyką chętnie chciałbym usłyszeć  o waszych przeżyciach i rozmyśleniach związanych z tym tematem.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jendrusz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jendrusz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jendrusz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jendrusz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jendrusz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jendrusz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jendrusz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jendrusz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jendrusz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jendrusz.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.jendrusz.pl&blog=5537249&post=55&subd=jendrusz&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://blog.jendrusz.pl/2008/12/11/programowanie-w-parach-hot-or-not/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8bcd127033469a9da5c4d426782db6cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jenrom</media:title>
		</media:content>

		<media:content url="http://jendrusz.files.wordpress.com/2008/12/pairon.jpg?w=300" medium="image">
			<media:title type="html">pairon</media:title>
		</media:content>
	</item>
	</channel>
</rss>