Zapisy na Agile Development Day zakończone
Zakończyliśmy zapisy na Agile Development Day. Niedługo wszyscy, którzy się rejestrowali mogą spodziewać się maila z informacją czy załapali się do grupy szczęśliwych wybrańców.
Informacje dotyczące eventu oraz prowadzących pojawiać się będą na stronie eventu oraz na twitterze pod hashem #agiledevday.
W trakcie eventu będzie można śledzić nasze postępy w budowaniu aplikacji – szczegóły wkrótce na powyższej stronie i twitterze.
Zapisy na ADD już tylko dziś!
Dziś zamykamy zapisy na ADD. Wszystkich zainteresowanych zachęcamy do rejestrowania się – każdy ma równe szanse się dostać.
W poniedziałek wyłonimy uczestników i poinformujemy Was mailem o wyniku.
Agile Development Day – darmowe warsztaty Agile i TDD
Z okazji rozpoczęcia współpracy w ramach szkoleń z firmą Sages, 10 grudnia organizujemy całodniowe darmowe warsztaty dotyczące Agile, TDD, Pair-Programming itp. Poniżej szczegóły eventu. Zapraszamy!
Formularz zgłoszeniowy jest tutaj.
Agile Development Day
Agile Development Day to wyjątkowa okazja, aby poćwiczyć programowanie zespołowe z wykorzystaniem praktyk agile’owych, poznać nowe technologie, a także wspólnie stworzyć webową aplikację, z której korzystać będą inni. Warsztaty odbywać się będą z udziałem specjalistów z firm Pragmatists i Sages oraz zaprzyjaźnionych ekspertów, którzy będą dzielić się swoją wiedzą, programować w parach z uczestnikami, pomagać, coachować oraz prezentować kruczki i sztuczki w popularnych technologiach programistycznych.
Co będziemy robić?
Stworzymy aplikację do wspierania rozwoju i automotywacji programistów.
Podzielimy się na małe zespoły i postaramy się zrealizować projekt możliwie zgodnie z metodyką Extreme Programming. Możecie liczyć na bardzo krótkie iteracje, programowanie w parach, Test-Driven Development, Continuous Integration. Postaramy się wdrożyć praktykę Continuous Deployment, a więc każdy poprawny commit będzie automatycznie budowany i wprowadzany do środowiska produkcyjnego. Każda para będzie miała do pomocy osobę doświadczoną w pracy w zwinnym modelu, by popróbować pracy z programistami doświadczonymi w stosowaniu zwinnych praktyk.
Kto może się zgłosić?
Oczekujemy na zgłoszenia od programistów zainteresowanych wykorzystaniem zwinnych metodyk i ich praktyk w zespołowym tworzeniu oprogramowania. Wymaganiem jest dobra znajomość języka i platformy Java oraz technologii webowych.
Z jakich technologii będziemy korzystać?
Java, Spring Core, Spring MVC, Cassandra, Mockito, JUnit.
Ilu będzie uczestników?
Chcielibyśmy zagwarantować dostępność prowadzących dla wszystkich uczestników, planujemy więc zaprosić do wspólnego programowania 20 osób.
W jaki sposób zostaną wybrani uczestnicy?
W przypadku, gdy otrzymamy więcej, niż 20 zgłoszeń na warsztaty, wybierzemy 20 najciekawszych zgłoszeń, na podstawie odpowiedzi na pytania zawarte w ankiecie.
Kiedy ogłoszona zostanie ostateczna lista uczestników?
Zgłoszenia w postaci ankiet przyjmować będziemy do 25 listopada br. W dniu 28 listopada wszystkie osoby, które przesłały ankiety otrzymają informację, czy znalazły się w gronie uczestników Agile Development Day.
Ile to kosztuje?
Udział w warsztatach jest bezpłatny. Organizatorzy zapewniają lunch i przerwy kawowe. Ewentualne koszty dojazdu, zakwaterowania w Warszawie ponoszą uczestnicy.
Co muszę wziąć ze sobą?
Komputer przenośny z możliwością konfiguracji bezprzewodowego dostępu do Internetu. Organizatorzy warsztatów NIE zapewniają sprzętu dla uczestników. Na komputerze musi być zainstalowane dowolne IDE, Java SDK, Maven 3, git. Początkowy kod projektu będzie dostępny przed spotkaniem (żeby sobie skompilować, odpalić testy, przygotować środowisko).
Jak długo będą trwać warsztaty?
Warsztaty są jednodniowe, odbędą się w sobotę, 10 grudnia 2011 r., w godzinach 8:00 – 17:00.
Gdzie odbywać się będą warsztaty?
Warsztaty odbędą się w Warszawie w budynku Millenium Plaza, Al. Jerozolimskie 123A.
Sages i Pragmatists rozpoczęły współpracę
Miło nam poinformować, że Sages – lider w dziedzinie specjalistycznych szkoleń w branży IT oraz Pragmatists – eksperci w zakresie zwinnego rozwijania oprogramowania – rozpoczęły współpracę, mającą na celu stworzenie kompleksowej oferty szkoleń, obejmującej najpopularniejsze obecnie metodyki prowadzenia projektów informatycznych. Wspólnym celem Sages i Pragmatists jest dostarczanie wiedzy na najwyższym poziomie poprzez połączenie doświadczenia w prowadzeniu projektów szkoleniowych, kompetencji trenerów i konsultantów z wieloletnią praktyką w prowadzeniu projektów informatycznych w oparciu o podejście Agile.
Od 1 października br. w ofercie Sages dostępne są szkolenia realizowane przez konsultantów firmy Pragmatists:
P/AGILE Agile Software Development
Szkolenie adresowane jest do wszystkich osób biorących udział w projektach programistycznych: kierowników projektów, programistów, architektów, testerów. Uczestnicy szkolenia nauczą się prowadzenia projektów zgodnie ze zwinnymi metodykami. Poznają metodyki Scrum, Kanban oraz Extreme Programming, nauczą się je wykorzystywać we własnych projektach oraz będą mieli okazję wypróbować nowe umiejętności w praktyce w ramach warsztatów i ćwiczeń wykonywanych pod okiem prowadzących.
Termin najbliższego szkolenia otwartego: 28-29 listopada 2011
P/TDD Test-Driven Development w Javie
Szkolenie adresowane jest do programistów Java, chcących podnieść swoje umiejętności tworzenia czystego, testowalnego kodu. Uczestnicy poznają i przyswoją sobie cykl pracy TDD, nauczą się projektować oprogramowanie pod kątem testowalności i tworzyć czytelny kod. Poznają biblioteki ułatwiające stosowanie TDD oraz umożliwiające testowanie na różnych poziomach.
Termin najbliższego szkolenia otwartego: 24-26 października 2011
Piosenka o refaktoryzacji
Parę osób (no większe parę
) prosiło mnie o udostępnienie mojej tfu-rczości Konfiturowej na YT, co niniejszym uczyniłem. Have Fun!
Przyjęta propozycja na Software Craftsmanship 2011
Mnie w tym roku na Confiturze nie będzie, ale zazdroszcząc Pawłowi i Piotrowi zgłosiłem swoją sesję na inną konferencję. I została przyjęta! Będę więc godnie reprezentować Pragmatists na Wyspach.
Propozycje na Confiturę przyjęte
Zarówno moja propozycja prezentacji na temat zaawansowanych refaktoryzacji, jak i temat Piotrka Przybylaka o korzystaniu z mózgownicy zostały przyjęte. Teraz Wam pozostaje się na nich pojawić, a nam dobrze je przygotować
JUnitParams
Niedawno dopisałem do Tumblera możliwość definiowania scenariuszy parametryzowanych. Chodzi o to, żeby móc zdefiniować parę zestawów parametrów scenariusza i mieć ten sam jeden scenariusz wykonany dla wszystkich zestawów, weryfikując w ten sposób jego poprawność dla różnych danych. Ale jako, że nie wszyscy chcą używać Tumblera (i nie zawsze jest sens), przepisałem tę funkcjonalność do czystego JUnit’a. Po co? Głównie dlatego, że testy parametryzowane w JUnit to porażka. Z runnerem Parameterized Testy są wg. mnie mniej czytelne, tworzy się dużo klas, generalnie kiszka. Na dodatek do Parameterized są też teorie, które miały rozwiązać parę problemów, ale chyba nikt ich nie używa.
Ostatnio jednak mieliśmy w projekcie sytuację, w której testy parametryzowane byłyby wygodne… gdyby były wygodne. Więc wyciągnąłem ten kawałek Tumbler’a na zewnątrz i tak powstał JUnitParams. Teraz testy parametryzowane w JUnit są dużo przyjemniejsze.
Jak to działa?
1. Trzeba zdefiniować runner (JUnitParamsRunner) – bo JUnit nie umie wykonać tego samego testu parę razy, a przecież o to nam chodzi.
2. Stworzyć metodę testową z parametrami metody testowej oraz zadnotować ją za pomocą @Parameters podając parametry bezpośrednio w adnotacji, lub podając klasę dostarczającą te wartości z zewnątrz. Jeśli chcemy podać parametry bezpośrednio, to podajemy je jako tablicę String’ów, której każdy element jest jednym zestawem parametrów:
@Parameters({“1, Jaś, true”, “2, Andżelika, false” })
Tak podane parametry są następnie parsowane i rzutowane na odpowiednie podstawowe typy javowe.
Jeśli zaś zestawów parametrów ma być więcej, lub chcemy je pobrać dynamicznie np. z pliku bądź bazy, możemy podać klasę dostarczającą wartości parametrów:
@Parameters(source=NamesParamsProvider.class)
Co do tej klasy nie ma żadnych wymagań poza posiadaniem przynajmniej jednej publicznej statycznej bezparametrowej metody zaczynającej się od provide. Wszystkie takie metody są uruchamiane, ich wyniki zbierane i dostarczane do metody testowej.
Można też przekazywać parametry bez zewnętrznej klasy – podając metodę testu zwracającą dane w adnotacji:
@Parameters(method=”samplePeople”)
3. Już. Żadnych konstruktorów, pól w klasie testowej, czy innych zbędnych dodatków.
Przykładowy test z parametrami wygląda np. tak:
@RunWith(JUnitParamsRunner.class)
public class PersonTest {
@Test
@Parameters(method = "adultValues")
public void isAdult(int age, boolean valid) {
assertThat(new Person(age).isAdult(), is(valid));
}
private Object[] adultValues() {
return $(
$(17, false),
$(22, true)
);
}
}
Więcej przykładów na stronie projektu.
Nasze propozycje na Confiturę
Confitura już dość blisko. W tym roku z naszego zespołu wyszły dwie propozycje tematów. Pierwsza Piotra Przybylaka “Pisz po pijaku, przeglądaj na trzeźwo”. To jedna z tych, których sam tytuł niewiele mówi, więc oto jej abstrakt:
Jakie jest najważniejsze narzędzie programisty?
Twój mózg.
Czy umiesz się nim efektywnie posługiwać?
Czy wiesz jakie kryje “bugi”?
Czy działa racjonalnie?
Ani w szkole ani na studiach nikt nie uczy nas jak posługiwać się najważniejszym narzędziem w naszej pracy – nie uczymy się jak się uczyć. Warto to zmienić, wiec postaram się przedstawić skróconą instrukcje obsługi Twojego mózgu.
Opowiem:
- O tym jak ludzki mózg przetwarza problemy i tworzy ich rozwiązania.
- Jak efektywnie połączyć w swojej pracy wykorzystanie przetwarzania świadomego i nieświadomego, racjonalnego i nieracjonalnego.
- Jak kierować swoim rozwójem. Czyli co bracia Dreyfus odkryli badając ograniczenia sztucznej inteligencji, a co japońscy mistrzowie sztuk walki wiedzą od wieków.
- Jak ujawniają się zaszyte w nim bugi: “Legacy brain”.
Druga jest moja (Pawła Lipińskiego). Jej tytuł to “Re-fuck-toryzacja czyli sprowadzanie sp****go kodu na właściwe tory”. Krótki opis:
Design w twoim projekcie ssie? Kod strukturą przypomina wielki parujący krowi placek? Ta prezentacja jest dla Ciebie. Przypomnisz sobie do czego służy menu Refactor w Twoim IDE, zobaczysz jak dopisywać testy do tego czegoś co nie wiadomo jak działa i jak przekształcać kod w kierunku wzorców projektowych. Przyjdź i oszczędź swoim kolegom z zespołu paru WTF przy przeglądaniu Twojego kodu!
Tym razem Piotr będzie więc miał coś z tematów miękkich, ja kodując na ekranie opowiem o stosowaniu refaktoryzacji i pokażę jak wyglądają refaktoryzacje na wyższym poziomie, czyli coś czego nawet najmądrzejsze IDE samo nie wymyśli.
Jako, że w tym roku kapituła Confitury dała prawo głosu na tematy uczestnikom, jeśli chcecie nas posłuchać głosujcie w tej ankiecie.
Spicze
Od początku działalności Pragmatists staraliśmy się udzielać w społecznościach Javowych i Agile’owych. Wychodzimy z założenia, że ewangelizacja w zakresie dobrych praktyk programistycznych, jakości oprogramowania i codziennego dbania o tworzony produkt i zespół jest naszym obowiązkiem. Dzielimy się więc naszymy doświadczeniami w ramach współtworzonej przez nas grupy Agile Warsaw, konferencji Javowych i agile’owych, oraz w czasie prowadzonych przez nas szkoleń.
W ciągu najbliższego miesiąca będą dwa takie wydarzenia. Po pierwsze, 19 stycznia będę opowiadał o TDD w ramach e-seminariów Polskiej Grupy Scrum. A dla chętnych żeby posłuchać trochę o tym jak Software Craftsmanship ma się do codzienności, zapraszam 5 lutego do Lwowa na mini-konferencję Agile Base Camp. Będzie tam jeszcze z Polski Piotr Żołnierek.
PS. Nie, nie będziemy mówić po ukraińsku…