...czyli krótka relacja z #41 spotkania meet.js Poznań. Zapraszam :)

Powrót na stare śmieci

Tym razem spotkanie odbyło się w starej, dobrej, sprawdzonej lokalizacji czyli w co-workingu +1 Za Bramką. Osobiście mi to bardzo odpowiada. Miejscówka w centrum, super dojazd ze wszystkich stron Poznania, bliskość potencjalnych pubów na afterek itp. Dlaczego w tytule wpisałem "powrót na stare śmieci"? Dla tych, którzy nie wiedzą, poprzednia edycja odbyła się w siedzibie Allegro na Grunwaldzie ;) ...a to już jest ładny kawałek od centrum :) Nie wiem jak to wychodzi kosztowo, ale moim zdaniem "+1" to najlepsza miejscówka na tego typu wydarzenie.

Miałbym tylko jedno zastrzeżenie. Mianowicie wczoraj bardzo szwankowało nagłośnienie. Mikrofon notorycznie przerywał. Nie na tyle, żeby nie można było zrozumieć prelegenta. Były to raczej takie mikro/mili sekundowe przerwy. Jednak powodowało to, że każdy prowadzący prezentację brzmiał tak, jakby mu drżał głos :) Tyczyło się to też Zibiego, który jako organizator spotkania wygłaszał krótkie komunikaty organizacyjne. Być może byłbym w stanie uwierzyć, że każdy z prelegentów był zestresowany i drżał mu głos (choć w rzeczywistości ich mowa ciała wcale na to nie wskazywała)...ale w to, że ZB się denerwuje na scenie meet.js to już raczej nie uwierzę :)

Drugą małą rzeczą do której mógłbym się przyczepić to brak statywu. Kamil Koterba, który występował jako pierwszy, miał w swojej prezentacji sekcję live-coding. No i wierzcie lub nie, ciężko się koduje jedną ręką, drugą przytrzymując sobie mikrofon :) Dlatego do pełnienia roli statywu został oddelegowany jeden z organizatorów Poznańskiego meet.js - Eryk. Może warto byłoby zrobić jakąś zrzutkę czy coś i zainwestować w taki biurkowy statyw, który dostępny byłby na każdym meet.js ? Tak mi po prostu wpadł pomysł do głowy ;) 39 zł + wysyłka to chyba nie majątek ... :)

Never write another HOC!

Tak jak już wspomniałem, pierwszym prelegentem był Kamil Koterba. Z Kamilem znamy się z Egnyte. Razem pracujemy przy jednym projekcie.

Temat Kamila na pierwszy rzut oka może wydawać się kontrowersyjny. Tak samo go odebrałem, kiedy dowiedziałem się, że Kamil będzie go prezentował u nas, wewnętrznie w firmie, w ramach Knowledge Sharing. W Egnyte mamy taką inicjatywę, że raz w miesiącu chętne osoby spotykają się i słuchają innej chętnej osoby, która ma coś ciekawego do powiedzenia :D ... to tak w wielkim skrócie :) No i Kamil został ostatnio tym chętnym do wygłoszenia prezentacji. W całym biurze wisiały plakaty "NEVER WRITE ANOTHER HOC!". Pomyślałem - WTF !? Okazało się, że na plakacie była naklejona nalepka. Po jej oderwaniu naszym oczom ukazywał się prawdziwy temat prezentacji czyli Benefits of using render prop pattern.

Jako że prezentację Kamila widziałem już u nas w Egnyte, pozwoliło mi to na lekkie spóźnienie się na meetup. Z nagrania (link poniżej) natomiast wynika, że Kamil pokazał "prawdziwy" tytuł podczas swojego wystąpienia na meet.js. Dodając przy tym, że daleko mu do tak radykalnych stwierdzeń jak "Never write another HOC".

Spóźniłem się...15 min...przepraszam. Wszedłem do sali i patrzę - live coding. Pomyślałem - ho ho - odważnie. Live coding jest niezwykle niebezpieczny. W małym palcu trzeba mieć opanowany IDE. W jeszcze mniejszym palcu trzeba mieć opanowany kod/projekt, który chcemy pokazać. I co najważniejsze podczas kodowania trzeba cały czas utrzymywać kontakt z publicznością. Moim zdaniem Kamilowi udało się spełnić 2 z tych 3 punktów. Znał dobrze IDE, opanował kod, który chciał pokazać...ale...no właśnie. Brakowało mi utrzymania kontaktu z publicznością. Jak Kamil pisał kod to następowała chwila przerwy. Wiadomo - piszemy kod, więc wypadałoby się zastanowić co chcemy napisać. Ta chwila przerwy/ciszy powodowała rozproszenie uwagi. W pewnym momencie rozejrzałem się po sali i zobaczyłem, że niektórzy ludzie wręcz walczyli sami ze sobą żeby nie usnąć. A to była dopiero pierwsza prezentacja!!! ... Tak czy siak uważam, że ten live coding nie wypadł najgorzej. Widziałem gorsze :D chociażby na meet.js summit z ubiegłego roku ;) ...

