Wpisy otagowane ‘programowanie’

Refactor my code step by step!

niedziela, 27 Listopad 2011

Niedawno rozmyślałem nad skryptem w Ruby, który napisałem. Nie byłem z niego zadowolony. Co prawda działał, ale był dość „brzydki”.

Pomyślałem, super by było, gdyby ktoś mi pokazał jak napisać to lepiej.. „Refactor my code”.. Po krótkim googlowaniu okazało się, że jest już taki serwis: http://refactormycode.com/

O ile nazwa jest już zajęta ;) .. to mój pomysł miał jeszcze jeden istotny składnik. Założyłem, że ważne jest by „mój” kod nie tylko został poprawiony, ale żeby został poprawiony w małych kroczkach z wytłumaczeniem „dlaczego”, tak bym mógł się nauczyć i następnym razem sam napisać coś porządnie..

W gruncie rzeczy, to marzy mi się „coding dojo” rozproszone w czasie i przestrzeni. Piszę kod, który zapewne może zostać napisany lepiej. Chciałbym abyś wziął ten kod i w małych kroczak go ulepszył. Po każdym kroczku zrób commit i wyjaśnij co i dlaczego zrobiłeś.

Prototyp tego co mam na myśli dość szybko udało mi się stworzyć przy pomocy githuba.

https://github.com/dziemid/refactormycode

Napisałem  dość brzydką wersję String Calculatora , którą następnie trochę  poprawiłem .. Nie mniej wersja końcowa nie jest aż tak ciekawa jak sam proces jej tworzenia, gdzie każdy mały kroczek został udokumentowany.

Pomysł został podchwycony przez Martina, która zrefaktoryzował mój kod krok po kroku (tutaj jeden z jego kroków w raz z moim komentarzem).

Dziś wrzuciłem kolejny kod do poprawienia: Grę w życie w Javie. Kod jest napisany średnio. Miejscami jest brzydki, niektóre klasy są w ogóle niepotrzebne, inne klasy robią rzeczy, które być może powinny być gdzie indziej.

Zachęcam Cię do zrobienia „Fork”a i zrefaktoryzowania tego kodu krok po kroku. W każdym commicie napisz co i dlaczego robisz. W ten sposób razem stworzymy coding dojo rozproszone w czasie i przestrzeni :)

 

 

 

Automatyczne testowanie kodu – jak to robić?

poniedziałek, 28 Marzec 2011

W tym wpisie zbiorę moją aktualną wiedzę na temat automatycznego testowania kodu.

Po pierwsze, aplikację możemy automatycznie testować na różnych poziomach i każdy z tych poziomów ma swoje „wady” i „zalety”. Dobrym wprowadzeniem to tematu jest prezentacja Neala Forda – „Testing the entire stack” .

Na warsztatach prowadzonych przez autorów książki Growing Object-Oriented Software Guided by Tests spotkałem się po raz pierwszy z koncepcją architektury „The Ports & Adapters” . Na podstawie tej architektury dobrze można pokazać, na którym poziomie co testujemy.

I tak na przykład testy jednostkowe służą do testowania pojedynczych klas, z których składa się nasz model biznesowy (Aplikacja, w tym artykule), testy akceptacyjne testują model biznesowy, testy systemowe testują cały system za pomocą zewnętrznych interfejsów (GUI, Web service), a testy integracyjne testują integrację naszego kodu, z kodem, którego nie możemy zmienić (np. testowanie adapteru używającego biblioteki służącej do pracowania na bazie danych).

(więcej…)

Dlaczego warto przyjść na CodeRetreat?

wtorek, 31 Sierpień 2010

Już jutro w pracy organizuję 2 warsztaty oparte na formule CodeRetreat.

Razem z ludźmi z Wrocławskiego JUGa i Wrocławskiej grupy kunszt organizujemy też otwarte CodeRetreat dla Wrocławia! Wydarzenie prawdopodobnie odbędzie się 23 października, a o szczegółach poinformuje między innymi na tym blogu.

Ale dlaczego warto poświęcić sobotę i przyjść? Będziesz miał okazję ćwiczyć! :)

Dlaczego jest to ważne? Zapraszam do obejrzenia wideo z prezentacji Corey’a (jeden z pomysłodawców CodeRetreat).

Practise

Warsztaty inspirowane „CodeRetreat”

piątek, 6 Sierpień 2010

We wtorek miałem przyjemność organizować w firmie wydarzenie inspirowane warsztatami „CodeRetreat”.

W skrócie: Jest to cały dzień programowania w parach ćwicząc Test-Driven Development. Nacisk kładziony jest na to jak pracujemy (w przeciwieństwie do tego nad czym pracujemy). Słowo klucz: kata

Czym moje warsztaty różniły się od prawdziwych „CodeRetreat”?

  • Były to warsztaty zamknięte (tylko dla pracowników)
  • Były zorganizowane w dzień roboczy (a nie w sobotę)
  • Odbyło się tylko 5 sesji (a nie 6-7)
  • Nie poszliśmy na koniec do pubu

Z informacji zwrotnej uzyskanej od uczestników wynika, że warsztaty się podobały :)

Zresztą proszę poczytać co mieli do powiedzenia uczestnicy:

