Sunday, February 28, 2016

2016-02-18 - Lambda Days 2016

Zaczniemy od propagandy, czyli - ludzie, płaćcie składki JUGa, bo można wygrać wejściówki na konferencje :)

Wejściówkę wygrałem i pojechałem na Lambda Days do Krakowa, 18-19 lutego 2016 r. Prelekcje odbywały się równolegle w 3 salach Auditorium Maximum UJ.

Na początek...

...muszę wspomnieć o niemym bohaterze tego wydarzenia, czyli aplikacji do głosowania. Prosta, ładna - jeden ekran, trzy emotki (yay, meh, ney), które wdzięcznie pulsują pod palcami kolejnych uczestników. Po zakończeniu każdej prelekcji przed przed drzwiami czekał człowiek z obsługi z tabletem w ręku. Wyniki nie były jawne, ale widać było, że dużo osób oddaje głosy i kosztuje ich to minimum wysiłku.

Pakiet startowy, oprócz identyfikatora, obejmował płócienną torbę w logiem, stos ulotek, cukierki z masy cukrowej z małą lambdą oraz ołówek. O papierowy program trzeba było poprosić w rejestracji, naraz tylko na jeden dzień. I od razu nieaktualny, ale to uroki druku.

Przybyłem na miejsce kilka minut po otwarciu rejestracji, więc było mi dane zobaczyć jak ktoś na szybko prasuje narzutę na stoisku sponsorskim, a korytarze powoli zapełniają się uczestnikami.

Wszystkie prelekcje były nagrywane, a plotka głosi, że powinny pojawić się w ciągu miesiąca. Zobaczymy! Pierwsze zaczęły się już pokazywać na YouTube, więc polecam odwiedzić stronę konferencji, a potem wyszukać tytułami prelekcje.

Aktualizacja: filmy pojawiają się na stronie konferencji! Wystarczy wejść w profil prelegenta, by zobaczyć udostępnione materiały.

Pierwszy dzień...

...rozpoczął się krótkim wstępem, opóźnionym o 20 minut, ale i tak zdążyli przejść przez wszystkie slajdy powitalne.

Wstępniak płynnie przeszedł w pierwszy keynote - Propositions as Types. Philip Wadler, po wstępie historycznym opowiadał o paralelach między logiką a programowaniem (a dokładniej prosto typowanym rachunkiem lambda), które zostawili nam po sobie Haskell Curry i William Howard - w skrócie - program jest tezą, a jego wykonanie dowodem. Jednym z wniosków wykładu było to, że są języki programowania, które ktoś odkrył czy tez zbudował wokół odkrycia (matematycznego), a są też takie, które ktoś wyssał z palca, jak Java czy C++. Te pierwsze są lepsze. Nazwiska do zapamiętania (i prace do do przeczytania): Hilbert (Entscheidungsproblem), Gödel (Incompleteness, Recursive functions), Church (Lambda calculus), Turing (Turing Machines). Na zakończenie dowiedzieliśmy się, że najnowszym problemem, nad którym pracuje też sam Wadler, są typy sesyjne, opisane po raz pierwszy przez Kohei Hondę w 1993, a wywiedzione z logiki linowej (Jean-Yves Girard, 1987). Jest już nagranie!

A brief history of history of programming languages: sprawdźcie kto stworzył ALGOLa, a następnie przeczytajcie przynajmniej po jednej publikacji każdego z autorów. Jeszcze tego nie zrobiłem, ale najwyraźniej warto!

The mysteries of Dropbox: testowanie synchronizacji plików jest trudne - autor QuickChecka, John Hughes, zrobił to z kolegami za pomocą laptopa, kilku maszyn wirtualnych i QuickChecka dla Erlanga. Nie było to robione na zlecenie Dropboksa! Polecam przeczytać opis metodologii, bo omawia, jak przetestować złożony system za pomocą losowych danych. Tak, znaleźli kilka przypadków brzegowych i zgłosili je Dropboksowi.

