<?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>Agile Surfing &#187; Agile</title>
	<atom:link href="http://agilesurfing.pl/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://agilesurfing.pl</link>
	<description>Grzegorz Dziemidowicz o Agile, Software Craftsmanship i programowaniu</description>
	<lastBuildDate>Fri, 18 May 2012 14:45:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Mini konferencja w pracy</title>
		<link>http://agilesurfing.pl/2012/agile/mini-konferencja-w-pracy/</link>
		<comments>http://agilesurfing.pl/2012/agile/mini-konferencja-w-pracy/#comments</comments>
		<pubDate>Fri, 18 May 2012 14:41:42 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Berlin]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[berlin]]></category>
		<category><![CDATA[konferencja]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=618</guid>
		<description><![CDATA[Pod koniec kwietnia odbyła się wewnętrzna konferencja w mojej pracy. Był to jeden z moich celów na ten rok - hura! udało się go zrealizować Pomysł na konferencję zrodził się w głowie koleżanki z pracy w pod koniec zeszłego roku. Jeszcze w grudniu mieliśmy pierwsze spotkanie organizacyjne i sformowaliśmy nieformalny zespół. Niecałe pół roku później 80 [...]]]></description>
			<content:encoded><![CDATA[<p>Pod koniec kwietnia odbyła się wewnętrzna konferencja w mojej pracy. Był to jeden z moich <a title="Nowy Rok 2012! :)" href="http://agilesurfing.pl/2011/ciekawostki/nowy-rok-2012/" target="_blank">celów na ten rok</a> - hura! udało się go zrealizować <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Pomysł na konferencję zrodził się w głowie koleżanki z pracy w pod koniec zeszłego roku. Jeszcze w grudniu mieliśmy pierwsze spotkanie organizacyjne i sformowaliśmy nieformalny zespół. Niecałe pół roku później 80 osób mogło uczestniczyć w wydarzeniu składającym się z 12 wykładów (w 2 ścieżkach) i godzinnego &#8222;open space&#8221;. Konferencje wystartowała w czwartek o 15 i zakończyła się po 19.</p>
<p>Pokrótce o naszym pomyśle na konferencję: W moim biurze pracuje sporo osób: ponad 800. Regularnie odbywają się jakieś małe eventy, na przykład co 2 tygodniowe wykłady na tematy techniczne organizowane przez zaangażowane osoby w różnych częściach organizacji.</p>
<p>&#8222;Problem&#8221; polega na tym, że na poszczególne eventy z reguły przychodzą zawsze &#8222;te same osoby&#8221; i eventy przyciągają osoby związane z organizatorem wydarzania. Na sesje grupy A przychodzą członkowie zespołu A, B i C, a na warsztaty grupy X przychodzą ludzie z X, Y i Z. Nie było niczego co przyciągnęłoby wszystkich. Nie było wydarzenia na temat techniczny na którym pojawili by się przedstawiciele zespołów A, B, C, X, Y i Z.</p>
<p>Tak powstał pomysł na konferencję: Stworzyć coś, co przyciągnie wszystkich i pozwoli się nam nawzajem poznać.</p>
<p>By zrealizować naszą wizję przyciągnęliśmy prezenterów z różnych części organizacji. Następnie zadbaliśmy o odpowiednią promocję: wysłaliśmy maile na najróżniejsze grupy dyskusyjne, stworzyliśmy plakaty i ulotki, które rozprowadziliśmy po budynku.</p>
<p>Konferencję rozpoczęliśmy &#8221;ice breakerem&#8221;, gdzie ludzie mieli okazję się troszkę poznać. Następnie mieliśmy wykłady zorganizowane tak, by ludzie &#8222;zmuszeni&#8221; byli zobaczyć coś nie związanego z ich specjalizacją. Zamiast np. ścieżki technicznej i agielowej mieliśmy ścieżki mieszane. Najpierw dwa równoległe wykłady techniczne, później dwa równoległe wykłady na temat procesu. Sesje było ograniczone w czasie do 25 minut by zbytnio &#8222;nie zanudzić&#8221; uczestników.</p>
<p>Na koniec odbył się godzinny &#8222;open space&#8221;. Była to część konferencji gdzie uczestnicy sami decydowali o czym będą rozmawiać. Sesja ta bardzo się podobała i w jej wyniku powstało kilka konkretnych inicjatyw. Następnym razem na pewno poświęcimy tej części programu więcej czasu..</p>
<p>Komentarze uczestników i &#8222;menadżmentu&#8221; po konferencji były bardzo pozytywne i już myślimy o tym kiedy zorganizować kolejną jej edycję&#8230;</p>
<p>A propo &#8222;menadżmentu&#8221;. Wszyscy organizatorzy byli &#8222;szeregowymi pracownikami&#8221;. Konferencja została zorganizowana &#8221;przez nas&#8221;. Konferencję organizowaliśmy pomiędzy naszymi normalnymi obowiązkami &#8211; spotkania odbywały się w czasie obiadów lub po pracy. Oczywiście gdy już mieliśmy konkretny pomysł co chcemy zrobić zaczęliśmy zabiegać o wsparcie naszych przełożonych, które w końcu uzyskaliśmy (co wymagało równoległych rozmów w kilku &#8222;częściach organizacji&#8221;).</p>
<p><strong>W każdym razie przekaz jest taki: Jeśli masz pomysł na coś ciekawego &#8211; zrób to! Małymi kroczkami, krok po kroku, da się zbudować coś dużego <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p>Zresztą,<a href="http://agilesurfing.pl/2010/programowanie/warsztaty-inspirowane-coderetreat/"> to nie pierwszy raz</a>..</p>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-6190"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fmini-konferencja-w-pracy%2F&amp;linkname=Mini%20konferencja%20w%20pracy" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fmini-konferencja-w-pracy%2F&amp;linkname=Mini%20konferencja%20w%20pracy" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fmini-konferencja-w-pracy%2F&amp;linkname=Mini%20konferencja%20w%20pracy" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fmini-konferencja-w-pracy%2F&amp;linkname=Mini%20konferencja%20w%20pracy" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fmini-konferencja-w-pracy%2F&amp;linkname=Mini%20konferencja%20w%20pracy" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fmini-konferencja-w-pracy%2F&amp;title=Mini%20konferencja%20w%20pracy" id="wpa2a_2">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2012/agile/mini-konferencja-w-pracy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Legacy Code Retreat Berlin</title>
		<link>http://agilesurfing.pl/2012/programowanie/legacy-code-retreat-berlin/</link>
		<comments>http://agilesurfing.pl/2012/programowanie/legacy-code-retreat-berlin/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 20:58:20 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[berlin]]></category>
		<category><![CDATA[clean code]]></category>
		<category><![CDATA[coderetreat]]></category>
		<category><![CDATA[craftsmanship]]></category>
		<category><![CDATA[legacy code]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=604</guid>
		<description><![CDATA[W ostatnią sobotę miało miejsce pierwsze berlińskie Legacy Code Retreat (w sile 16 uczestników). Pomogłem trochę w jego organizacji, głównie jednak wziąłem w nim udział jako uczestnik. W tym poście opiszę swoje wrażenia. Format Format Legacy Code Retreat został zaproponowany przez  J. B. Rainsbergera i jest podobny do &#8222;normalnego&#8221; Code Retreat &#8211; składa się z 6 [...]]]></description>
			<content:encoded><![CDATA[<p>W ostatnią sobotę miało miejsce pierwsze<a href="http://www.coderetreat-berlin.de/2012/" target="_blank"> berlińskie Legacy Code Retreat</a> (w sile 16 uczestników). Pomogłem trochę w jego organizacji, głównie jednak wziąłem w nim udział jako uczestnik. W tym poście opiszę swoje wrażenia.</p>
<p><img class="aligncenter" src="https://lh5.googleusercontent.com/-eLXBMyg6D8c/T4nev2eAwfI/AAAAAAAACaM/x6MbhvBnT7I/s833/DSC_5753.JPG" alt="" width="415" height="270" /></p>
<h2>Format</h2>
<p>Format <a href="http://www.legacycoderetreat.com/" target="_blank">Legacy Code Retrea</a>t został zaproponowany przez  J. B. Rainsbergera i jest podobny do &#8222;normalnego&#8221; Code Retreat &#8211; składa się z 6 sesji, w których pracujemy w parach i po każdej sesji kasujemy nasz kod. W przeciwieństwie jednak do normalnego Code Retreat nie zaczynamy od zera pisać &#8222;Grę w życie&#8221; a <strong>pracujemy już<a href="https://github.com/jbrains/trivia" target="_blank"> z dostarczonym kodem gry Trivi</a>a i naszym celem jest jego zrozumienie i bezpieczne zrefaktoryzowanie.</strong></p>
<div></div>
<p>Nasz event poprowadzony został przez Martina Klose, który świetnie spisał się w roli facylitatora. Rozpoczęliśmy od krótkiego wprowadzenia, gdzie Martin omówił <strong>&#8222;<a href="http://c2.com/cgi/wiki?XpSimplicityRules" target="_blank">4 rules of simple design</a></strong>&#8221; i <strong><a href="http://www.renaissancesoftware.net/blog/archives/27" target="_blank">algorytm refaktoryzacji legacy kodu</a>.</strong> Z ciekawostek, event prowadzony był po angielsku, z czego bardzo się cieszę, jako że byłem jedyną osobą która nie potrafiłaby pracować po niemiecku..</p>
<div></div>
<p>Fajnym motywem podczas rozpoczęcia dnia było ćwiczenie, które wykonaliśmy by &#8222;szybko się poznać&#8221; w grupie. Martin polecił nam ustawić się w szeregu, gdzie na jednym końcu były osoby, które uważały się za wymiataczy w TDD a na drugim końcu, osoby, które dopiero rozpoczynały swoją przygodę z TDD. Następnie Martin zasugerował by osoby początkujące pracowały w ciągu dnia z osobami doświadczonymi.</p>
<div>
<ul>
<li>Sesja 1 &#8211; Zapoznanie z kodem</li>
<ul>
<li style="text-align: left;">Pierwsze starcie z kodem. W tej sesji rozpoczęliśmy pisanie testu charakteryzacyjnego i zajęło nam to praktycznie cały dostępny czas (przy czym prawie 10 minut zmarnowaliśmy na skonfigurowanie JUnita, który z jakiegoś powodu nie chciał dodać się do projektu, ech&#8230;). Dev z którym pracowałem w parze nigdy nie pisał w Javie, także trochę czasu spędziliśmy również na wytłumaczenie podstawowych rzeczy na temat Javy.</li>
</ul>
<li>Sesja 2</li>
<ul>
<li>Martin sugeruje wszystkim zastosowanie<strong> techniki <a href="http://www.lucbos.net/2011/12/legacy-code-retreat.html" target="_blank">Golden Master</a></strong>. Sprowadza się to mniej więcej do tego co robiłem w poprzedniej sesji, więc z moim nowym dev partnerem ruszamy do kodowania. Po parunastu minutach mamy już gotowy test, który porównuje wykonanie programu z naszą &#8222;złotą kopią&#8221;. Jesteśmy pewni siebie i wtedy pojawia się Martin z pytaniem &#8222;<strong>Skąd wiecie, że wasz test jest wystarczający</strong>?&#8221; &#8222;Jaką macie pewność, że pokrywa on wszystko to, co robi kod?&#8221;. Jako stary wyjadacz &#8222;<a href="http://pl.wikipedia.org/wiki/Testowanie_mutacyjne" target="_blank">testowania mutacyjnego</a>&#8221; nie daję się zbić z tropu i przystępujemy do &#8222;testowania&#8221; naszego testu poprzez celowe wprowadzanie błędów do kodu produkcyjnego i obserwowanie czy nasz test to wykrywa. Martin miał rację.. Są pewne modyfikacje, których nasz test nie wyłapuje. Resztę sesji spędzamy na udoskonalaniu naszego testu.</li>
</ul>
<li>Sesja 3</li>
<ul>
<li>W tej sesji skupiliśmy się na refakoryzacji kodu. Konkretnie<strong> poprawialiśmy czytelność (łatwość zrozumienia) instrukcji warunkowych</strong>, np. &#8222;<em>if (roll % 2 != 0)</em>&#8221; na &#8222;if(canLeavePenatlyBoxAfter(roll)&#8221;</li>
</ul>
</ul>
<ul>
<li>Sesja 4</li>
<ul>
<li><strong>Refaktoryzacja kodu małymi kroczkami</strong>. Reguły: Ustaw timer na 2 minuty. Pracuj z kodem i wrzucaj swoje zmiany do repozytorium kodu. Jeśli w ciągu 2 minut nie zdążysz wrzucić niczego do repo, cofnij swoje zmiany do momentu ostatniego commitu w repo i rozpocznij od nowa. Po drugim razie, gdy dopadł nasz timer, pracowaliśmy w naprawdę malutkich kroczkach i w sumie daliśmy radę! Generalnie, im częściej wrzucamy nasze zmiany do repo tym lepiej (mniej konfliktów, częstszy feedback), także myślę że ćwiczenie wykonane w tej sesji było wartościowe.</li>
</ul>
<li>Sesja 5</li>
<ul>
<li>Celem tej sesji było zidentyfikowanie fragmentów kodu, które dało się zamienić w <strong>&#8222;<a href="http://en.wikipedia.org/wiki/Pure_function">pure functions</a>&#8222;.</strong> Podczas tej sesji pracowałem w Rubym (wszystkie poprzednie były w Javie) i odczułem na własnej skórze, jak wspaniałe wsparcie do refactoringu ma Java.. (Np. IDE w Javie było dużo sprytniejsze w znajdywaniu duplikacji w kodzie). Jedną z zalet &#8222;wyciąganych&#8221; przez nas funkcji było to, że można je było stosunkowo łatwo przetestować.</li>
</ul>
<li>Sesja 6</li>
<ul>
<li>W czasie tej sesji, po zidentyfikowaniu i stworzeniu kilku &#8222;pure functions&#8221; mieliśmy przyjrzeć się im bliżej i zastanowić się, gdzie można by je przenieść &#8211; jednym słowem,<strong> zaczęliśmy &#8222;wyciągać klasy&#8221;.</strong> Cały schemat refactoringu można opisać mniej więcej tak:</li>
<ul>
<li>Extract method</li>
<li>Replace fields with parameters to the method</li>
<li>Make method static</li>
<li>Test the method</li>
<li>Find a new home for the method, move to (and maybe create) new class</li>
</ul>
<li>Alternatywnym sposobem, wypróbowanym przez niektórych uczestników było zastosowanie refaktoringu &#8222;pull up&#8221; i przeciągnięcie pewnych funkcjonalności do &#8222;nowej&#8221; klasy bazowej, a następnie zastosowanie refakoryzacji &#8222;replace inheritance with delegation&#8221; &#8211; coś, co mam w najbliższym czasie przetestować.</li>
</ul>
</ul>
<div><img class="aligncenter" src="https://lh5.googleusercontent.com/-BLidQBIMc90/T4ne4pLp1oI/AAAAAAAACZ0/XdKSB47acPk/s833/DSC_5762.JPG" alt="" width="413" height="274" /></div>
<h2>Scala</h2>
<p>Po trzeciej sesji mieliśmy długi lunch, w czasie którego rozmawiałem o Scali. Temat, który mnie interesował to<strong> testowanie i jak w podejściu funkcyjnym radzimy sobie z problematycznymi zależnościami kodu</strong>, takimi jak baza danych czy odwołania do innych systemów. W podejściu obiektowym, używamy w tym celu &#8222;mocków&#8217;. Z tego co zrozumiałem, w Scali ważnym pojęciem jest kompozycja funkcji, i właśnie odpowiednio korzystając z kompozycji możemy &#8222;wstrzykiwać&#8221; albo prawdziwą funkcję, która pobiera dane z bazy danych, albo funkcję &#8222;testową&#8221;, która tylko udaję bazę danych. I tak testowanie takiego systemu sprowadza się do przetestowania funkcji, z których składa się nasz system na poziomie jednostkowym, a następnie przetestowanie całego systemu (złożonej funkcji), gdzie być może niektóre funkcje zastąpione są zmienikami na potrzeby testów.</p>
<h2>Organizacja</h2>
</div>
<p>Jeśli chodzi o organizację tym razem kupiliśmy małe śniadanie w piekarni a na obiad poszliśmy do restauracji &#8211; wyszło to dużo taniej niż zamawianie kateringu.</p>
<p>Generalnie, bardzo nam się podobało i już myślimy o kolejnym evencie, może w czerwcu?</p>
<p><strong>Zachęcam Cię do organizacji Legacy Code Retreat w swoim mieście!</strong></p>
<p>Ps. Zdjęcia z wczoraj można zobaczyć<strong> <a href="https://plus.google.com/photos/110885273550512513483/albums/5731356448757883889" target="_blank">tutaj</a>..</strong></p>
<p>&nbsp;</p>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-6050"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Flegacy-code-retreat-berlin%2F&amp;linkname=Legacy%20Code%20Retreat%20Berlin" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Flegacy-code-retreat-berlin%2F&amp;linkname=Legacy%20Code%20Retreat%20Berlin" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Flegacy-code-retreat-berlin%2F&amp;linkname=Legacy%20Code%20Retreat%20Berlin" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Flegacy-code-retreat-berlin%2F&amp;linkname=Legacy%20Code%20Retreat%20Berlin" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Flegacy-code-retreat-berlin%2F&amp;linkname=Legacy%20Code%20Retreat%20Berlin" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Flegacy-code-retreat-berlin%2F&amp;title=Legacy%20Code%20Retreat%20Berlin" id="wpa2a_4">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2012/programowanie/legacy-code-retreat-berlin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Strategia testowania projektu</title>
		<link>http://agilesurfing.pl/2012/programowanie/strategia-testowania-projektu/</link>
		<comments>http://agilesurfing.pl/2012/programowanie/strategia-testowania-projektu/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 21:46:01 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Programowanie]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=594</guid>
		<description><![CDATA[Niedawno dokumentowaliśmy w pracy strategię testowania naszej aplikacji. Przy okazji zastanowiliśmy się jak wyglądałby &#8222;idealny&#8221; proces. W tym wpisie opiszę co wymyśliliśmy. Nasz idealny proces powinien: Zapewniać szybką informację zwrotną na temat jakości. Kierować się zasadą &#8222;jakości wbudowanej w proces&#8222;. Kontekst naszego systemu: Nasza aplikacja dostarcza API wykorzystywane przez inne systemy Nasza aplikacja używa API [...]]]></description>
			<content:encoded><![CDATA[<p>Niedawno dokumentowaliśmy w pracy strategię testowania naszej aplikacji. Przy okazji zastanowiliśmy się jak wyglądałby &#8222;idealny&#8221; proces. W tym wpisie opiszę co wymyśliliśmy.</p>
<p><strong>Nasz idealny proces powinien:</strong></p>
<ul>
<li>Zapewniać <a href="http://prezi.com/urkus7bs4gqw/crazy-fast-build-times/" target="_blank">szybką</a> informację zwrotną na temat jakości.</li>
<li>Kierować się zasadą &#8222;<a href="http://www.lean-manufacturing-junction.com/quality-built-in.html" target="_blank">jakości wbudowanej w proces</a>&#8222;.</li>
</ul>
<div><strong>Kontekst naszego systemu:</strong></div>
<div>
<ul>
<li>Nasza aplikacja dostarcza API wykorzystywane przez inne systemy</li>
<li>Nasza aplikacja używa API innych systemów</li>
<li>Nasza aplikacja posiada webowy interfejs użytkownika</li>
</ul>
<div><strong>Idealny proces</strong></div>
<div>
<ul>
<li>Identyfikacja wymagań</li>
<ul>
<li>Klient, programista i tester dokumentują wymagania w postaci <a href="http://en.wikipedia.org/wiki/User_story" target="_blank">historyjek</a></li>
<li>Do historyjek dodane są<strong> kryteria akceptacji</strong>. Ponieważ programista i tester pomagali klientowi w formułowaniu tych kryteriów, zostały zadane pytania na temat wyjątkowych przypadków (n<em>p. Co system powinien zrobić jeśli szesnastolatek próbuje kupić produkt o wartości powyżej 10tyś zł</em>).</li>
</ul>
<li>Implementacja</li>
<ul>
<li><strong>Programiści pracują w parach.</strong> Dzięki temu wyłapywane jest szybko wiele &#8222;ludzkich błędów&#8221; (wynikających np. ze zmęczenia, rozproszenia etc.)</li>
<li>Stosujemy <strong>TDD</strong>, co wpływa korzystnie na <a title="Automatyczne testowanie kodu – jak to robić?" href="http://agilesurfing.pl/2011/programowanie/automatyczne-testowanie-kodu-jak-to-robic/" target="_blank">jakość wewnętrzną oprogramowania</a>.</li>
<li>W wyniku stosowania TDD mamy<strong> całkowite pokrycie kodu testami jednostkowymi</strong>. Testy te dostarczają szybką informację zwrotną, gdy programista próbuje zmienić kod w sposób, który psuje jakąś inną istniejącą funkcjonalność.</li>
<li>Funkcjonalność naszego systemu<strong> dokumentujemy w postaci automatycznych scenariuszy</strong>. Testy te sprawdzają działanie całego naszego systemu,<strong> natomiast nie testują systemów z którymi nasz system się integruje</strong>. Jeśli nasz system A używa systemu B, to nasze testy nie będą korzystały z prawdziwego systemu B. Zamiast tego, napiszemy &#8222;sztuczną&#8221; wersję systemu B, która będzie działać w pamięci. Dzięki temu będzie wykonywać się szybko. (Dodatkowo, jeśli system B to system do płatności, to nie chcemy żeby w rezultacie wykonania naszych testów obciążone zostały prawdziwe karty kredytowe).</li>
<li>Jeśli implementowana przez nas funkcjonalność wymaga usług systemu zewnętrznego, to tworzymy sztuczną wersję tego systemu działającą w pamięci. <strong>By mieć pewność, że ta sztuczna wersja zachowuje się tak samo jak prawdziwy system tworzymy testy <a href="http://martinfowler.com/articles/consumerDrivenContracts.html" target="_blank">CDC</a></strong>. Testy te dokumentują kontrakt, jaki oczekujemy że system zewnętrzny nam dostarczy. Testy CDC powinny być włączone do systemu ciągłej integracji i powinny testować prawdziwy zewnętrzny system oraz naszą sztuczną wersję. Tworzony przez nas testy CDC są przydatne dla programistów tworzących systemy, z których usług korzystamy, ponieważ informują one ich gdy ich nowe zmiany nie są zgodne z kontraktem, który nasz system oczekuje względem ich systemu.</li>
<li>Po skończeniu implementacji para zaprosi kogoś z zespołu i pokaże mu działającą funkcjonalność (mini demo). W tym kroku mogą zostać szybko wykryte ewentualne braki lub błędy, które zostaną natychmiast poprawione.</li>
</ul>
<li>Ciągła integracja</li>
<ul>
<li>Po każdym commicie do repozytorium kodu uruchamiane są wszystkie testy jednostkowe, automatyczne scenariusze, testy CDC. W poprzednim kroku dowiedliśmy, że system działał na maszynie konkretnego programisty. Teraz mamy pewność że działa on również na innych komputerach (a więc wszystko co jest potrzebne do poprawnego działania systemu zostało dodane do repozytorium kodu).</li>
<li>Nasz system dostarcza usług innych systemom. Inne zespoły dostarczyły nam ich testy CDC i w ramach ciągłej integracji zostaną one również uruchomione. W ten sposób wiemy, że &#8222;nie psujemy&#8221; innych systemów.</li>
</ul>
<li>Środowisko testowe &#8211; klon środowiska produkcyjnego</li>
<ul>
<li>Te środowisko jest maksymalnie zbliżone w konfiguracji do środowiska produkcyjnego. Jeśli na produkcji nasza aplikacja jest zreplikowana na kilku serwerach, to tutaj również będzie to miało miejsce. Również jeśli nasza aplikacja korzysta z systemów zewnętrznych, to w tym środowisku będziemy używać ich &#8222;prawdziwych&#8221; (testowych) wersji. A propo wersji, wersje tych systemów będą takie same jak aktualnie na produkcji.</li>
<li>Nowa wersja naszej aplikacji będzie wgrywana w sposób automatyczny i w taki sam sposób w jaki będzie to miało miejsce na produkcji. Oznacza to, że w tym kroku przetestujemy naszą procedurę aktualizacji do nowej wersji.</li>
<li>By pomóc w automatycznej weryfikacji poprzedniego kroku użyjemy &#8222;<a href="http://searchwindevelopment.techtarget.com/definition/smoke-testing" target="_blank">testów dymnych</a>&#8222;. Np. szybki automatyczny test sprawdzający, że jesteśmy w stanie się zalogować.</li>
<li>Na tym środowisku odbędą się manualne <a href="http://en.wikipedia.org/wiki/Exploratory_testing" target="_blank">testy eksploracyjne</a>. W przypadku znalezienia jakiś problemów wrócimy do kroku implementacji, gdzie dodamy brakujące testy jednostkowe lub scenariusze dokumentujące problem a następnie go naprawimy. Testy eksploracyjne skupiają się na &#8222;szukaniu dziury w całym&#8221; (głównie) w nowej funkcjonalności. Nie są to &#8222;nudne, powtarzalne&#8221; testy manualny, te zostały zautomatyzowane.</li>
<li>Gdy zespół uważa, że historyjka jest gotowa i działa, zostanie ona zaprezentowana klientowi.</li>
</ul>
<li>Produkcja</li>
<ul>
<li>W poprzednich krokach przeszły wszystkie testy automatyczne, zespół wykonał testy eksploracyjne a klient jest zadowolony. <a href="http://www.thoughtworks-studios.com/go-agile-release-management" target="_blank">Za pomocą jednego kliknięcia </a>wrzucamy naszą nową wersję na produkcję. W ramach tego kliknięcia jeszcze raz wykonają się automatyczne &#8222;testy dymne&#8221;.</li>
<li>Nasz zespół działa w modelu <a href="http://en.wikipedia.org/wiki/DevOps" target="_blank">devops</a> i  jesteśmy współodpowiedzialni za poprawne działania naszego systemu na produkcji.</li>
<li>W pokoju zespołu stoją monitory wyświetlające aktualny stan produkcji (np. natężenie ruchu). Nasz system potrafi sam się badać (health check) i sygnalizuje problem np. gdy nie może uzyskać połączenia z bazą danych.</li>
<li>Dodatkowo, co dziennie / raz na tydzień wysyłane są specjalne raporty, dokumentujące użycie systemu. Wszelkie anomalie pozwalają wychwycić ewentualne subtelne problemy.</li>
<li>Mamy stały dostęp do logów naszego systemu oraz automatyczny raport, który wyłapuje wszelkie &#8222;wyjątki&#8221; w logach.</li>
</ul>
<li>Środowisko testowe dla zespołów integrujących się z naszym systemem</li>
<ul>
<li>Poprzednio opisałem środowisko do testów eksploracyjnych. Inne zespoły również muszą testować ich systemy w zestawieniu z naszym systemem. Dostarczamy im wersję naszego systemu, która jest taka sama jak wersja aktualnie znajdującą się na produkcji. Dzięki temu inne zespoły nie mają potrzeby testowania &#8222;na produkcji&#8221;.</li>
</ul>
</ul>
<div><strong>Jak szybko możemy wrzucić prostą zmianę na produkcję?</strong></div>
<div>Wyobraźmy sobie, że nasz system akceptował tylko rejestracje od użytkowników powyżej 21 roku życia. Klient chce to zmienić na 18 lat. Jak szybko w &#8222;bezpieczny&#8221; sposób możemy to zmianę wprowadzić? Korzystając z procesu powyżej mogłoby to wyglądać tak:</div>
<div>
<ul>
<li>Klient tworzy historyjkę &#8222;Jako nowy użytkownik systemu chcę mieć możliwość zarejestrowania się gdy mam 18 lat&#8221;. Tester i programista nie widzą problemów. Czas trwania, 10 minut.</li>
<li>Dwóch programistów od razu zabiera się do pracy. Zmiana w jednym miejscu z 21 na 18. Czas trwania 10 minut, w tym uaktualnienie testów jednostkowych i scenariuszy.</li>
<li>Po wrzuceniu zmiany do repozytorium kodu uruchomienie wszystkich testów i scenariuszy. Czas trwania 5 minut.</li>
<li>Wrzucenie na środowisko testowe. Demo dla klienta. Czas trwania, 10 minut. Klient jest zadowolony.</li>
<li>Wrzucenie na produkcję za pomocą jednego kliknięcia. Czas trwania, poniżej 1 minuty.</li>
</ul>
<div>Czas trwania od pomysłu do wersji używanej przez użytkowników &#8211; <strong>mniej niż 40 minut! </strong>Mniej niż godzina w aplikacji która integruje się z innymi systemami i jest używana przez inne systemy! Ponieważ nasz proces stworzył sieć bezpieczeństwa (np. testy CDC) i mamy tak duży stopień automatyzacji, proste zmiany jesteśmy wprowadzać w sposób bezpieczny fenomenalnie szybko!</div>
</div>
<div></div>
<div>To co opisałem powyżej &#8222;to nasz wymarzony&#8221; proces. Jak bardzo proces rzeczywisty różni się od tego powyżej? Nie aż tak bardzo.. Usprawnienia musimy wprowadzić:</div>
<div>
<ul>
<li>na etapie &#8222;środowiska testowego&#8221; (bardziej je zautomatyzować i upodobnić do produkcyjnego)</li>
<li>Mamy dodatkową fazę testów &#8222;end-to-end&#8221; wykonywaną przez zewnętrzny zespół testerów. Z tej fazy chcemy zupełnie zrezygnować (zastąpiona przez automatyczne testy CDC i testy eksploracyjne wykonywane przez nasz zespół).</li>
<li>Położyć większy nacisk na testy CDC, w tym zachęcić naszych klientów do dostarczenia takowych.</li>
</ul>
</div>
</div>
</div>
<div>Ciekaw jestem, czy u Ciebie proces wygląda podobnie do opisanego powyżej? A może jest zupełnie inny?</div>
<p>Ps. Jakiś czas temu opisałem na tym blogu różne <a title="Automatyczne testowanie kodu – jak to robić?" href="http://agilesurfing.pl/2011/programowanie/automatyczne-testowanie-kodu-jak-to-robic/" target="_blank">rodzaje testów automatycznych</a>.</p>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-5950"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Fstrategia-testowania-projektu%2F&amp;linkname=Strategia%20testowania%20projektu" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Fstrategia-testowania-projektu%2F&amp;linkname=Strategia%20testowania%20projektu" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Fstrategia-testowania-projektu%2F&amp;linkname=Strategia%20testowania%20projektu" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Fstrategia-testowania-projektu%2F&amp;linkname=Strategia%20testowania%20projektu" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Fstrategia-testowania-projektu%2F&amp;linkname=Strategia%20testowania%20projektu" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fprogramowanie%2Fstrategia-testowania-projektu%2F&amp;title=Strategia%20testowania%20projektu" id="wpa2a_6">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2012/programowanie/strategia-testowania-projektu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Opowiem o Coding Dojo w Malmo!</title>
		<link>http://agilesurfing.pl/2012/agile/opowiem-o-coding-dojo-w-malmo/</link>
		<comments>http://agilesurfing.pl/2012/agile/opowiem-o-coding-dojo-w-malmo/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 17:15:46 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[konferencje]]></category>
		<category><![CDATA[coding dojo]]></category>
		<category><![CDATA[konferencja]]></category>
		<category><![CDATA[xp2012]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=589</guid>
		<description><![CDATA[O Coding Dojo które mamy w pracy pisałem już na tym blogu (Coding Dojo, Coding Dojo 2). W maju opowiem o tym Coding Dojo na żywo na konferencji XP2012! Najpierw we wtorek rano przedstawię &#8222;Experience report: Coding Dojos @ Nokia&#8221; gdzie opowiem dlaczego mamy dojo, jak to się wszystko zaczęło,  jak nasze dojo wygląda i [...]]]></description>
			<content:encoded><![CDATA[<p>O Coding Dojo które mamy w pracy pisałem już na tym blogu (<a title="Coding Dojo" href="http://agilesurfing.pl/2011/programowanie/coding-dojo/">Coding Dojo</a>, <a title="Coding Dojo (cz. 2)" href="http://agilesurfing.pl/2011/programowanie/coding-dojo-cz-2/">Coding Dojo 2</a>).</p>
<p>W maju opowiem o tym Coding Dojo na żywo na konferencji <a href="http://xp2012.org/" target="_blank">XP2012</a>!</p>
<p>Najpierw we wtorek rano przedstawię &#8222;Experience report: Coding Dojos @ Nokia&#8221; gdzie opowiem dlaczego mamy dojo, jak to się wszystko zaczęło,  jak nasze dojo wygląda i czego się nauczyliśmy a propo prowadzenia dojo. Następnie w środę po południu poprowadzę dojo, gdzie teorię zastosujemy w praktyce.</p>
<p>Mam nadzieję, do zobaczenia na XP2012 w Malmo !</p>
<p>&nbsp;</p>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-5900"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fopowiem-o-coding-dojo-w-malmo%2F&amp;linkname=Opowiem%20o%20Coding%20Dojo%20w%20Malmo%21" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fopowiem-o-coding-dojo-w-malmo%2F&amp;linkname=Opowiem%20o%20Coding%20Dojo%20w%20Malmo%21" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fopowiem-o-coding-dojo-w-malmo%2F&amp;linkname=Opowiem%20o%20Coding%20Dojo%20w%20Malmo%21" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fopowiem-o-coding-dojo-w-malmo%2F&amp;linkname=Opowiem%20o%20Coding%20Dojo%20w%20Malmo%21" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fopowiem-o-coding-dojo-w-malmo%2F&amp;linkname=Opowiem%20o%20Coding%20Dojo%20w%20Malmo%21" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fopowiem-o-coding-dojo-w-malmo%2F&amp;title=Opowiem%20o%20Coding%20Dojo%20w%20Malmo%21" id="wpa2a_8">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2012/agile/opowiem-o-coding-dojo-w-malmo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QCon 2012</title>
		<link>http://agilesurfing.pl/2012/agile/qcon-2012/</link>
		<comments>http://agilesurfing.pl/2012/agile/qcon-2012/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 21:29:01 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[konferencje]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=577</guid>
		<description><![CDATA[To już mój trzeci QCon! : ) Slajdy z wykładów są tutaj a w ciągu kilku miesięcy powinny zacząć pojawiać się nagrania wideo na infoq.com Moje wrażenia / notatki.. Kompromis &#8211; wszystkie nasze decyzje wiążą się z kompromisami. Ważne jest, by być świadomym na jaki kompromis idziemy. Erlang - konferencję rozpocząłem warsztatami z podstaw Erlanga. Jeśli [...]]]></description>
			<content:encoded><![CDATA[<p>To już mój trzeci QCon! : )</p>
<p>Slajdy z wykładów są <a href="http://qconlondon.com/london-2012/schedule/wednesday.jsp" target="_blank">tutaj</a> a w ciągu kilku miesięcy powinny zacząć pojawiać się nagrania wideo na<a href="http://www.infoq.com/" target="_blank"> infoq.com</a></p>
<p>Moje wrażenia / notatki..</p>
<p><strong>Kompromis</strong> &#8211; wszystkie nasze decyzje wiążą się z <a href="http://qconlondon.com/dl/qcon-london-2012/slides/DanNorth_DecisionsDecisions.pdf" target="_blank">kompromisami</a>. Ważne jest, by być świadomym na jaki kompromis idziemy.</p>
<p><strong>Erlang</strong> - konferencję rozpocząłem <a href="http://qconlondon.com/london-2012/presentations/show_presentation.jsp?oid=3734" target="_blank">warsztatami</a> z podstaw Erlanga. Jeśli chciałbyś dowiedzieć się więcej na temat języka zajrzyj <a href="http://learnyousomeerlang.com/" target="_blank">tutaj</a>.</p>
<p>Bardzo podobała mi się prezentacja na temat <a href="http://qconlondon.com/dl/qcon-london-2012/slides/JesperRichter-Reichhelm_GamesForTheMassesHowDevOpsAffectsArchitectureDesign.pdf" target="_blank">Wooga</a>. Wooga tworzy gry na Facebooka i są drudzy na świecie. Chłopaki używają tam (między innymi) Erlanga i Rubiego. Każdy zespół opiekuje się jedną grą. W szczególności ciekawy i bliski sercu wydał mi się ich system wartości:</p>
<ul>
<li>Małe zespoły lepsze niż duże</li>
<li>Współpraca pomiędzy zespołami lepsza niż współzawodnictwo</li>
<li>Wszechstronnie uzdolnieni pracownicy lepsi niż specjaliści</li>
<li>Zmniejszanie nakładu pracy lepsze niż zmniejszanie kosztów</li>
<li>Innowacyjność lepsza niż zmniejszanie ryzyka</li>
</ul>
<div><strong>Warsztat z &#8222;wprowadzania zmian&#8221; i warsztat z retrospekcji. </strong>We wtorek dwa warsztaty prowadzone przez <a href="http://qconlondon.com/london-2012/speaker/Rachel+Davies" target="_blank">Rachel</a>. Reachel poprowadziła warsztaty w bardzo dobry sposób. W szczególności podobało mi się jak przed każdym ćwiczeniem tłumaczyła co i dlaczego będziemy robić. (tak jak to jest zalecane <a href="http://pragprog.com/book/dlret/agile-retrospectives" target="_blank">w tej książce</a> )</div>
<p>Wrażenie po warsztacie z retrospekcji: W Nokii robimy to całkiem dobrze &#8211; wiedza prezentowana na warsztacie zgadzała się z naszą praktyką.</p>
<p>Jeśli chodzi o wprowadzanie zmian to poruszone zostały między innymi te kwestie:</p>
<div>
<ul>
<li>zanim zaproponujesz rozwiązanie &#8211; zamień się w słuch. Najpierw zrozum problem, dopiero potem sugeruj.</li>
<li>wczuj się w drugą stronę &#8211; co jest dla nich ważne? dlaczego mieliby zrobić tak, jak proponujesz?</li>
<li>świeć przykładem</li>
<li>znajdź sprzymierzeńców, osoby zainteresowane tym co chcesz zrobić (nie koniecznie w swoim zespole)</li>
<li>by zbadać poparcie dla inicjatywy możesz użyć &#8222;głosowanie dłonią&#8221;. Pięć palców &#8211; w pełni popieram i będę aktywnie wspierał inicjatywę. Pięść &#8211; weto!</li>
<li>Stwórz mapę sił które pomagają / przeszkadzają we wprowadzeniu twojej zmiany. Czy możesz coś zrobić by zwiększyć oddziaływanie sił pozytywnych lub/i zneutralizować działanie sił negatywnych?</li>
<li>bądź cierpliwy &#8211; wprowadzanie zmian trwa długo</li>
</ul>
</div>
<p><strong>10 sekundowy build </strong>- Mamy rok 2012, build twojego pojedynczego projektu powinien trwać <a href="http://prezi.com/urkus7bs4gqw/crazy-fast-build-times/" target="_blank">nie więcej niż 10 sekund</a> (w tym kompilacja i wszystkie testy).</p>
<p>We wtorek wieczorem odwiedziłem <a href="http://xpday-london.editme.com/eXtremeTuesdayClub" target="_blank">XTC</a> gdzie miałem okazję posłuchać <a href="http://qconlondon.com/london-2012/presentation/The%20monkeys%20and%20the%20fire%20hose:%20maintaining%20an%20XP%20team%20over%207%20years" target="_blank">o 7 letnim projekcie  XP</a>. Warto było &#8211; słuchało się jak gawędy przy ognisku.</p>
<p>Moją uwagę przykuła również <a href="http://qconlondon.com/dl/qcon-london-2012/slides/KrisLander_and_SukiBains_230IterationsLater.pdf" target="_blank">sesja na temat długiego projektu w Sky</a>. Początkowo bardzo udany, projekt ten przeszedł przez fazę stagnacji, gdzie zespół co prawda dostarczał regularnie historyjki, ale energia w zespole znacznie spadła. Ludzie przestali np. regularnie praktykować programowanie w parach. Nie było już słychać tak dużo konwersacji w pokoju zespołu, ludzie siedzieli z nosami w monitorach. Padło określenie &#8222;delivery zombi&#8221;. Opisywana sytuacja brzmiała trochę znajomo, przypomniał mi się <a title="Powiew świeżości" href="http://agilesurfing.pl/2011/agile/powiew-swiezosci/" target="_blank">mój post na podobny temat</a>. Jednym ze składników antidotum było ponowne określenie wizji i wyznaczenie celów biznesowych. Pomogło również &#8222;wstrzyknięcie&#8221; świeżej, zmotywowanej krwi w postaci nowego, zmotywowanego członka zespołu.</p>
<p>Na razie tyle <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-5780"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fqcon-2012%2F&amp;linkname=QCon%202012" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fqcon-2012%2F&amp;linkname=QCon%202012" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fqcon-2012%2F&amp;linkname=QCon%202012" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fqcon-2012%2F&amp;linkname=QCon%202012" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fqcon-2012%2F&amp;linkname=QCon%202012" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fqcon-2012%2F&amp;title=QCon%202012" id="wpa2a_10">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2012/agile/qcon-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Artykuł o programowaniu w parach</title>
		<link>http://agilesurfing.pl/2012/agile/artykul-o-programowaniu-w-parach/</link>
		<comments>http://agilesurfing.pl/2012/agile/artykul-o-programowaniu-w-parach/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 21:12:57 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[pomodoro]]></category>
		<category><![CDATA[programowanie w parach]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=568</guid>
		<description><![CDATA[W piątek miałem okazję przeczytać bardzo ciekawy artykuł o programowaniu w parach. W skrócie: Opisany zespół, miał największą wydajność i najmniej bugów gdy: Historyjki były dewelopowane przez programistów o najmniejszej wiedzy domenowej (w obszarze danej historyjki) Historyjki były dewelopowane przez pary, które same wybierały nad czym chcą pracować Historyjki nie były przypisane konkretnym osobą, cały [...]]]></description>
			<content:encoded><![CDATA[<p>W piątek miałem okazję przeczytać bardzo ciekawy artykuł o <a href="http://csis.pace.edu/~grossman/dcs/XR4-PromiscuousPairing.pdf" target="_blank">programowaniu w parach</a>.</p>
<p><strong>W skrócie</strong>: Opisany zespół, miał największą wydajność i najmniej bugów gdy:</p>
<ul>
<li>Historyjki były dewelopowane przez programistów o <strong>najmniejszej</strong> wiedzy domenowej (w obszarze danej historyjki)</li>
<li>Historyjki były dewelopowane przez pary, które same wybierały nad czym chcą pracować</li>
<li>Historyjki nie były przypisane konkretnym osobą, cały zespół był odpowiedzialny za historyjkę</li>
<li>Pary rotowały co ~2 godziny. (Osoba która była dłużej w parze opuszcza parę).</li>
</ul>
<div>W  podobny sposób pracowałem w czasie swojej praktyki w Pinesoft. Po 2 pełnych <a href="http://agilesurfing.pl/2010/agile/pomodoro-skup-sie/" target="_blank">cyklach Pomodoro</a> rotowaliśmy pary. Praca była bardzo intensywna, ale mega satysfakcjonująca.</div>
<div>Gdy uda mi się przekonać mój obecny zespół, wypróbujemy powyższy system z rotowaniem par po pełnym cyklu pomodoro (około 2h).</div>
<div>A Ty jakie masz doświadczenia z pair programmingiem?</div>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-5690"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fartykul-o-programowaniu-w-parach%2F&amp;linkname=Artyku%C5%82%20o%20programowaniu%20w%20parach" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fartykul-o-programowaniu-w-parach%2F&amp;linkname=Artyku%C5%82%20o%20programowaniu%20w%20parach" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fartykul-o-programowaniu-w-parach%2F&amp;linkname=Artyku%C5%82%20o%20programowaniu%20w%20parach" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fartykul-o-programowaniu-w-parach%2F&amp;linkname=Artyku%C5%82%20o%20programowaniu%20w%20parach" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fartykul-o-programowaniu-w-parach%2F&amp;linkname=Artyku%C5%82%20o%20programowaniu%20w%20parach" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fartykul-o-programowaniu-w-parach%2F&amp;title=Artyku%C5%82%20o%20programowaniu%20w%20parach" id="wpa2a_12">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2012/agile/artykul-o-programowaniu-w-parach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Praktyki stosowane w moim zespole</title>
		<link>http://agilesurfing.pl/2012/agile/praktyki-stosowane-w-moim-zespole/</link>
		<comments>http://agilesurfing.pl/2012/agile/praktyki-stosowane-w-moim-zespole/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 20:56:31 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[praktyki]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[wrocław]]></category>
		<category><![CDATA[wykład]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=561</guid>
		<description><![CDATA[W ramach &#8222;Poranku z Nokią i z SEnSem&#8221; poprowadziłem na PWr skierowany do studentów  wykład o praktykach stosowanych w moim zespole. Ponieważ to jakie praktyki najlepiej się sprawdzą zależy od naszego kontekstu, zacząłem od opisania sytuacji mojego zespołu. Zespół w którym jestem jest mały (~7 osób) wszyscy siedzimy w jednym pokoju mamy wewnętrznego klienta / [...]]]></description>
			<content:encoded><![CDATA[<p>W ramach &#8222;<a href="http://www.e-informatyka.pl/wiki/News_040112_2" target="_blank">Poranku z Nokią i z SEnSem</a>&#8221; poprowadziłem na PWr skierowany do studentów  wykład o praktykach stosowanych w moim zespole.</p>
<p>Ponieważ to jakie praktyki najlepiej się sprawdzą zależy od naszego kontekstu, zacząłem od opisania sytuacji mojego zespołu.</p>
<p>Zespół w którym jestem jest</p>
<ul>
<li>mały (~7 osób)</li>
<li>wszyscy siedzimy w jednym pokoju</li>
<li>mamy wewnętrznego klienta / product ownera. Siedzi z nami na tym samym piętrze i ma dla nas czas</li>
<li>tworzymy ważny, ale wewnętrzny system</li>
</ul>
<p>Dla każdej praktyki powiedziałem:</p>
<ul>
<li>na czym polega</li>
<li>dlaczego/po co ją stosujemy</li>
<li>&#8222;dobre rady&#8221;</li>
</ul>
<p>Oto lista praktyk, które aktualnie stosujemy w moim zespole:</p>
<p><span id="more-561"></span></p>
<p><strong>Codziennie</strong></p>
<ul>
<li>Stand-up</li>
<li><a title="Programowanie w parach" href="http://agilesurfing.pl/2010/agile/programowanie-w-parach/">Pair programming</a></li>
<li><a title="Automatyczne testowanie kodu – jak to robić?" href="http://agilesurfing.pl/2011/programowanie/automatyczne-testowanie-kodu-jak-to-robic/">TDD</a></li>
<li>Continuous Integration</li>
<li>Continuous Delivery</li>
<li><a title="Pokój mojego zespołu" href="http://agilesurfing.pl/2011/agile/pokoj-mojego-zespolu/">Story wall / Story lifecycle</a></li>
<li>Work in progress limits</li>
<li>Information radiators</li>
<li>Learning huddle</li>
</ul>
<p><strong>Raz na tydzień</strong></p>
<ul>
<li><a title="Coding Dojo (cz. 2)" href="http://agilesurfing.pl/2011/programowanie/coding-dojo-cz-2/">Coding dojo</a></li>
<li>Team lunch</li>
<li>Dev-ops stand-up</li>
</ul>
<p><strong>Raz na dwa tygodnie</strong></p>
<ul>
<li><a title="Efektywny feedback" href="http://agilesurfing.pl/2011/agile/efektywny-feedback/">1-1 feedback</a></li>
</ul>
<p><strong>Raz na miesiąc</strong></p>
<ul>
<li><a title="Retrospekcje – najważniejsze narzędzie w Agile?" href="http://agilesurfing.pl/2011/agile/retrospekcje-najwazniejsze-narzedzie-w-agile/">Retrospekcja</a></li>
</ul>
<p><strong>Około raz na 3 miesiące</strong></p>
<ul>
<li>Incepcja</li>
<li>Estymacja</li>
<li>Story mapping</li>
<li>Persony</li>
</ul>
<p><strong>Na żądanie / Wg potrzeby</strong></p>
<ul>
<li>Technical spike</li>
<li>Demo / Show case</li>
<li>Public code review</li>
<li>Team charter</li>
</ul>
<p>A jakie praktyki stosuje Twój zespół?</p>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-5620"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fpraktyki-stosowane-w-moim-zespole%2F&amp;linkname=Praktyki%20stosowane%20w%20moim%20zespole" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fpraktyki-stosowane-w-moim-zespole%2F&amp;linkname=Praktyki%20stosowane%20w%20moim%20zespole" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fpraktyki-stosowane-w-moim-zespole%2F&amp;linkname=Praktyki%20stosowane%20w%20moim%20zespole" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fpraktyki-stosowane-w-moim-zespole%2F&amp;linkname=Praktyki%20stosowane%20w%20moim%20zespole" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fpraktyki-stosowane-w-moim-zespole%2F&amp;linkname=Praktyki%20stosowane%20w%20moim%20zespole" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2012%2Fagile%2Fpraktyki-stosowane-w-moim-zespole%2F&amp;title=Praktyki%20stosowane%20w%20moim%20zespole" id="wpa2a_14">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2012/agile/praktyki-stosowane-w-moim-zespole/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Powiew świeżości</title>
		<link>http://agilesurfing.pl/2011/agile/powiew-swiezosci/</link>
		<comments>http://agilesurfing.pl/2011/agile/powiew-swiezosci/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 20:38:19 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=519</guid>
		<description><![CDATA[Jak uniknąć stagnacji, rutyny, braku nowości itp. w pracy? Wczoraj rozmawiając z kolegą zaproponowałem zrobienie prostej aplikacji. Odpowiedział: &#8222;O ciekawe! Myśleliśmy już o tym &#8211; super pomysł&#8230;. Kiedyś mieliśmy &#8222;dni innowacji&#8221;, ale potem z czasem jakoś przestaliśmy je robić. Gdzie podziały się te pomysły?&#8221; Zapewne jest wiele sposobów na podtrzymanie ekscytującej atmosfery w pracy. Oczywiście [...]]]></description>
			<content:encoded><![CDATA[<p>Jak uniknąć stagnacji, rutyny, braku nowości itp. w pracy?</p>
<p>Wczoraj rozmawiając z kolegą zaproponowałem zrobienie prostej aplikacji.</p>
<p>Odpowiedział: &#8222;<em>O ciekawe! Myśleliśmy już o tym &#8211; super pomysł&#8230;. Kiedyś mieliśmy &#8222;dni innowacji&#8221;, ale potem z czasem jakoś przestaliśmy je robić. Gdzie podziały się te pomysły?</em>&#8221;</p>
<p>Zapewne jest wiele sposobów na podtrzymanie ekscytującej atmosfery w pracy.</p>
<p>Oczywiście potrzeba ludzi wkręconych i kochających to co robią. Ale Ci ludzie pozostawieni sami sobie z czasem popadną w rutynę, będą znali się na wylot, będą mieli swoje ulubione techniki i style pracy.</p>
<p>Naszemu zespołowi może pomóc: czytanie książek, blogów, Twittera i wyjazdy na konferencje. To zapewni przypływ świeżych pomysłów.</p>
<p>Ale skąd brać siły na ich wdrażanie w terenie, który jest dobrze zbadany i unormowany? Czasem, zwłaszcza z małymi rzeczami nie jest to problem: &#8222;Spróbujmy przez tydzień programować w parach.. <em>Hmm, czemu nie?</em>&#8222;.</p>
<p>Czasem nie jest to takie proste: &#8222;Spróbujmy wrzucać nasz soft na produkcje jednym kliknięciem myszki.. <em>No co ty, to się nie uda, za dużo biurokracji, próbowaliśmy</em>&#8222;. <strong><em>Każdy wie, że jest coś czego nie da się zrobić, ale przychodzi ktoś kto nie wie, że się nie da i robi to ! &#8221; Albert Einstein. </em></strong>Jednym słowem potrzebujemy studenta <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .. Lub, kogoś z autorytetem i wiedzą że się da, bo zrobił to gdzie indziej: konsultanta.</p>
<p>Na chwilę obecną uważam, że by zapewnić przepływ świeżej krwi w zespole potrzeba: konsultantów, którzy są z zespołem od 3 do 6 miesięcy i studentów. Konsultanci wzbogacą zespół ideami z innych miejsc, w których byli. Studenci będą zadawać pytania. Wszystko to zachwieje ustalonym statusem quo i zapewni jakże potrzebny powiew świeżości.</p>
<p>Masz jakieś doświadczenia lub przemyślenia w tym temacie?</p>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-5200"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fpowiew-swiezosci%2F&amp;linkname=Powiew%20%C5%9Bwie%C5%BCo%C5%9Bci" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fpowiew-swiezosci%2F&amp;linkname=Powiew%20%C5%9Bwie%C5%BCo%C5%9Bci" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fpowiew-swiezosci%2F&amp;linkname=Powiew%20%C5%9Bwie%C5%BCo%C5%9Bci" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fpowiew-swiezosci%2F&amp;linkname=Powiew%20%C5%9Bwie%C5%BCo%C5%9Bci" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fpowiew-swiezosci%2F&amp;linkname=Powiew%20%C5%9Bwie%C5%BCo%C5%9Bci" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fpowiew-swiezosci%2F&amp;title=Powiew%20%C5%9Bwie%C5%BCo%C5%9Bci" id="wpa2a_16">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2011/agile/powiew-swiezosci/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GOTO Aarhus 2011</title>
		<link>http://agilesurfing.pl/2011/programowanie/goto-aarhus-2011/</link>
		<comments>http://agilesurfing.pl/2011/programowanie/goto-aarhus-2011/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 19:23:18 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[konferencje]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[goto]]></category>
		<category><![CDATA[konferencja]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=479</guid>
		<description><![CDATA[Drugi tydzień października spędziłem na konferencji GOTO w Aarhus. Jak zwykle było to bardzo intensywne doświadczenie W telegraficznym skrócie: Niedziela Warsztaty A user user manual z Chrisem Nodderem. Porady na temat tego jak tworzyć przyjazne i łatwe w użytkowaniu oprogramowanie + teoria na temat tego, jak zachowują się użytkownicy i dlaczego. Poniedziałek Google prezentuje nowy język [...]]]></description>
			<content:encoded><![CDATA[<p>Drugi tydzień października spędziłem na konferencji <a href="http://gotocon.com/aarhus-2011/" target="_blank">GOTO</a> w Aarhus. Jak zwykle było to bardzo intensywne doświadczenie <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>W telegraficznym skrócie:</p>
<p><strong>Niedziela</strong></p>
<ul>
<li>Warsztaty<a href="http://agilesurfing.pl/?p=486"> A user user manual z Chrisem Nodderem</a>. Porady na temat tego jak tworzyć przyjazne i łatwe w użytkowaniu oprogramowanie + teoria na temat tego, jak zachowują się użytkownicy i dlaczego.</li>
</ul>
<p><strong>Poniedziałek</strong></p>
<ul>
<li><a href="http://agilesurfing.pl/2011/programowanie/jezyk-opcjonalnie-typowany-dart/">Google prezentuje nowy język programowania &#8211; Dart</a></li>
</ul>
<p><strong>Wtorek</strong></p>
<ul>
<li>TODO</li>
</ul>
<p><strong> Środa</strong></p>
<ul>
<li>TODO</li>
</ul>
<p><strong>Czwartek</strong></p>
<ul>
<li>Warsztaty &#8222;Evolutionary Architecture &#8211; How to Make it Work&#8221; z Martinem Fowlerem i Rebeccom Parsons</li>
<li>Warsztaty &#8221;Influence Strategies for Practitioners&#8221; z Linda Rising</li>
</ul>
<p><strong>Piątek</strong></p>
<ul>
<li>Warsztaty &#8221;Maintaining and Evolving Legacy Systems&#8221; z Frankiem Buschmann</li>
</ul>
<p><strong>Ogólne komentarze i podsumowanie:</strong></p>
<p>W tym roku do materiałów konferencyjnych dołączone zostały dwie małe książeczki: &#8222;The 3 pillars of personal effectiveness&#8221; oraz &#8222;Priming Kanban&#8221; - oryginalne i fajne posunięcie.</p>
<p>I tak na przykład w &#8222;Priming Kanban&#8221; wyczytałem, co robić gdy osiągamy limit &#8222;<a href="http://agilesurfing.pl/2011/agile/wip-limits/" target="_blank">work in progress</a>&#8222;. Jest to moment na dyskusję. Do wyboru mamy albo powiększyć limit (co będzie skutkować zwiększeniem czasu, jaki jest potrzeby by historyjka przewędrowała od &#8222;koncepcji&#8221; do &#8222;wdrożenia&#8221;) albo usprawnić/wspomóc &#8222;wąskie gardło&#8221;. Np. gdy &#8222;testowanie&#8221; jest wąskim gardłem, może jako programiści możemy zautomatyzować wrzucanie nowej wersji na środowisko testowe? Tak czy inaczej, osiągnięcie limitu &#8222;work in progress&#8221; jest pretekstem do dyskusji.</p>
<p>Konferencja to również męczące wydarzenie (pełno wrażeń, codziennie integracja), nie mniej z niecierpliwością czekam na kolejną konferencję organizowaną przez Trifork, QCon 2012 w Londynie <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-4800"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fprogramowanie%2Fgoto-aarhus-2011%2F&amp;linkname=GOTO%20Aarhus%202011" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fprogramowanie%2Fgoto-aarhus-2011%2F&amp;linkname=GOTO%20Aarhus%202011" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fprogramowanie%2Fgoto-aarhus-2011%2F&amp;linkname=GOTO%20Aarhus%202011" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fprogramowanie%2Fgoto-aarhus-2011%2F&amp;linkname=GOTO%20Aarhus%202011" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fprogramowanie%2Fgoto-aarhus-2011%2F&amp;linkname=GOTO%20Aarhus%202011" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fprogramowanie%2Fgoto-aarhus-2011%2F&amp;title=GOTO%20Aarhus%202011" id="wpa2a_18">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2011/programowanie/goto-aarhus-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ALE2011 &#8211; Koordynacja wolontariuszy</title>
		<link>http://agilesurfing.pl/2011/agile/ale2011-koordynacja-wolontariuszy/</link>
		<comments>http://agilesurfing.pl/2011/agile/ale2011-koordynacja-wolontariuszy/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 19:03:26 +0000</pubDate>
		<dc:creator>Grzegorz Dziemidowicz</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[ale2011]]></category>
		<category><![CDATA[berlin]]></category>

		<guid isPermaLink="false">http://agilesurfing.pl/?p=461</guid>
		<description><![CDATA[Poniżej zbiór faktów i wniosków na temat &#8222;organizacji wolontariuszy&#8221;. Koordynacją wolontariuszy zajmowałem się razem z drugim &#8222;Gregiem&#8221;. Myślę, że nasz duet w miarę dobrze się sprawdził, mi w każdym razie współpracowało się z Gregiem dobrze Ciekawostka: W czasie organizacji ALE2011 była to normalna sytuacja (kilka osób odpowiedzialnych za jeden obszar, bez formalnego lidera). ALE2011 wprowadziło koncepcję [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Poniżej zbiór faktów i wniosków na temat &#8222;organizacji wolontariuszy&#8221;.</strong></p>
<p>Koordynacją wolontariuszy zajmowałem <a href="http://ale2011.eu/2011/05/19/student-volunteers/" target="_blank">się razem z drugim &#8222;Gregiem&#8221;</a>. Myślę, że nasz duet w miarę dobrze się sprawdził, mi w każdym razie współpracowało się z Gregiem dobrze <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><em>Ciekawostka: W czasie organizacji ALE2011 była to normalna sytuacja (kilka osób odpowiedzialnych za jeden obszar, bez formalnego lidera). ALE2011 wprowadziło koncepcję &#8222;sof&#8221; (nawiązując do &#8222;Conference Chair&#8221;).</em></p>
<p><strong>Podczas konferencji do zadań wolontariuszy należało</strong>: rejestracja uczestników, odpowiadanie na pytania w punkcie informacyjnym, pilnowanie czasu prezentacji, zbieranie feedbacku po prezentacji, pomoc <a href="http://ale2011.eu/2011/08/31/spouse-kids-program/" target="_blank">w opiece na dziećmi</a>, robienie zdjęć oraz reagowanie na nie przewidziane wydarzenia (np. wyczerpanie się baterii w mikrofonie).</p>
<p><a href="http://agilesurfing.pl/wp-content/uploads/2011/09/wolont.jpg"><img class="aligncenter size-medium wp-image-472" title="Wolontariusze" src="http://agilesurfing.pl/wp-content/uploads/2011/09/wolont-300x200.jpg" alt="" width="300" height="200" /></a></p>
<p><strong>Rekrutacja</strong></p>
<p>Wolontariuszy próbowaliśmy rekrutować za pomocą Twittera, strony eventu, facebooka (bezpośrednie kontakty) i innych sieci społecznościowych. Wysłałem też e-maile do kilku uczelni w Berlinie oraz do Wrocławia. W sumie udało nam się z rekrutować 8 osób, z czego jedna się rozchorowała a druga &#8222;nie dawała znaku życia po rejestracji&#8221;.</p>
<p>W zespole wolontariuszy były 3 osoby z Berlina (Lina z Kolumbii, Budi i Melisa z Indonezji), 2 osoby z Brna (Petr i Michal) oraz Adam z Krakowa.</p>
<ul>
<li>Wszyscy zarejestrowani wolontariusze dowiedzieli się o możliwości bycia wolontariuszem bezpośrednio od kogoś, kogo znali.</li>
<li>Z 8 zarejestrowanych wolontariuszy, 2 nie dotarło na event. By &#8222;bez problemu&#8221; poradzić sobie z zadaniami, jakie stały przed wolontariuszami potrzeba by około 14 osób.</li>
<li>Deadline &#8222;rejestracji&#8221; wprowadzał zamieszanie. Wolontariusze nie byli pewni czy można się jeszcze rejestrować.</li>
<li>Ekipa wolontariuszy była świetna <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li><strong>Plakaty na uczelni! </strong>By dotrzeć do studentów, warto by było powiesić plakaty na uczelni. Niestety nie wszyscy śledzą Twittera i wchodzą na stronę konferencji <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<div>
<ul>
<li><strong>Bezpośredni kontakt w profesorami na uczelni! </strong>Samo wysyłanie maili okazało się nie skuteczne. Niezbędny jest &#8222;osobisty&#8221; kontakt, by nie być potraktowanym jako spam.</li>
<li><strong>Zorganizować spotkanie informacyjne na uczelni</strong>. By nawiązać bezpośrednią znajomość ze studentami, i zachęcić ich do zaproszenia znajomych.</li>
<li>Zamiast &#8222;deadlineu&#8221; wyswietlać, ile jeszcze miejsc zostało.</li>
</ul>
<div><strong>Grafik pracy</strong></div>
<div>
<ul>
<li>Grafik wolontariuszy został stworzony w <em>google spreadsheet.</em></li>
<li>Na przyszłość, padła sugestia by pozwolić wolontariuszom się &#8222;samo zorganizować&#8221; zamiast przydzielać im godzinny samemu (lepsze, niz powiedzennie im, że jeśli chcą, mogą się wymieniać)</li>
</ul>
<div><strong>Organizacja</strong></div>
<div>
<ul>
<li>Spotkanie organizacyjne powinno odbyć się dzień wcześniej <strong>w miejscu, gdzie jest konferencja!</strong> Na spotkaniu powinny obecne być osoby odpowiedzialne za kluczowe elementy programu (lightening talks, open space, sesje) lub wcześniej z tymi osobami powinno się dokładnie wyjaśnić jak będą wyglądać poszczególne elementy programu  i jaki może być wkład wolontariuszy. My mieliśmy spotkanie organizacyjne w moim biurze, a potem udaliśmy się na obiadokolację do pobliskiej knajpy. Było miło i pomogło nam się to trochę poznać, ale mogło być lepiej (mogliśmy lepiej się przygotować na pierwszy dzień konferencji).</li>
<li>Spróbowaliśmy zorganizować wolontariuszom coś ciekawego w Berlinie w ramach integracji. Rezultat:  Jazda po ciemku  autobusem nie jest aż taka atrakcja <img src='http://agilesurfing.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Lepiej było by zrobić ciekawy spacer. (btw, w dzień jazda piętrowych autobusem to super sposób na zobaczenie Berlina).</li>
<li>Ustalić wcześniej jak zbierany będzie feedback po sesjach. Zapewnić materiały do zbierania feedbacku przy drzwiach. Nie marnować papieru (używaliśmy karteczek samoprzylepnych, trochę ich poszło..).</li>
<li>Przygotować kilka przykładowych scenariuszy + zalecenia co w danej sytuacji robić. (Np. mikrofon przestaje działać, ktoś kogo nie ma na liście uczestników twierdzi, że zapłacił, komuś zginął laptop, speaker przekracza czas i zdaje się nie kończyć)</li>
<li>W czasie rejestacji korzystać bezposrednio z google docs lub z excela? Mieć dostęp do większego biurka / kilku biurek rejestracyjnych (by więcej osób na raz mogło sie rejestrować).</li>
<li>Zadbać o odpowiedni sponsoring dla wolontariuszy (na wszystkie wyjścia). U nas zabrało np. sponsoringu na obiad konferencyjny (uczestnicy płacili sami).</li>
<li>&#8222;Przećwiczyć rejestracje&#8221; i inne scenariusze na dzień przed konferencją z wolontariuszami (a nie tylko opowiadać).</li>
</ul>
<div>Tyle zapamiętałem/zebraliśmy podczas retrospekcji..</div>
</div>
</div>
</div>
<div class="rw-left"><div class="rw-ui-container rw-class-blog-post rw-urid-4620"></div></div><p><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fale2011-koordynacja-wolontariuszy%2F&amp;linkname=ALE2011%20%E2%80%93%20Koordynacja%20wolontariuszy" title="Facebook" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fale2011-koordynacja-wolontariuszy%2F&amp;linkname=ALE2011%20%E2%80%93%20Koordynacja%20wolontariuszy" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fale2011-koordynacja-wolontariuszy%2F&amp;linkname=ALE2011%20%E2%80%93%20Koordynacja%20wolontariuszy" title="Digg" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fale2011-koordynacja-wolontariuszy%2F&amp;linkname=ALE2011%20%E2%80%93%20Koordynacja%20wolontariuszy" title="Twitter" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fale2011-koordynacja-wolontariuszy%2F&amp;linkname=ALE2011%20%E2%80%93%20Koordynacja%20wolontariuszy" title="Google Reader" rel="nofollow" target="_blank"><img src="http://agilesurfing.pl/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fagilesurfing.pl%2F2011%2Fagile%2Fale2011-koordynacja-wolontariuszy%2F&amp;title=ALE2011%20%E2%80%93%20Koordynacja%20wolontariuszy" id="wpa2a_20">Daj znać innym</a></p>]]></content:encoded>
			<wfw:commentRss>http://agilesurfing.pl/2011/agile/ale2011-koordynacja-wolontariuszy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

