Sunday, July 24, 2016

2016-06-30 – Polyconf 2016

Ucz się co najmniej jednego nowego języka programowania każdego roku. Poszczególne języki rozwiązują te same problemy na różne sposoby. Ucząc się różnych podejść jesteś w stanie poszerzyć swoje horyzonty myślowe i uniknąć zapadnięcia w rutynę.
Pragmatic Programmer: From Journeyman to Master, Portable Documents, tłumaczenie własne
Tym krótkim cytatem chciałem odpowiedzieć na pytanie ale po co programista Javy ma jechać na taką konferencję? jak również i podsumować moje oczekiwania względem Polyconfa.
Dzięki współpracy łódzkiego JUG-a z organizatorami wielu ciekawych konferencji, opłaceniu symbolicznej składki 😉 i łutowi szczęścia miałem okazję wziąć udział w tym nietypowym wydarzeniu, a moją relacją postaram się Wam pomóc odpowiedzieć na pytanie, czy warto pojechać tam za rok oraz które prelekcje warto zobaczyć na YouTubie!


Czas

Już sama formuła konferencji była dość zaskakująca: trwała ona trzy dni, jednakże prelekcje odbywały się tylko jednym torem. Niosło to za sobą dosyć przewidywalne niewygody:

  • nie dało się ominąć prelekcji, których temat nie był dla nas interesujący (o ile nie odbyły się na początku lub końcu danego dnia)
  • miało się poczucie, że sama konferencja mogła trwać krócej (a więc być tańszą zarówno dla organizatorów, jak i dla uczestników) realizując te same cele i niosąc te same korzyści
Jak i pewne nieco mniej przewidywalne zalety:
  • brak konieczności wyboru toru i przemieszczania się w trakcie przerw, wraz z zaskakująco niską ilością stanowisk sponsorów i partnerów (w liczbie 1, które to stanowisko po dniu pierwszym stało już opuszczone) niewątpliwie wpłynęło na ogromne zachęcenie uczestników do networkingu, niebywałe wręcz na tle innych konferencji jakie znam
  • pozory mylą i tematy wydające się nieciekawymi (lub zwyczajnie – niezbyt dobrze nazwany) bywały jednymi z bardziej interesujących w mojej skromnej opinii
Dodać do tego trzeba również dużą rozpiętość czasową na przestrzeni pojedynczego dnia – prelekcje odbywały się od 9:00 do 19:00 każdego dnia. 
Ostatecznie, z perspektywy człowieka dojeżdżającego do miasta konferencji, godziny konferencji oceniam bardzo dobrze (choć zachowanie skupienia do samego końca wymagało stałego uzupełniania poziomu kofeiny w krwiobiegu), podczas gdy wolałbym, gdyby sama konferencja została skrócona do dwóch dni.
Ostatnią, fatalną cechą temporalną konferencji był konflikt z Confiturą, która odbyła się w ostatni dzień trwania Polyconfa. Zostałem do samego końca, jednakże w sobotę żałobnie przywdziałem koszulkę z poprzedniej edycji warszawskiej konferencji 😭.


Miejsce

Konferencja odbyła się na WPiA UAM w Poznaniu. Porównując uczelnię jako miejsce odbywania się konferencji z zeszłymi Confiturami, poznański uniwersytet wypadł całkiem przyzwoicie. Szczególną cechą (na tle moich doświadczeń) sali wykładowej była matryca monitorów w miejscu ekranu dla rzutnika. Kosztem widocznych krawędzi monitorów (nie aż tak duży problem) mieliśmy bardzo wyraźny obraz bez zgaszonych świateł na sali. Krzesełka również dawały radę.
Ogólnie miejsce oceniam nieźle, chociaż, z oczywistych powodów, do krakowskiego centrum konferencyjnemu było mu daleko.


Catering

Organizatorzy zapewnili mobilny kawomat, owoce, relatywnie zdrowe obiady (sałatka z kurczakiem, kanapki) oraz bardzo dużo bezwzględnie niezdrowych przekąsek. Ogólnie coś dla każdego, ale ostateczną ocenę pozostawiam Wam 😉.


Networking

Tak jak wspomniałem, formuła konferencji inherentnie promowała dyskusje pomiędzy uczestnikami, gdzie zwykle duża ilość stanowisk sponsorów i wyjazdy grupowe (ergo: trzymanie się we własnych grupach) mocno je ograniczają. Udało mi się odbyć wiele interesujących rozmów z programistami o różnych tłach. Prelegenci siedzieli pośród pozostałych uczestników, dlatego dostęp do nich również był bardzo łatwy.
Ostatecznie nie jestem w stanie przekazać tu wyciągniętych wniosków, ponieważ to zawsze dosyć osobista kwestia, jednakże fajnie było wyjść z szafy 😉.


Cherry picks