Na pewno ten czas spędziłem ciekawie. Programowanie w parach pokazało, że każdy może wnieść od siebie coś nowego, rzucić światło na pewne aspekty, których się nie dostrzegało. W każdej sesji rodziły się nowe pomysły i podejścia do rozwiązania wciąż tego samego problemu. Była to dobra okazja do wymiany doświadczeń a także do praktycznego wykorzystania TDD. Polecam każdemu wzięcie udziału w takich warsztatach. Uważam, że jest to czas dobrze wykorzystany. - Michał

Ciekawe i dobrze przygotowane szkolenie. Dużym plusem jest to, że szkolenie to jest w formie warsztatów. Forma ta pomaga wymieniać doświadczenie i uczyć się od siebie nawzajem, co uważam, za największą wartość, jaką wyniosłem. Poza tym, była to dobra zabawa.Janek

Pierwszy raz uczestniczyłem w tego typu warsztatach i muszę przyznać, że jestem miło zaskoczony.
Kilkukrotne rozwiązywanie jednego problemu  (prostego swoją drogą), ale z różnymi osobami prowadziło do różnych ciekawych wyników.
Programowanie w parach ma w sobie moc, bez względu na to, czy programuje się z kimś słabszym czy lepszym – oto jeden z moich wniosków po tych warsztatach.
Warsztaty przygotowane dosyć rzetelnie, zarówno od strony technicznej ( sala, komputery ), jak i merytorycznej – całkiem sporo wiedzy zostało przekazane – wiedzy, która według mnie powinien posiadać każdy programista.
Jednym słowem – brawo Grzegorz! Wyszło świetnie, pomimo że pierwszy raz organizowałeś tego typu zajęcia.
Mirek

Dziękuję za możliwość wzięcia udziału w warsztatach. Bardzo podobała mi się ich forma i zróżnicowanie doświadczenia uczestników. Choć byłem w mojej ocenie najmniej zaawansowanym uczestnikiem warsztatów poradziłem sobie z pomocą kolegów i koleżanek z zadaniem jakie mieliśmy do wykonania. Samo zadanie również było bardzo interesujące i wciągające. Czas podczas warsztatów upływał niemiłosiernie szybko lecz mimo to w kolejnych krokach udawało się dochodzić co raz to dalej. Warsztaty uświadomiły uczestnikom, a na pewno mi, że jeżeli chcę tworzyć poprawny kod to bez wątpienia powinienem wychodzić o tworzenia testów, a kończyć na implementacji (przekonałem się do tego już podczas drugiej sesji). Uważam, że osoba przygotowująca warsztaty zachowała się profesjonalnie i swoją postawą zachęcała do działania. Chciałbym, aby takie warsztaty były organizowane cyklicznie i uważam, że warto zainteresować nimi większy odsetek pracowników mających możliwość wykorzystania tej wiedzy w codziennej pracy.
Jeszcze raz dziękuję za ciekawy dzień pracy.
Grzesiek


Wydarzenie było dość kameralne – uczestniczyło w nim 6 osób + ja.  Programowaliśmy w Javie.

Przez pierwsze 3 sesje byłem obserwatorem. Było to o tyle fajne, że mogłem podglądać co robią ludzie i na retrospekcjach po sesjach poruszać tematy dotyczącego tego, co widziałem że działo się u innych.

Ostatnie 2 sesje sam aktywnie kodowałem w parze i o ile pozwoliło mi to poczuć na własnej skórze to co robili uczestnicy, to bardzo utrudniło dawanie wskazówek odnoszących się do tego co działo się w innych parach.

Na retrospekcjach poruszaliśmy temat związane z:

  • Różnymi pomysłami na zakodowanie rozwiązania
  • Jak pisać czysty kod
  • Jak efektywnie programować w parach (np. ping-pong programming)
  • Test-driven development, TDD as you meant it

Warsztaty zaczęliśmy, krótkim wstępem, gdzie

  • Każdy miał szansę się przedstawić
  • Przedstawiłem plan dnia
  • Opowiedziałem trochę skąd pomysł (QCon i wykład Corey’a Haines)
  • Powiedziałem klika słów o Software Craftsmanship (care, practice, learn, share), manifest
  • Przytoczyłem klika wskazówek na temat tego, jak programować w parach.
  • Przypomniałem zasady TDD
  • Omówiłem zasady „Gry w życie”

W czasie przerwy obiadowej przejrzeliśmy slajdy Sharpening the Tools

Code Retreat we Wrocławiu

Ponieważ warsztaty uważam za udane, myślę że warto zorganizować prawdzie „CodeRetreat” dla Wrocławia. Jeśli ktoś jest zainteresowany to proszę o kontakt.

Co jest niezbędne by to urzeczywistnić?

  • Duża sala, gdzie wygodnie można siedzieć i kodować w parach przy laptopach.  (sponsor)
  • Uczestnicy z laptopami
  • Termin

Więc nie potrzeba chyba aż tak dużo?:)

A co mogłoby wydarzenie uczynić jeszcze fajniejszym

  • Dodatkowe monitory, by wygodnie pracowało się na laptopach
  • Obiad ufundowany przez sponsora
  • Dostęp do neta
  • Na zakończenie wyjście integracyjne, ufundowane przez sponsora

Jeśli ktoś ma pomysł jak powyższe rzeczy zdobyć a tym samym urzeczywistnić Wrocławskie CodeRetreat proszę o info w komentarzach :)

Linki:

The Productive Programmer: Mechanics

środa, 21 Kwiecień 2010

Jeśli programujesz, polecam :)

The Productive Programmer: Mechanics