Zaliczyłem dwie sesje o Data Science, które pokazały jak powinno się promować DS - za pomocą ciekawych pytań! Pierwsza z nich zaraz po lunchu: A board game night with geeks i pytanie: czy można zremisować w Quarto? Quarto to gra planszowa, w której trzeba na planszy 4x4 ułożyć w rzędzie, kolumnie lub kwadracie zestaw klocków, które mają wspólną cechę. Jeśli użyjecie SAT solvera, to dowiecie się, że owszem, można w tej grze zremisować. Kod i prezentacja są dostępne na GitHubie. Tych samych metod używa się, m. in., przy planowaniu rozkładów, testowaniu i sekwencjonowaniu DNA.

W następnej prelekcji - Teaching functional programming to n00bs in mobs - Rob Martin przekonywał, że powinniśmy uczyć wszystkich juniorów programować funkcyjnie! Dlaczego? Bo nauczyć ich funkcyjnego myślenia jest prościej niż seniorów, trudno jest zatrudnić dobrego seniora, a ci seniorzy, których już masz, będą się lepiej rozwijać, jeśli będą mogli kogoś uczyć. Do tego dwie lektury podane przez prelegenta: Why Functional Programming Matters i Why "Why Functional Programming Matters" Matters. Druga część prelekcji była pochwałą dla “mob programming”. Programowanie grupowe - 4-15 osób siedzi nad jednym problemem, tylko jedna klawiatura i myszka, jeden (duży) monitor. W takim środowisku powstaje lepszy kod (prezentacja z perspektywy roku) i sprzyja ono równomiernemu rozwijaniu kompetencji - w grupie większość stanowią juniorzy. I jeśli chcecie rozumieć funkcyjne koncepcje lepiej, to uczcie się Haskella ;)

Byłem na dwóch “małych” prelekcjach. Pierwsza, Elixir and Elm - the perfect couple, wychwalała duet Elm + Elixir, zaznaczając jednocześnie, by starać się wybierać narzędzie (język, framework itd.) do potrzeb, zamiast używać zawsze złotego młotka. Druga, Embracing change - how to introduce Clojure into your company technology stack seamlessly, traktowała o tym, jak wprowadzić Clojure, albo jak twierdził autor - dowolną nową technologię, do swojej organizacji. Krok pierwszy: zdobądź pierwszych wyznawców, krok drugi: wybierz mały, niekrytyczny projekt, krok trzeci: ???, krok czwarty: profit, nowa technologia została wprowadzona. Prelegentowi się udało, a prostym projektem był serwis do healthchecku, który odpowiadał tylko “żyję!”, jeśli serwer działał.

Na koniec pierwszego dnia odbyło się 5 lightning talków, które niestety przegapiłem, bo dołączyłem do grupy dopytującej Roba Martina, jak np. mierzyć wydajność pojedynczych pracowników w takim programistycznym tłumie. Po pierwsze: nie rób tego, używaj retrospektyw żeby dawać sobie wzajemną informację zwrotną, przy czym jeśli jesteś zwierzchnikiem, to najlepiej nic nie mów, żeby niechcący nie uciszyć jakiejś inicjatywy (prowadzącemu się to raz zdarzyło). Po drugie: jeśli masz nóż na gardle, to zrób 360 Review.

Afterparty było w The Legend Music Club.

Drugi dzień...

...otworzył moim zdaniem najsłabszy z 3 keynote’ów - Things that Matter autora Siedem języków w siedem tygodni. W skrócie: języki, których autorom przyświecała jakaś idea i którzy pozostali jej wierni są fajne (i o nich poczytacie w książce, jest Haskell!), a Java jest zmyślona.

Pierwsza zwykła prezentacja, na którą trafiłem to The Zen of Akka prowadzona przez Konrada Malawskiego z Typesafe’a (teraz Lightbend). Zen Akki składa się z 13 punktów, których jednak nie pokuszę się o szczegółowe omówienie i będziecie musieli wyciągnąć je z nagrania, kiedy się ukaże. Kilka przykładów to:
  • Używajcie niemodyfikowalnych wartości i unikajcie jak ognia modyfikowalnych zmiennych; 
  • Unikajcie javowej binarnej serializacji - użyjcie Kryo, Thrifta, ProtoBufa albo czegokolwiek innego, co nie jest domyślnym mechanizmem; 
  • Akka to nie framework - to zestaw narzędzi - można z niego wybrać swoje ulubione części i nie wkładać do projektu całości. 