Merytorycznie? Bardzo spoko. Kamil pokazał czym jest HOC (Higher Order Component) na przykładzie komponentu <Dropdown>. W dalszej części live codingu pokazał jak osiągnąć tą samą funkcjonalność przy użyciu render prop pattern. Pokazał też jeden komponent, który wykorzystywany jest w naszym projekcie w Egnyte - czyli <Dropdown> z taką regulacją przedziału (range). Odniosłem jednak wrażenie, że przy przykładach, które pokazywał Kamil, lepiej sprawdziłaby się prosta kompozycja komponentów niż używanie HOC czy render prop pattern. Jak się potem okazało, po krótkiej dyskusji z innymi uczestnikami meet.js, moje przypuszczenia nie były bezpodstawne. Pomimo, że Kamil na samym początku powiedział, że jest daleki od mówienia "Render prop jest lepszy niż HOC", odnoszę wrażenie, że on sam jest strasznie zajarany tym wzorcem i czasami wręcz go nadużywa. Pamiętajcie - czasami kopiuj-wklej jest lepsze niż abstrakcja, której nie rozumie reszta zespołu.

Jednym z założeń HOC i render prop jest to, że wydzielają one powtarzalną logikę do osobnej części aplikacji, pozostawiając przy tym dowolność w kwestii kształtowania widoku. Czasem zdarza się jednak, że wydzielamy wspólną logikę tylko dla dwóch miejsc w aplikacji; implementując przy tym bardzo złożoną abstrakcję, czy to przy użyciu HOC czy render prop. W takim wypadku lepiej czasami skopiować kod, wkleić i lekko zmodyfikować. Jeśli oczywiście są to tylko dwa miejsca w aplikacji...

Brak abstrakcji jest czasem lepszy niż skomplikowana abstrakcja :)

Świetne zdanie usłyszałem ostatnio od mojego kolegi Adama N. On kieruje się zasadą: Jeden copy-paste wiosny nie czyni :) Ale kiedy kopiuje ten sam kod w trzecie miejsce wtedy zaczyna się zastanawiać nad abstrakcją. Ja się z tym podejściem absolutnie zgadzam!

Podsumowując - merytorycznie spoko, ale live coding mógłby być nieco bardziej dynamiczny (więcej kontaktu z publicznością).

Z resztą co ja wam będę dużo opowiadał sami zobaczcie :)

Never write another HOC - Kamil Koterba

React Recompose - Higher Order Components Everywhere!

Można by powiedzieć, że po drugiej stronie barykady stanął Jakub Pusiak z intive. Z Kubą znamy się z Twittera. Można by nawet rzec, że jesteśmy znajomymi. Obserwujemy się na wzajem i od czasu do czasu klikamy "like" czy "re-tweet" ;) Może następnym razem uda się wypić jakieś wspólne piwko, bądź po prostu porozmawiać przy okazji networkingu. Tematem jego prezentacji był React Recompose. Biblioteka ta składa się defacto z samych HOC. Jakub wspomniał przy tym także, że jeden z udostępnianych HOCów przez React Recompose, implementuje render prop pattern :) ... Kto by pomyślał :) ...

Przyznam się, że wcześniej o React Recompose nie słyszałem. Dlatego prezentacja Kuby w bardzo przystępny sposób przybliżyła mi ten temat. Żadnego live codingu nie było. Były za to slajdy z nutką humoru.

Bardzo podobał mi się przykład z implementacją gitary basowej/elektrycznej. Nie wiem, może dlatego, że sam jestem gitarzystą i ten temat jest mi bliski :) A może dlatego, że pokazany przykład był mega czytelny. Na tą czytelność właśnie Jakub zwracał bardzo dużo uwagi. W pełni się z nim zgadzam :) Pamiętajcie, że kodu nie piszemy dla maszyn, pomimo tego, że maszyny właśnie nasz kod wykonują. Nasz kod piszemy dla ludzi, którzy potem ten kod będą utrzymywać. Warto o tym pamiętać.

