Wpisy otagowane ‘tdd’

Praktyki stosowane w moim zespole

niedziela, 15 Styczeń 2012

W ramach „Poranku z Nokią i z SEnSem” 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 / product ownera. Siedzi z nami na tym samym piętrze i ma dla nas czas
  • tworzymy ważny, ale wewnętrzny system

Dla każdej praktyki powiedziałem:

  • na czym polega
  • dlaczego/po co ją stosujemy
  • „dobre rady”

Oto lista praktyk, które aktualnie stosujemy w moim zespole:

(więcej…)

Refaktoryzując test do String Kalkulatora

czwartek, 29 Grudzień 2011

W ramach eksperymentu nagrałem wideo, w który refactoruje test do String Kalkulatora.

Wideo można zobaczyć tutaj: Refactoring of test

Filmik trwa 5 minut podczas których:

  1. Rozbijam jeden duży test na kilka mniejszych (by testy były łatwiejsze do zrozumienia, a gdy nie przechodzą by dokładnie było wiadomo co nie działa)
  2. Zamieniam assertEquals na assertThat (naturalniej się czyta)
  3. Zastępuje komentarze opisowymi nazwami testów (by samo zerknięcie do raportu w ciągłej integracji wystarczyło do zorientowania się, co się dzieje)
Klika używanych skrótów:
  • ctrl+y – usuwa aktualną linie
  • ctrl+c – gdy nic nie jest zaznaczone, kopiuje aktualną linię
  • alt+ctrl+v – wyciąga zaznaczone wyrażenie do zmiennej
  • ctrl+shift+f10 – odpala testy
  • ctrl+w – rozszerzające się zaznaczenie (naciśnij kilka razy, a zaznaczony obszar będzie rósł)
Kod który refaktoryzuję, pochodzi z mojego innego wpisu (Refactor my code step by step).

Organizując światowy dzień CodeRetreat

środa, 14 Wrzesień 2011

Dziś rozpocząłem proces organizacji CodeRetreat Berlin w ramach światowego dnia CodeReteat.

Na razie założyłem tylko grupę na googlach i szukam chętnych do pomocy. Przed nami „trochę pracy”. Musimy znaleźć sponsorów, salę, przeprowadzić rejestrację, zorganizować obiad i załatwić wiele innych małych rzeczy. Damy radę! Po ostatnim CodeRetreat w Berlinie, ludzie są pozytywnie nastawieni :)

Światowy dzień CodeRetreat odbędzie się w sobotę, 3 grudnia 2011. Na razie na liście miast uczestniczących w projekcie nie ma żadnego miasta z Polski, mam nadzieję, że wkrótce się to zmieni ;)

3 grudnia, przez około 32 godziny, gdzieś na świecie odbywać się będzie CodeRetreat. W czasie przerw pomiędzy iteracjami będziemy łączyć się na wideo konferencjach z innymi lokalizacjami i na bieżąco będziemy wymieniać się wrażeniami i pomysłami.

Czy weźmiesz udział w światowym dniu CodeRetreat? W jakim mieście?

Coding Dojo (cz. 2)

wtorek, 26 Lipiec 2011

Ciąg dalszy informacji na temat naszego Coding Dojo..

Ostatnio eksperymentowaliśmy z innymi językami niż Java. Wypróbowaliśmy Clojure, Scale oraz Ruby. Kilka obserwacji:

Dojo zaczynamy z „czystym” projektem (startujemy od zera).

W przypadku Clojure i Ruby kodowaliśmy od zera. W przypadku Scali, zostało zaprezentowane i omówione gotowe rozwiązanie. Dużo bardziej podobało nam się kodowanie od zera, gdyż każdy miał szansę zrozumieć co się dzieje (dla wielu języki były obce), a bardziej zaawansowane osoby miały szansę zobaczyć krok po kroku sposób rozwiązywania problemu przez innych.

Prezentowanie gotowego rozwiązania raczej się nie sprawdziło, gdyż osoby dla których język był nowy nie do końca rozumiały co się dzieje, a dla osób zaawansowanych samo finalne rozwiązanie nie było aż tak ciekawe.

Ćwiczymy jedną rzecz na raz

Celem Dojo jest ćwiczenie. By robić to dobrze, warto skupić się na jednej rzeczy na raz. Średnim pomysłem jest ćwiczenie rozwiązania problemu w sposób obiektowy, gdy większość grupy nie potrafi nawet programować w danym języku (w takiej sytuacji można spróbować coś takiego: ekspert w danym języku ma klawiaturę i zamienia sugestie uczestników na temat rozwiązania obiektowego w kod).

Ponieważ spotykamy się tylko na jedną godzinę, dobrze jest wybrać za cel ćwiczenia coś bardzo konkretnego. Poniżej kilka przykładów:

  • Eksplorowanie  (nowego) języka (Ruby)
  • Eksplorowanie  (nowego) języka (Scala)
  • Ćwiczenie (szybkiego) cyklu RED, GREEN, REFACTOR w TDD (w języku, który zna grupa) (np. chcemy by cykl trwał mniej niż 3 minuty)
  • Ćwiczenie programowania obiektowego (w języku, który zna grupa) (np. chcemy by każda klasa przestrzegała zasad SOLID)
  • Ćwiczenie nazewnictwa (chcemy, by każda nazwa ujawniała intencję twórcy)
  • Ćwiczenie w pisaniu krótkich metod (np. max liczba linii to 4)
  • Ćwiczenie w obsłudze IDE (tylko skróty klawiszowe, refactoring)
Dojo może być formą Deliberate Practice. Dlatego sugerowany format jest następujący:
  • Jako grupa ustalamy konkretny cel na najbliższą godzinę
  • Jedna para pracuje, jej kod wyświetlany jest na rzutniku
  • Parę zmieniamy co 10 minut
  • W czasie 10 minut unikamy niepotrzebnych komentarzy, by nie rozpraszać pary. Para powinna komentować to co robi.
  • Po 10 minutach jest czas na (krótkie) pytania. Skupiamy się na naszym celu i o tym rozmawiamy (nie rozwodzimy się na temat SOLID gdy celem jest TDD).
  • Na koniec powinniśmy zrobić krótką retrospekcję: Czy osiągnęliśmy cel? Czego się nauczyliśmy? Co było fajne w formacie Dojo? Co możemy zrobić lepiej następnym razem?

CodeRetreat Berlin

piątek, 15 Lipiec 2011

W sobotę odbyło się organizowane (między innymi) prze zemnie CodeRetreat w Berlinie.

Sądząc po komentarzach uczestników, było fajnie :)

Łukasz Bałamut wrzucił do sieci świetne zdjęcia.

(więcej…)