Do poczytania - rozproszone strumienie dla Akki, o których prowadzący wspomniał w odpowiedzi na jedno z pytań po prezentacji: Intel Gear Pump.

Druga prezentacja tego dnia to druga sesja z Data Science: The F#orce awakens, czyli kto jest najważniejszą postacią w Star Wars i dlaczego epizody I-III mają kiepskie oceny? Trzeba dokonać analizy grafu stworzonego ze sparsowanych scenariuszy Gwiezdnych Wojen. W samej analizie pomaga nam język R. W epizodach I-VI najważniejszy jest Obi-Wan, a jeśli dołożymy VII, to jest to C3-PO! Ale to tylko wierzchołek góry lodowej, dużo więcej znajdziecie na blogu autorki: The Star Wars social network, Star Wars social networks: The Force Awakens. W prawdziwym życiu tych samych technik używa się do analizy rozmów online przez czaty, e-maile, przy pracy z siatkami zaopatrzenia czy też do analizy sieci biologicznych.

Następna prezentacja, Getting started with Frege [czyt. frige], zachęcała do zapoznania się z implementacją składni Haskella dla JVM. Za przykład posłużyła prosta aplikacja do walidacji JSONa. Język kompiluje się do Javy, nie do bytecode’u. Chciałbym coś więcej o tym powiedzieć, ale sama implementacja jeszcze nie jest w pełni kompatybilna, więc niestety nie będzie mi dane wprowadzić jutro Haskella do projektu niskim kosztem ;) Można oczywiście obserwować projekt na GitHubie.

Kolejną była prezentacja dwóch ludzi z TomToma, którą mogliście zobaczyć już na spotkaniu JUGa - Practical demystifcation of CRDT. CRDT to Conflict-free Replicated Data Type. Tło prezentacji to usługa synchronizacji dla danych z nawigacji (np. ulubionych miejsc, zapisanych tras). Magia tych typów polega na tym, że obsługują przemienną i przechodnią operację łączenia, dzięki czemu nie ma znaczenia w jakiej kolejności nakładane są zmiany - wynik będzie zawsze taki sam. Omówili typy danych, których używają, dochodząc do tego, że musieli wymyślić własny, bazujący na OR-Set (Observed/Removed Set), OUR-Set (OR-Set + Updated). Taki zbiór trzyma w sobie listy utworzony, zaktualizowanych i usuniętych obiektów. Jednym z problemów przy używaniu CRDT jest brak niezawodnego zegara, więc kompromisem jest taka priorytetyzacja dostępnych czasów: zegar GPS > czas serwera > czas lokalny+1 > czas lokalny. Prelegenci powiedzieli, że byli na prezentacji Johna Hughesa, więc dowiedzieli się też o nowych sposobach, w jaki mogą ten system przetestować. Post, który zainspirował prelegentów do zgłębienia tematu: CRDTs for fun and eventual profit.

Ostatnia zwykła prelekcja to Purely Functional Web Apps, która opowiadała historię aplikacji internetowej napisanej w Haskellu i Elmie. Potrzebowali aplikacji, która na podstawie historii pull requestów z ich GitLaba ekstrapolowała potencjalną długość trwania review w zależności od ilości kodu. Do części serwerowej użyty został zestaw narzędzi Haskell Servant. Po stronie Elma za to pomocny okazał się jego Time Traveling Debugger, który używanie wygląda jak pokaz magiczny. Padło też zdanie, że powinniśmy nauczyć się Haskella, bo dzięki temu staniemy się lepszymi programistami.

Ostatni keynote - The Truth about Types Bartosza Milewskiego - mówił o teorii kategorii. Kategoria to byt matematyczny, który składa się z obiektów, przekształceń między nimi (strzałek) i operacji łączenia ze sobą strzałek. Dowiedzieliśmy się, że tak jak istnieją paralela między logiką i rachunkiem lambda, tak można wykazać paralelę między nimi i teorią kategorii. Prezentacja była mocno abstrakcyjna. Przeszliśmy przez Kategorię Zbiorów (Set Category), intuicjonistyczną logikę, kontynuacje, a zakończyliśmy stwierdzeniem, że skoro istnieją analogie między tymi trzeba dziedzinami (logika, rachunek lambda, teoria kategorii), to może istnieje jakaś większa abstrakcja, która obejmie je wszystkie? Tym właśnie zajmują się teraz badacze. Niestety nam, zwykłym zjadaczom chleba, pozostaje czekać.