Jeśli miałbym dać Kubie jakąś wskazówkę / feedback to dotyczyłby on właśnie kwestii humoru w prezentacji. Kuba wkleił w swoje slajdy kilka memów, śmiesznych tweetów itp. Odniosłem jednak wrażenie, że bardzo szybko przeskakiwał z takich slajdów dalej. Nie wiem, być może wynikało to z tego, że publiczność nie reagowała śmiechem? No ale z drugiej strony jak się śmiać z czegoś, czego jeszcze nie zdążyliśmy dobrze przeczytać i przetrawić? :) ... Dlatego wskazówka - jeśli macie w swoich prezentacjach slajdy z memami dajcie chwilkę publiczności na przetrawienie slajdu. Jeśli po chwili nikt się nie zaśmieje to znaczy, że bierzecie przykład z Tomka Łakomego i wkleiliście suchara :D (pozdrawiam Tomka;) ... Natomiast jeśli żart, który wkleiliście jest na prawdę śmieszny to uwierzcie mi, że ktoś z publiczności na pewno się zaśmieje ;)

Kuba - bardzo fajna prezentacja!

React Recompose - Higher Order Components Everywhere! - Jakub Pusiak

Subiektywny przegląd sytuacji na froncie

Ostatnim prelegentem był Mateusz Chrzonstowski z Allegro. I wiecie co wam powiem? Jego prezentacja to był sztos! :) Ogień! 🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥

Po dwóch prezentacjach czysto technicznych, z dużą ilością kodu, przykładów i opisu, prezentacja Mateusza była świetną odskocznią. Mateusz ze świetnym poczuciem humoru zaprezentował swoje subiektywne zdanie na temat obecnej sytuacji na froncie. Prawie każdy jego slajd zawierał dużą dawkę humoru. Co więcej dawał też czas publiczności na przetrawienie, czy to komiksów, czy to mema, czy śmiesznego cytatu. Brawo Mateusz!

Szczerze? Słowami nie jestem w stanie opisać tego co się działo na scenie. Lepiej żebyście zobaczyli to sami :) I sami też wystawili ocenę. Być może typ humoru zaprezentowany przez Mateusza nie przypadnie wam do gustu. Kto wie :)

Jedyne co mi przychodzi do głowy to apel do organizatorów wydarzeń typu meet.js. Starajcie się w swoich agendach umieszczać jedną prezentację, która trochę rozluźni atmosferę. Gdyby prezentacja Mateusza była czysto techniczna, z dużą ilością kodu i przykładów, mogłoby się to źle skończyć :) ...To znaczy, mogłoby nastąpić przeładowanie materiałem...

A teraz zróbcie sobie kawę/herbatę, zarezerwujcie 26 minut i obejrzyjcie prezentację Mateusza :) – warto!

Podsumowanie

#41 meet.js Poznań uważam za mega udany. Dwie techniczne prezentacje na wysokim poziomie merytorycznym. Dodatkowo wisienka na torcie - Mateusz i jego Pokemony ;) Frekwencja też na wysokim poziomie...jak tak rzuciłem okiem po sali to ze spokojem było ok. 100 osób. Widać, że Poznańska społeczność ceni sobie wydarzenie jakim jest meet.js.

Mam nadzieję, że na następne spotkanie nie przyjdzie nam czekać zbyt długo :)

Jeśli macie temat na prezentacje - śmiało! Wystarczy się zgłosić na githubie. Organizatorzy oferują pomoc przy przygotowaniu slajdów. Po reakcjach ludzi na GH zobaczycie też, że wasz temat, który wy być może uważacie za nudny, dla reszty osób okaże się prezentacją must-see! Dlatego śmiało zgłaszajcie nawet szkice, luźne pomysły. Nie musicie mieć od razu slajdów. Tym bardziej, że samo zgłoszenie nie jest obligacją do tego, że wystąpicie na następnym meet.js :)

https://github.com/meetjspl/poznan/issues

Na koniec chciałbym podziękować Sebastianowi, bez którego nie mielibyście możliwości obejrzenia nagrań z tego wydarzenia. Dlatego wchodzicie teraz ładnie na jego kanał...i jak to mówią gimbo-youtuberzy "klikacie w subskrybuj i nie zapomnijcie kliknąć w dzwoneczek!" :)

https://www.youtube.com/channel/UCe90G1Bls8uibHTkPGEswmg

Odwiedźcie też oficjalną stronę Sebastiana https://events.pozoga.eu/, gdzie znajdziecie kalendarz imprez IT w Poznaniu, na których być może Sebastian wraz ze swoim aparatem się pojawią :)


Pozdrawiam i do usłyszenia / zobaczenia !