20 października 2013

Relacja ze scalania 6 - niespodzianek końca nie widać

Byłoby niegrzecznie wychwalać własne dzieło, ale przywdziewając czapkę uczestnika spotkań z językiem Scala - Scalania - mogę śmiało oznajmić, że ostatnie, szóste spotkanie było jeszcze lepsze niż poprzednie (wliczając te podczas warsjawy). Na wsparcie tych słów, przytoczę opinie uczestników ze strony Scalania 6 - spotkania z językiem Scala.


Jacek Kołodziejski napisał:
"Kolejne bardzo udane scalanie i nawet się zmieściliśmy w czasie! Składam oficjalne gratulacje na ręce prowadzącego:)
Pomysł z wywoływaniem losowych ludzi do zadania z poprzedniej edycji jest bardzo ciekawy."
Co zechciał wesprzeć Piotr Kowalski swoim "lajkiem".

Andrzej Jóźwik dodał:
"Bardzo udana współpraca - praca w grupach wyzwoliła konkurowanie na ilość różnych podejść/rozwiązań. Jak widać ile osób tyle pomysłów - a scala daje duży potencjał."
Z "lajkiem" Rafała Krzewskiego.

Biorąc pod uwagę, że na spotkaniu było 15 uczestników (16 ze mną) i 4 wyraziło swój zachwyt, daje to ponad 25% zadowolonych, co uważam za solidne wsparcie mojego (być może przesadzonego tu i ówdzie) myślenia.


Daleki jestem od stwierdzenia, że to moja zasługa. Wręcz przeciwnie! Owe dzieło - scalania - wyjątkowo dobrze się samoorganizuje, a ja jedynie nadaję temu ramy spotkania. Liczba pomysłów, które mógłbym określić moimi, stanowi pewnie jedynie połowę wszystkich wdrożonych, co jest kolejnym sukcesem tej inicjatywy.


Ot, choćby ostatnie "ćwiczenia" polegające na podziale uczestników na grupy i ścisłe przestrzeganie ram czasowych. To nie są moje pomysły, a jak widać to właśnie one stanowią o doskonałości spotkania. I tak trzymać! Ja ustawiam się w roli bacznego obserwatora i "zbieracza" pomysłów, a uczestnicy, jako główni aktorzy na scenie, określają formę i kierunek rozwoju (własnego i spotkania). Widzę samych wygranych.


Dziękuję tym, którzy zabrali głos w sprawie (na meetupie), pozostałym uczestnikom, wydziałowi MIM UW, aby nie zapomnieć o sponsorze - firmie Javart. Zabrzmi banalnie, ale należy to napisać...oddawając tedy, co jest cesarskiego, cesarzowi, a co jest bożego, Bogu...że bez nich scalania nie miałyby miejsca. Dziękuję!


W zasadzie, komentarze wyżej, dają pojęcie o zmianach wdrożonych podczas ostatniego spotkania - utrzymanie podziału na 3-osobowe grupy oraz ścisłe trzymanie się agendy. Dla mnie największym sukcesem było trzymanie się czasu i wciąż jest zaskakująca łatwość, z jaką idzie to utrzymać. Chociaż niewielu potrafi rozwiązać zadanie w zadanym czasie, to nie słychać głosów, które mogłyby świadczyć, że to coś niewłaściwego. To się musi podobać każdemu!


Zaczęliśmy spotkanie o 18:10, od wprowadzenia do Scali, które poprowadził Andrzej Goławski. Dostał 15 minut i ich nie zmarnował! Trudno było znaleźć czas, aby się nudzić. Wielkie brawa dla Andrzeja.


Później "odpaliłem" nowość tego spotkania - 15-minutową rozgrzewkę, czyli sprawdzian dla osób, którzy byli na poprzednich scalaniach, a którzy "poproszeni" rozwiązywali już zrobione wcześniej zadania (niekoniecznie przez nich samych).