Koniec!


Wyjazd uznaję za udany, konferencja bardzo mi się podobała. Mam nadzieję, że będę mógł pojechać na nią również w przyszłym roku :)

Sunday, February 7, 2016

Happy New Year - January 2016 @ JUG Lodz

Modularity and OSGI

We started 2016 by having a chance to listen an interesting lecture from true IT Industry veteran - Milen Dynkov (https://twitter.com/milendyankov). Milen spoke about many good ways of achieving modualarity in the project and later during great live demo shown practical implementation of his concepts with usage of OSGI.

You can watch the full presentation here :

Learning Functional Programming

Next week we switched to Functional Programming theory and a question - what is the best way to learn this approach? Paweł Włodarski (https://twitter.com/pawelwlodarski) described some practical and theoretical aspects of FP - but just by listening FP can not be mastered - that's why soon a full cycle of FP workshops will take place in the city of Lodz - material for the first one is ready FP in Java8 - workshop 1 material

Back to reality - Java memory model

In the last week of January Tomek Borek (https://twitter.com/LAFK_pl) brought us back to earth with his great presentation about Java Memory Model where he described with many details how physical architecture influences computations and our daily work.

What next

When I'm writing those wrods Tomek Dziurko has already performed his presentation about recruitment in IT and on February 16 we had a chance to see two great presenters from Tomtom : http://www.meetup.com/Java-User-Group-Lodz/events/228119198/. After their presentation on JUG Lodz Dmitry and Nami are going directly to Lambda Days conference where they also perform as presenters.

Sunday, January 3, 2016

JVM Armageddon just before Christmas (and more ) - December @ JUG Lodz

Take a look at the picture below to feel the magic of December and then you can move on to read about presentations

JVM Armageddon

At the very beginning of the last month of 2015 we had a pleasure to listen to very experienced speaker - Jaroslaw Palka @j_palka - who told us many interesting facts about JVM internals.

So we had a chance to see some parts of JVM source code where exceptions are literally swallowed and hear stories about debug sessions "till 4 A.M."

Haskell Continues

This time on Haskell Workshops Artur Czajka @tr00per87 was teaching about Functors, Monads and Monad transformers.

Haskell is a very good way to learn Functional Programming - more people should try it

For the first time in Lodz - Security Workshops

And for the first time in Lodz we had a workshop about general topic of applications security. Marcin Mela from HARMAN give us many examples how insecure web applications can be, which cryptographic function is safe and how easily it is to find on google someones private cameras streaming live content!

In the second part we had one hour to hack small web application and find all security holes.

Spark & Dataframes

We also had a chance to learn about "bridge between Programming and Data Science" - Dataframes - during workshops prepared by Paweł Włodarski @PawelWlodarski

This workshops was organised in Business Link where we receive a free room with wifi!

Lambda Architecture

The last presentation in 2015 was made by Kamil Owczarek and the topic was "Lambda Architecture"

So we saw an alternate application architecture centered around Big Data

2016

We are going to start with :

Everyone's welcome!

Monday, December 14, 2015

2015-12-04 Droidcon - recenzja konferencji

JUG i wejściówka na Droidcon.


Głównym celem JUG Łódź jest dzielenie się wiedzą oraz wspieranie łódzkiej sceny IT. Jednak nie są to jedynie cotygodniowe spotkania, ale również i stowarzyszenie, które stoi za ich organizacją. Będąc oficjalnym jego członkiem możemy wspierać tą inicjatywę, a jednocześnie być wspieranym, chociażby dzięki bezpłatnym wejściówkom na konferencje. W przypadku Droidcona to mi udało się takową uzyskać, dzięki czemu mogę się podzielić z Wami wrażeniami z tego eventu.

Konferencje mobile.


Od kilku lat rokrocznie słyszymy, iż rok 201x jest rokiem mobile. Przejawem tego jest coraz większa liczba eventów oraz konferencji poświęconych technologiom mobilnym. Obok najpopularniejszych konferencji w Polsce takich jak Mobilization czy MCE, których nie trzeba przedstawiać zawitała u nas również seria Droidcon, marka ciesząca się uznaniem wśród programistów poruszających się w ekosystemie Google’a na całym świecie. 
Jak sama nazwa wskazuję, mamy do czynienia z konferencją wyspecjalizowaną w temacie zielonego robocika. W dwa dni możemy uczestniczyć w prawie 30 prelekcjach odbywających się w dwóch równoległych trackach, poświęconych jedynie tworzeniu aplikacji na system Android, co według mnie stanowi najistotniejszy element tej konferencji. Taka specjalizacja umożliwia bowiem nie tylko koncentrację na najnowszych trendach, ale również poruszenie tematów mniej znanych społeczności i niekoniecznie modnych. Zanim jednak rozwinę nieco tą myśl, chciałbym zwrócić uwagę na samą organizację wydarzenia.

Miejsce organizacji konferencji.


Zgodnie z informacjami, które można było otrzymać podczas konferencji, Droidcon jako następca konferencji Krakdroid, odbywa się już po raz drugi w dość sympatycznym mieście Kraków. Nie mniej, nie więcej dla osób z Łodzi i okolic oznacza to wyprawę w godzinach wczesno porannych, jeżeli dojazd na konferencję planujemy tego samego dnia. Po dotarciu, miejscem tegorocznej edycji okazuje się hotel Best Western, dzięki czemu możemy odnieść pozytywne wrażenie co do standardu samego wydarzenia. 
Tradycje są po to, aby je kultywować, dlatego też każdy z uczestników podczas rejestracji zostaje wzbogacony o kolejną pozycję garderoby. Po sprawnym odhaczeniu się i otrzymaniu suwenirów nie pozostaje nam nic innego jak udać się na prelekcje. Tu niestety wita nas bardzo wąski korytarz, na którym swoje stoiska dodatkowo rozstawili sponsorzy. Na całe szczęście jednak przerwy między kolejnymi talkami są bardzo krótkie, dzięki czemu nie jest to aż tak dotkliwe. Same prelekcje odbywają się w dwóch salach, jednej bardzo pojemnej, drugiej natomiast bardzo “przytulnej”. Mniejsza sala, sprawia niezbyt przyjemne wrażenie, gdyż talki, które się w niej odbywają zazwyczaj cieszą się mniejszą popularnością, co przy małej frekwencji może napawać smutkiem. Z drugiej strony, przy dwóch bądź trzech ciekawszych, niemożliwym było się normalnie pomieścić.

Wartość merytoryczna


Kończąc dosyć przydługi wstęp, chciałbym przejść do tego co najważniejsze, czyli samych wykładów oraz ich poziomu. W tym momencie, muszę stwierdzić, iż była to jedna z lepiej prowadzonych konferencji, które udało mi się ostatnio odwiedzić. Nie chodzi mi tu o poziom merytoryczny prelekcji, ale doświadczenie ich prowadzących oraz obycie sceniczne. W tej kwestii prezentacje stały na bardzo wysokim poziomie i nie sposób było dostrzec na nich braku przygotowania bądź stresu, co często mimo sporej ilości posiadanej wiedzy prowadzącego, może zepsuć ogólne odczucie słuchaczy. Z drugiej strony zdarzało się, że prezentowany materiał nie był przeznaczony dla doświadczonych programistów, a raczej dla osób, które swoją przygodę z Androidem dopiero zaczynają.
W agendzie nie mogło zabraknąć prezentacji o RxJava, frameworku będącym obecnie na topie oraz o wszelkich nowościach pojawiających się wraz z premierą systemu Marshmallow. Informacje o najnowszych technologiach są zawsze czymś czego oczekujemy od konferencji branżowych, tak i też było w tym przypadku. Dla mnie jednak najlepszymi prezentacjami były te odnoszące się nie do samych trendów czy też najnowszych frameworków, lecz do samego Androida jako systemu.  Keynote poprowadzony przez Aleksandra Piotrowskiego o komunikacji międzyprocesowej z wykorzystaniem Bindera, czy też talk Romana Mazura poruszającego tematyke ADB shella, przypomina nam dosyć ważną rzecz, iż mimo dziesiątek wysokopoziomowych bibliotek Javowych nadal mamy do czynienia z systemem Linuksowym. Temat ten jest rzadko poruszany, jednak dla mnie osobiście bardzo interesujący, przez co uważam to za ogromny plus Droidcona. 
Oprócz wyżej wymienionych prezentacji, na wartą odnotowania zasługuje również prezentacja Michała Tajcherta, który dzielił się ze słuchaczami swoim doświadczeniem, jak przejść od pomysłu na aplikację do jego wykonania i popularyzacji oraz kończąca konferencję prelekcja Wojtka Kalicińskiego - “20 tips for building better apps”. 
Na finałowym talk’u moglibyśmy zakończyć nasze rozważania dotyczące konferencji, jednak na tych bardziej cierpliwych czekał barcamp. Chętni do zaprezentowania swojej, krótkiej 20 minutowej prezentacji, mogli zgłaszać swoje pomysły w trakcie trwania konferencji. Na koniec zostało wyłonionych osiem tematów, które zaprezentowane zostały w formie lightning talków. Według mnie osoby, które opuściły Droidcona przedwcześnie, mogą żałować braku swojej obecności. W tym przypadku również, bardzo dobre prezentacji dali A. Piotrowski o rootowaniu urządzeń, jak i R. Mazur o kontrybucji kodu do projektu Android.

Podsumowanie


Podsumowując, konferencję Droidcon oceniam pozytywnie. Przede wszystkim ze względu na obecność tematów innych niż te o najnowszych frameworkach, które królują na większości konferencjach. Oczywiście każdy jednak znajdzie dla siebie coś ciekawego, choć odległy termin od corocznego Google I/O, nie sprzyja odnalezieniu na niej samych nowinek i ciekawostek.

Sunday, December 6, 2015

November @ JUGLODZ - learning by deleting and communities cooperation

Global Day of Code Retreat

The main event in November on JUG Lodz was the Global Day Of Code Retreat workshop. This time we had a pleasure to have Adrian Bolboaca (https://twitter.com/adibolb) as a host.

Adrian gain a lot of experience by hosting Global Day of code retreat year after year all over the world and this time he shared his knowledge with JUG Lodz. You can check participant's opinions here --> Interviews after GBDC.. Interviews are in polish but all if you don't know polish language - everyone was more than HAPPPY:)

Cooperation between communities

A day before GDCR Adrian presented another topic titled "Legacy Code is Fear" where he explained how you can defend your code against erosion.

There was also one additional reason why this meeting was unique. For the first time we as a JUG had organized a meeting along with Dev@Lodz group (http://www.meetup.com/dev-LDZ/ & https://twitter.com/devldz). The idea was that each group invite one presenter so "our" speaker was Adrian and dev@Lodz invited Maciej Aniserowicz (https://twitter.com/maniserowicz) who spoke about CQRS.

Presentations

AOP

We started this month with a presentation made by Damian Sińczak (https://twitter.com/dsinczak) about AOP.

You can see the presentaiton here :

Docker

Piotr Kieszczyńs­ki (https://twitter.com/pkieszcz) has started a new cycle about Docker.

Ansible

We also had a chance to listen about Ansible during a presentation prepared by Dominik Stożek (https://twitter.com/dstozek)

And of course there is a presentation :

Workshops

First of all Akka returned to JUG Lodz thanks to Robert Budźko (https://twitter.com/rbudzko). This time we learned about akka persistence functionality

Haskell adventure continues thanks to Artur Czajka (https://twitter.com/tr00per87). This time we understood the power of Type classes and magic of Functors

Finally we could learn more advanced features of Apache Spark's RDD thanks to Paweł Włodarski (https://twitter.com/PawelWlodarski)

JUG Lodz on IT Fares

We gave also two presentation on a local IT Faires. First one was about Monad by Artur Czajka

Second one was an introduction to Apache Spark by Paweł Włodarski

Learn to teach - why just having a knowledge is not enough

There is a lot of very smart people in Lodz however being smart is not enough to share knowledge with community. You need also to have proper "pedagogical skills". That's why for the first time at JUG we had a chance to gain "meta knowledge" about sharing knowledge. Thanks to Marta Wachołek (https://pl.linkedin.com/in/martawacholek) and Maciej Jabłoński (https://twitter.com/j4b0l) JUG Members have a possibility to train their presentation skills during public speaking workshops.

What's next?

It is already December 6th when I'm writing this word so an excellent presentation about JVM internals prepared by Jarek Pałka already took place. Soon we will have another Haskell and Spark workshops, we will see Lambda Architecture and for the first time Security Workshops will be organized. Stay Tuned! http://www.meetup.com/Java-User-Group-Lodz/
***

Sunday, November 29, 2015

2015-11-14 Recenzja z Global Day of Code Retreat

Zastanawialiście się kiedyś co łączy programistów Java, Haskell’a, Android'owców i twórców gier w .Net? Odpowiedzi może być mnóstwo, natomiast jedna jest dość oczywista - ciągła chęć rozwoju!
Z tego też powodu grupa zapaleńców postanowiła poświęcić wolną sobotę 14 listopada i wspólnie wziąć udział w Global Day of Code Retreat. Była to już 5 łódzka edycja wydarzenia, którą tym razem poprowadzili: Adrian Bolboaca (nasz gość - trener i coach w firmie Mozaicworks) oraz znani w łódzkim półświatku programistycznym Paweł Włodarski oraz Rafał Lenarczyk.

Czym jest Global Day of Code retreat?

Całodniowy warsztat organizowany równocześnie na całym świecie, a mający na celu szlifowanie swoich umiejętności programistycznych. To tak w największym skrócie.    Wszystkie warsztaty przebiegają według algorytmu:
1. Prosty programistyczny problem - Gra w życie Conway-a
2. Pracuj w parze żeby rozwiązać problem
3. Prowadzący dokłada ograniczenia żeby zmusić Was do zmiany podejścia
4. Po każdej rundzie (45min) kasujemy kod, zmieniamy parę i robimy wszystko jeszcze raz!
Brzmi trochę dziwnie? Uwierzcie - to naprawdę działa. Dzięki pracy w parach możemy uczyć się wzajemnie od ludzi z całego środowiska. I absolutnie nieważne jest jakie jest twoje doświadczenie - tutaj nawet architekt może nauczyć się czegoś od juniora.

Warto było?

Przysłowie mówi, że trening czyni mistrza. Praktyka pokazuje, że tak jest również w rzeczywistości. Dla mnie udział w warsztatach był okazją do rewizji swoich umiejętności programowania przy użyciu TDD, funkcyjnego czy programowania na czas ;) Dodatkowo przekonałem się jak ciężko jest zaprogramować choćby mały, ale sensowny kawałek kodu w 45 minut.
Adrian jako doświadczony prowadzący w każdej rundzie starał się wyprowadzić uczestników z ich własnych stref komfortu i przekonać do spróbowania czegoś nowego.
Dzięki temu każdy z uczestników miał okazję przećwiczenia:
  • podejścia Clean Code
  • tworzenia oprogramowania zgodnie z zasadą TDD
  • programowania przy użyciu funkcyjnego paradygmatu
  • programowania w 2-minutowych iteracjach - przez dwie minuty należało napisać test oraz implementację funkcjonalności. Jeśli nie podejście się nie udało, kod by revert’owany do wcześniejszej postaci i zabawa zaczynała się od początku. Iście kowbojskie podejście! ;)

Międzynarodowe towarzystwo

Tegoroczna edycja skupiała wydarzenia z aż 144 miast rozsianych na całym świecie. Zgodnie z formą GDCR elementem wydarzenia są połączenia z warsztatami prowadzonymi równolegle w innych miastach. Dzięki wysiłkom Rafała Lanarczyka, który pełnił pieczę nad stroną techniczną, również nam udało połączyć się z kilkoma grupami z całego świata.



Podsumowując, GDCR jest świetną okazją do szlifowania swoich umiejętności przy równoczesnej masie dobrej zabawy, poznaniu nowych ludzi, oraz (co dla niektórych najważniejsze :P) zjedzenia smacznego śniadania i obiadu sponsorowanego przez organizatora tegorocznej łódzkiej edycji - firmę Fujitsu.