Trzy dni konferencji implikują relatywnie dużą ilość wykładów, z których nie wszystkie mogą być interesujące dla każdego. Rozpoczynające konferencję warsztaty, niestety, nie zostały nagrane – jednakże warsztat nt. Reacta i Clojure był – w krótkich, żołnierskich słowach – niewypałem). Również dyskusje po wykładach są nieodzowną częścią konferencyjnego doświadczenia. Dlatego też poniżej przedstawię pokrótce wykłady, które uważam za najbardziej interesujące i warte obejrzenia.


Functional Thinking – Artur Czajka

Programowanie funkcjonalne wdziera się do wszystkich platform i języków już od kilku lat. Nasz kolega z JUG Łódź w krótkiej (wykłady trwały pół godziny) i soczystej formie pokazał niedowiarkom (😜), jak funkcjonalne myślenie upraszcza wyrażanie codziennych algorytmów w programowaniu, a także jak radzić sobie z sytuacjami pozornie trudnymi dla sfunkcjonalizowania.
Prelekcja od samego początku stanowiła świetny wstęp do trendu funkcjonalnego programowania widocznego wyraźnie w całej konferencji. Jej temat nieco pokrywał się z OOP to FP – Julia Gao, jednakże Artur, w mojej opinii, znacznie lepiej wypełnił swoje zadanie.


Dynamics of change: why reactivity matters – Andre Staltz

Skoro odbębniliśmy już functional, to czas na reactive...
Jednak na poważnie, prezentacja Andre Staltza jest następną w kolejności odbywania się na konferencji, którą z czystym sercem mogę polecić każdemu. W bardzo dopracowanej, zwięzłej formie odpowiada ona na tytułowe pytanie – dlaczego reaktywność jest istotna? Znajdziemy tu rozważania na temat rozwiązań typowych problemów w ujęciu language agnostic (co dla mnie było bardzo istotne – bardzo duża ilość prelekcji dotyczyła osobistych problemów egzystencjalnych JavaScripta, gdzie dla programistów innych języków ciężko było wynieść coś ciekawego...), w tym porównania np. z AOP (bardzo trafne wg mnie) czy elementy kognitywnego podejścia do tworzenia kodu (czyli jak myślę o swoim kodzie?).
Ogólny wniosek z prezentacji mógłby brzmieć: jest miejsce na programowanie reaktywne, jest i miejsce na programowanie pasywne. Andre stwierdził jednakże, że do wszelkich problemów powinniśmy najpierw podchodzić w sposób reaktywny... Z czym osobiście uprzejmie się nie zgadzam, jednakże gorąco polecam obejrzenie prelekcji samemu.


Oden – A Functional Programming Language for the Go Ecosystem – Oskar Wickstrom

Polyconf obfitował w prelekcje w różnej formie prezentujące różne ciekawe, nowe (i stare) języki programowania. Prezentacja nt. języka Oden jest jedną z nich, którą mógłbym polecić, ponieważ:
  • bardzo łatwo go wypróbować
  • została zaprezentowana przez jego twórcę
  • jest to język na platformę Go, co samo w sobie jest dosyć interesujące
Niestety, sam język nie sprawia wrażenia, jakbyśmy za kilka lat mieli spodziewać się napisanych w nim, ogólnie dostępnych aplikacji (a, tym bardziej: sami w nim pisali 💰) – słowo eksperymentalny jest tu kluczowe, ale dla wspomnianego celu poszerzania horyzontów, warto poświęcić mu trochę uwagi i spróbować napisać kilka prostych algorytmów w REPLu. Poeksperymentować. Ja miałem sporo zabawy 😊.
Z innych prezentacji tego typu wyróżniłbym jeszcze My Adventure With Elm – Yan Cui. Poznanie podstaw Haskella mocno otwiera umysł na nowe idee, a istnienie takiego-jakby-Haskella transpilowanego do JavaScriptu (gdzie, wydawałoby się, nie da się obejść bez mutowalnego stanu) jest co najmniej fascynujące!


The Linguistic Relativity of Programming Languages – Jenna Zeigen