Jak wybierać osoby do tego sprawdzianu jest jeszcze do wypolerowania, ale z pewnością należy to utrzymać. Daje to możliwość wyjścia na scenę osobom, które zwykły trzymać się z dala od blasku fleszy, a także wdrożyć nowe osoby do mechaniki rozwiązywania zadań. Bardzo podobała mi się dyskusja z pierwszym na scenie (wybacz chwilową amnezję, bom imienia nie pomniał), aby rozwiązać zadanie, którego akurat nie robił wcześniej (bo udział w scalaniu nie musi oznaczać, że dane zadanie właśnie wtedy było robione).


W końcu nadeszła pora na przerwę żywieniową i chwilę na dyskusję. Ten element uważam za kluczowy, bo nie tylko, że można się posilić, ale przez miejsce (korytarz) i niewielką liczbę osób (poniżej 20) próbuję animować dyskusje między uczestnikami. Podczas przedostatniego spotkania mieliśmy jedno wielkie kółko, w którym każdy dzielił się swoimi wdrożeniami Scali w firmie, a na ostatnim widać już było kilka podgrup i raczej nikogo pozostawionego samemu sobie. To zdecydowany sukces scalania i odejście od tradycyjnego, opartego na slajdach i jedzeniu w ławkach, formatu spotkań Warszawskiego JUGa.


Od 19:00 można liczyć faktyczne rozwiązywanie zadań. Zgodnie z planem, na pierwszy ogień poszło P14. O 19:10 dzielimy się gistami. Poniżej zebrane propozycje.
W agendzie zaplanowałem kolejną niespodziankę spotkania, ale najwyraźniej sprawność grupy sprawiła, że pojawiła się ona w propozycjach rozwiązań - napisać rozwiązanie w trzech wersjach - z użyciem dopasowania wzorców, jednolinijkowca z foldLeft/flatMap czy podobnie, oraz wersję z rekurencją ogonową. Zakładając, że jedno z wymienionych jest bieżącym rozwiązaniem, pozostałe stanowiły(by) uzupełnienie i kolejne ćwiczenie umysłowe. Zwykle dawało to trzy różne rozwiązania.


O 19:30 podeszliśmy do P15.

Właśnie wtedy uzmysłowiłem sobie kolejną nowość spotkania - baczniejszą analizę błędu podczas uruchomienia testu. Do tej pory zakładałem, że należało przeczytać test, aby dowiedzieć się, co jest wymagane w implementacji, ale już samo uruchomienie testu daje taką informację.

Uruchom polecenie ~exercises/testOnly *P15* i po prostu przeczytaj błąd, w którym napisano, czego oczekuje się od implementacji.
> ~exercises/testOnly *P15*
[info] P15Spec
[info]
[info] P15 solution should
[info] x Duplicate the elements of a list a given number of times.
[error]    an implementation is missing (S99_P15.scala:4)
Trzeba więcej?! Raczej nie. To znacznie upraszcza operowanie projektem i udział w spotkaniu. Gdyby podzielić ekran na dwa i u dołu pokazywać wynik testu, a u góry edytor, byłoby to idealne środowisko pracy. Tutaj IDE, np. IntelliJ IDEA, mogłoby spełnić pewną rolę.


I tu mnie olśniło - zaproponowałem, aby w 3-osobowej grupie był tylko jeden otwarty komputer ze zmianą osoby piszącej rozwiązanie. Moja pamięć zawodna i nie pamiętam grupy, która nie wdrożyłaby tego pomysłu.
O 19:50 siedliśmy przy P16.
O 20:30 ogłosiliśmy spotkania koniec.


Dziękuję uczestnikom, wydziałowi MIM UW, firmie Javart oraz Tobie za przeczytanie sprawozdania. Zapraszam na kolejne spotkanie, które odbędzie się już za 2 tygodnie. Do zobaczenia!

p.s. Zachodzę w głowę, jak gromadzić rozwiązania, aby stały się częścią projektu scalania na GitHubie. Pomysły mile widziane.