Tzw. miękkie podejście do programowania, które niezbyt interesowało mnie na początku mojej kariery, utorowało sobie ostatnio drogę do centrum mojego zainteresowania. Dlatego też już sam tytuł prezentacji pani Jenny wzbudził moje ogromne zainteresowanie.
To, w jaki sposób poznane języki kształtują (i ograniczają) nasze myślenie o programowaniu – taki polski, alternatywny tytuł wybrałbym dla prezentacji. Ciężko napisać tu coś więcej, więc po prostu – polecam.
Ja zasadniczo się nie zawiodłem, chociaż w tym przypadku pół godziny na prelekcję to było zdecydowanie za mało (i to mimo, że prelegentka bardzo szybkim, wyraźnym mówieniem bardzo efektywnie wykorzystała dostępny czas). Bardzo chciałbym posłuchać o tym temacie więcej.
Po jednej z prezentacji, pewien uczestnik postanowił wykorzystać czas przeznaczony na pytania aby wyrazić swoje niezadowolenie z postulatów stawianych wobec swojego ulubionego języka (stety-niestety nie pamiętam jaki to był język, ale nic ciekawego). Wówczas pewna pani o wyraźnie zagranicznej proweniencji uprzejmie przerwała mu słowami przepraszam cię stary, ale czy ty masz jakieś pytanie, czy tak sobie gadasz? Nie mogłem wyrazić tego lepiej.
Jakież było moje zadowolenie, gdy chwilę później pani ta okazała się kolejną prelegentką. Wasze doświadczenia w tej kwestii mogą się różnić, ale Julia była jedną z najbardziej nietypowych prelegentek (w grupie obu płci), jakie miałem okazję słuchać.
Wyobraźcie sobie Zooey Deschanel z serialu New Girl opowiadającą o programowaniu. Mającą ADHD. Na amfetaminie.
Chociaż jestem przekonany, że Julia nie wspomagała się w nielegalny sposób przed swoim wystąpieniem, to np. narysowana przez nią laurka na cześć narzędzia strace sprawiła, że mimo odbywania się jej prelekcji pod koniec ciężkiego, drugiego dnia konferencji, nawet bez porcji kofeiny ciężko byłoby na niej przysnąć.
Sama treść prezentacji wydaje się być oprawiona nie do końca dobrym tytułem – dotyczyła ona głównie debugowania aplikacji na poziomie systemu operacyjnego, a dokładnie – Linuksa. Wydaje się być ona zatem ciekawa i trafna dla dosyć szerokiego grona programistów, jednakże to forma prelekcji wydaje mi się najbardziej intrygująca – a nie powiedziałbym tego o wielu wykładach w moim życiu 😉.


Ecto vs. ActiveRecord: A Tale of Two ORMs – Brad Urani

Porównania różnych podejść do tych samych problemów w różnych językach programowania powinny być, wg mnie, najbardziej akcentowanym tematem na takiej konferencji jak Polyconf. Z ubolewaniem stwierdzam jednak, że było ich zdecydowanie za mało, a część z obecnych było, w mojej skromnej opinii, zwyczajnie słabych, np. Becoming a Polyglot – APIs in 4 Languages, gdzie temat wydawał się być doskonały, ale wybór porównywanych języków był jednak zbyt... klasyczny.
Prezentacja pana Brada (którą na YouTubie możecie też znaleźć w nagraniu z innej konferencji) dotknęła tematu różnych podejść do warstwy dostępu dodanych. Znów, tytuł wg mnie jest niezbyt trafny, bo tytułowe, Elixirowe Ecto ORM-em nie jest, a Rubiowe ActiveRecord tylko w pewnym sensie, ale nie jest to ważne.
Ważne jest natomiast porównanie klasycznych podejść do dostępu do danych w programowaniu, gdzie chcieliśmy zakryć wszystko obiektami i zapomnieć, że ta baza tam pod spodem jest, więc stworzyliśmy sobie na to wyjątkowo przeciekające abstrakcje (po czym stworzyliśmy noSQLe, bo SQL przestał być wydajny...), a podejściem funkcjonalnym, gdzie dostęp do danych, jak wszystko, jest cudownie explicit...
Cóż, w zdaniu powyżej nie udało mi się zachować dziennikarskiej obiektywności. Na szczęście jestem programistą, a nie dziennikarzem, zatem niezależnie od waszych opinii polecam obejrzenie prelekcji Brada, a ja w tym czasie poczekam na podobną do Ecto bibliotekę na JVM-a 😉.


Podsumowanie

To oczywiście nie wszystkie dobre prezentacje z Polyconfa. Było też kilka fatalnych. Jednakże, jeśli chociaż jedna prelekcja na całej konferencji zmieni twoje podejście do programowania lub sprawi, że będziesz lepszym programistą (albo człowiekiem?), to znaczy, że konferencja była tego warta. To oczywiście zawsze wymaga pewnej aktywnej pracy oprócz pasywnego przyjmowania informacji. Trzeba przetestować tą nową bibliotekę, albo napisać coś na blogu, albo obejrzeć prelekcję jeszcze raz, albo podzielić się nią ze znajomymi.
Czy zatem warto było pojechać na Polyconfa? Warto. Czy pojadę za rok? Cóż, zdecydowanie lepiej sprawdzę kalendarz konferencji, gdyż opuszczenie Confitury było dość bolesne, a ja wolałbym mieć możliwość wybrania innego toru zamiast oglądania prelekcji o bardzo specyficznych problemach dotyczących tylko JS-a (z całym szacunkiem dlań, ale było go jednak za dużo).