Ponad 2,5 roku temu napisałem posta o wdzięczym tytule “Konferencje dla programistów… czy to się opłaca?“. Wniosek był prosty: NIE opłaca się. Z radością jednak donoszę: kilka dni temu okazało się, że ja po prostu bywałem na nieodpowiednich konferencjach:).
W piątek 30 listopada 2012 odbyło się w Wilnie prawdziwe geek-święto. Greg Young (nawet nie podlinkuję nic pod jego nazwisko, jeśli drogi Czytelniku nie znasz tej postaci, bądź takiego na przykład Udiego Dahana, to najpierw wnijdź w internety i sobie poczytaj, a potem do zobaczenia tutaj z powrotem!) zorganizował w Wilnie spotkanie pod wdzięczną nazwą “We Actually Build Stuff“.
Po zobaczeniu daty, miejsca, agendy i ceny wiedziałem: muszę tam być! Szczerze przyznam, że moim zdaniem taka myśl powinna pojawić się w większości polskich dev-czach.
Organizacyjne
Zerkając na strony różnych zagranicznych konferencji przyzwyczajony jestem do oglądania cen wyrażanych w tysiącach euro. No kaman! Tutaj cena 100 euro mnie zszokowała. Całość (wraz z dojazdem własnym samochodem i 2 nocami w hotelu) kosztowała mnie jakieś 1000zł. Co prawda i tak przemiła Predica mi to zasponsorowała, ale mimo wszystko nieco inaczej jest poprosić w firmie o sponsoring konferencji za 1000zł niż za 2-3k euro. Skupiam się tutaj na aspekcie finansowym, bo nie oszukujmy się – kosmiczne wejściówki na inne konferencje na pewno są dla niejednego potencjalnego uczestnika barierą nie do przeskoczenia. Ba, nawet polski Marketing Technology Summit, który po oskrobaniu z reklamowego bełkotu dostarcza może 30% wartościowej treści do znalezienia na jakimkolwiek innym wydarzeniu tego typu, wpycha sobie do sakwy znacznie więcej dzięgów.
A co jeszcze fajniejsze: Greg z takiej ceny biletów zorganizował wypasione wydarzenie, zaprosił prelegentów z najwyższej światowej półki, zorganizował uczestnikom imprezę na ostatnim piętrze fajnego hotelu z widokiem na całe miasto, a resztę… oddał na cele charytatywne! Gdzie indziej takie coś można spotkać? Nawet w Erze – nie.
Samo Wilno zrobiło na mnie wrażenie takie sobie. Pewnie za mało tam widziałem żeby się autorytatywnie wypowiadać (chociaż pierwszej nocy powrót do hotelu zajął naszej grupce dobre 1,5h jak nie więcej, bo sobie pobłądziliśmy, jednak świadomym zwiedzaniem tego nazwać nie można), ale bardziej przypominało mi ono mój rodzinny kameralny Białystok niż “prawdziwie europejską stolicę”. Z drugiej strony – może to i dobrze:). Litwa jako taka zostawiła pamiątkę w postaci zdjęcia z nieoznakowanego fotoradaru. Bezczelni! Za to już Predica nie zwróci:). Ale beztroskie pomykanie ciemną litewską pseudoautostradą na programistyczną konferencję z soundtrackiem z TRONa walącym z głośników warte jest mandatu.
Sesje
Tematyka faktycznie nawiązywała do nazwy konferencji. Nie było tu sesji pt “Co nowego VS2012”, “Dlaczego Azure?” czy “LoWin8”. W większości przypadków autentycznie chodziło o “actually building stuff”.
Wystąpienie o numerze “zero” pozwoliło reprezentantom wspomaganej przez nasze bilety organizacji charytatywnej powiedzieć kilka słów o swojej działalności. Nie wiem nawet co tam mówili – po trosze dlatego że się spóźniliśmy, a po trosze dlatego że mnie to interesuje tyle co nic.
Pierwsze “prawdziwe” wystąpienie podobało mi się najmniej, ale może ze względu na to że dopiero dochodziliśmy do siebie po wspomnianym “zwiedzaniu Wilna” raptem 6 godzin wcześniej. Robert Pickering mówił o “Science and Software Development”. Idea bardzo ciekawa – jakie naukowe sztuczki otaczają nas w codziennym życiu, w mediach, i jaki ma to związek z naszą pasją? Ale żadnych konkretów nie wyniosłem.
Kolejna godzina upłynęła na podlądaniu “Extreme Programming Live” w wykonaniu Johannesa Brodwalla i jakiegoś drugiego ziomka, jego programistycznego partnera do programowania w parach. Przez połowę spotkania czułem się odrobinę znudzony – ot, dwóch kolesi demonstruje jak programować w parach stosując TDD na przykładzie pisania planszy do Sapera. Interesująco zrobiło się po tym, trochę przydługim, demie. Wtedy to Johannes rozbił wszystko co do tej pory widzieliśmy na czynniki pierwsze konkretnie uzasadniając każdy powzięty krok. Dlaczego najpierw napisał duży test integracyjny, mimo że nie było jeszcze żadnego kodu? Dlaczego jego partner dodał do tego testu tylko atrybut [Ignore], dopisał mniejszy, prawdziwy test jednostkowy, i odbił do niego klawiaturę? Jak zachowuje się programista piszący, a jak jego partner-obserwator? Czego można się nauczyć programując w parach i dlaczego nie jest to strata czasu? Ile testów w efekcie otrzymaliśmy, ile czasu zajęła implementacja, a jak długo każdy z nich robiłby to osobno? Jak “dobierać się” w pracy mając na uwadze doświadczenie programistów oraz aktualną sytuację w projekcie? Nie ma co – to było ciekawe i miało wszelkie podstawy aby zachęcić niedowiarków do sprawdzenia tego typu pracy we własnym zakresie.
Trzeci punkt programu to “lunch”. Otwierając konferencję Greg zaznaczył, że w takich sytuacjach lunch bardzo go irytuje ponieważ X osób stara się dorwać do jednego miejsca jednocześnie. Jak to powiedział: “dostęp do współdzielonych zasobów jest trudny, więc lunch będzie dostępny i przed i po oznaczonej godzinie; wrócimy do tego później”. Eksperyment właściwie się powiódł – oczywiście do stołu z żarciem nie dało się dobić w sensownym czasie nawet mimo udogodnienia w postaci dostępności posiłku sporo czasu przed końcem drugiej sesji. A było nas tam raptem 250 czy 300 osób.
Po lunchu mieliśmy ochotę na kolejną dawkę ciekawostek, tym razem na temat “Performance in HTML and Javascript”. Ciekawostki te przekazywał nam Rob Ashton… Ludzie, jeśli kiedyś gdzieś będziecie mieli szansę pójść na jego wystąpienie to zdecydowanie polecam. Ten facet to mega-zakręcony wariat! Na samym początku zaznaczył że dla niego “performance” to nie jest obsłużenie jakiegoś submita w takim czasie w którym użytkownik nie odejdzie od komputera. On, jak to określił, zajmuje się po godzinach pisaniem beznadziejnych gier, i dla niego wydajność to wyrenderowanie jak najciekawszej ramki w czasie 16ms. Jak się można domyślać – naprawdę schodziliśmy na tej sesji do poziomu milisekund, badając na jakich instrukcjach da się w javascript oszczędzić takie ułamki czasu, szczególnie przy powtarzalnych operacjach jaką bez wątpienia jest obsługa pętli renderującej grę. Do tego masa żartów, unikalny kolorowy pony (!) na każdym slajdzie, prezentacje faktycznie durnych i zabawnych gier-dziełek Roba (np strzelanie z rakiety do meteorytów z których po trafieniu wyskakują serduszka)… śmiechu co nie miara, a i interesujących faktów sporo.
Po Robie scenę przejął Sebastien Lambla z tematem “HTTP Caching 101”. To samo mogli obejrzeć uczestnicy DevDay2012, ale że mnie tam nie było to w Wilnie nadrobiłem zaległości. Do treści i sposobu ich prezentacji (tutaj do pony dołączyły jeszcze jednorożce) przyczepić się nie można – nie widziałem tego tematu opisanego czy opowiedzianego w tak prosty sposób z jednoczesnym zagłębianiem się w implementacyjne detale (jak np różnice między strong i weak e-tag). Mimo to spokojnie można by było to wystąpienie wcisnąć w 20-minutowy slot i nie rozwlekać się aż dwa razy tyle… ale nie ma co narzekać. Fun był zadowalający. Lekką konsternację i rozbawienie wzbudziła aluzja… “nie bez pokrycia”… brzmiąca: “most of you guys prefer ponies, I prefer unicorns” – na tym poprzestanę.
Przedostatnim prezenterem był sam organizator, czyli Greg Young, opowiadający o swoim najnowszym dziecku: “Technical Lessons Learned Building the Event Store”. O Event Store wiedziałem przed wyjazdem właściwie tyle, że istnieje i że pozwala na zapis eventów w architekturze CQRS z Event Sourcing. Greg nie zrobił żadnego wstępu dla takich laików i od razu wskoczył na głęboką wodę flaków architektury i implementacyjnych szczegółów. Chcecie wiedzieć jak zaoszczędzić sobie miliard pracy wykorzystując standardy i mechanizmy, które branża nam już oferuje zamiast pisać własne rozwiązania już rozwiązanych problemów? Jak nie zostać zajechanym przez garbage collectora operując nawet na dziesiątkach GB? Jak i po co hostować we własnej aplikacji silnik V8? Jak nie wpaść w pułapkę wielowątkowości w pełni wykorzystując programowanie jednowątkowe, wystarczające prawie zawsze jeśli zastosowane w odpowiedni sposób (tutaj pokazał zdjęcie zrobione podczas lunchu, gdzie mimo jego uprzednich, wspomnianych już wcześniej, ostrzeżeń gromada facetów próbowała się dorwać do koryta:) )? Czemu “immutability” JEST lekiem na dużo zła i jak tam dotrzeć? Te i wiele innych tajemnić można obejrzeć w kodzie na GitHubie. Dodatkowo polecam lekturę krótkego Architectural Overview. Po prostu: tak się robi zajebisty soft! Mimo, że nie wszystko było dla mnie jasne ze względu na nieznajomość Event Store, to samo podejście do obmyślania kształtu projektu, prób wykorzystania istniejących rozwiązań, radzenie sobie z megaskomplikowanymi zagadnieniami w prosty sposób – mind blowing.
Na deser dostaliśmy prelegenta, dla którego samego pojechałbym na tą konferencję. Udi Dahan to idol, którym zachwycalem się już w relacji z C2C’09. Tym razem bylo mniej technicznie: “What I learned from 6 years of building NServiceBus”. Po wstępnie pomyślałem: “no nie, Udi bez sesji techicznej, będzie kiepsko”. Ale okazało się że dosłownie rozwalił nam czachy swoim spojrzeniem na 6 lat tworzenia rozwiązania open source. Przedstawił ścieżkę jaką przebył NServiceBus: od pobocznego miniprojektu klepanego wieczorami, przez open source z dużą społecznością aż po komercyjne rozwiązanie stosowane w setkach wielkich i małych systemach na całym świecie. Nie były to jednak słodkie zachwyty, a raczej cała gorzka trudna prawda o takim przedsięwzięciu. Jak kradnie życie, jak wyczerpuje, jak wymusza ewolucję z zadowolonego programisty w biznesmena tęskniącego za spokojnym kodowaniem. Dowiedzieliśmy się jacy potrafią był członkowie społeczności czy klienci i ile wymaga dbanie o nich nawet w przypadku darmowego produktu. Sporo czasu poświęciliśmy na analizę często pomijanych aspektów rozwoju oprogramowania takich jak “backwards compatibility” czy uzależnianie się od zewnętrznych bibliotek – i czym to skutkuje na przestrzeni lat. Dłużej rozpisywać się nie będę, bo sam tego w żadnych słowach nie przekażę. Po prostu – Udi to master w swoim fachu i nawet tak trudny temat potrafi poprowadzić w pasjonujący sposób niepozwalający na chwilowe nawet oderwanie uwagi od scenu, nie mówiąc już nawet o przyśnięciu po ciężkim wieczore i całym dniu na konferencji. Szacun!
Community
Podczas swojej 5-letniej (sic!) “kariery blogera” napisałem niejedną relację z konferencji. Każda rozpoczynała się opisem organizacji, a kończyła wrażeniami z sesji… Tutaj będzie inaczej!
Nie mniej ważną częścią niż same prezentacje były dla mnie imprezy i rozmowy około-eventowe. Wreszcie udało mi się spotkać na żywo świetnych ziomków z Polski, z którymi wirtualnie kontakt mam właściwie od lat. Piszę tu m.in. o Rafale, Michale, Marku, Szymonie, Filipie czy Dawidzie. Bardzo fajnie było pogadać z ludźmi kojarzącymi się do tej pory z tylko awatarem na twitterze czy blogu. Moja “własna”, znana już wcześniej, ekipa, dopełniła tego i towarzystwo mieliśmy cały czas przednie. Można było wypić browara czy wyjść na fajkę z prelegentami, poszlajać się z dev-towarzystwem po knajpach… Żyć nie umierać. Żałuję tylko, że ze względu na potworne zmęczenie spowodowane nieprzespanymi przez ostatni miesiąc nocami musiałem drugiego dnia spasować już ok 22:00 podczas gdy impreza trwała w najlepsze do 4 czy 5 rano. Ale następnym razem zostaję do końca;).
Jest jeszcze jeden aspekt “społecznościowy”, który mnie bardzo miło zaskoczył: kilka razy zdarzyło mi się, że podszedł do mnie uczestnik z Polski (w sensie za każdym razem inny;) ), powiedział że mnie rozpoznaje, chwalił bloga i pytał czemu ostatnio nie piszę. Fajne uczucie. Stąd też m.in. i niniejszy post – może uda mi się jakoś w końcu wcisnąć ponownie trochę życia w ten podzdechły kawałek internetu? Przynajmniej spróbuję, bo dotarło do mnie, że szkoda zaprzepaszczać coś na co pracowałem dobre kilka lat. Dzięki!
Co dalej?
Odnosiło sie nieodparte wrażenie, że nikt z uczestników nie był tam z przypadku. To nie impreza dla tych, co jadą na konferencję po to żeby nie musieć iść do pracy i nażreć się za free. Więcej takich!
Ten wyjazd kompletnie odmienił moje spojrzenie na podobne eventy. Grupa zajebistych prelegentów, grupa zajebistych dev-ziomów, organizator na luzie z podejściem “ma być zajebiście!” a nie “muszę się nachapać”… i już, to wystarczyło.
Więc jak? Chyba do zobaczenia na DevDay2013?;) Następnym razem nie ominę podobnie niesamowitej inicjatywy, do tego mającej miejsce w naszym smutnym kraju (mimo że do Krakowa mi dalej niż do Wilna). Powiem więcej – doczekać się nie mogę.
A póki co – chyba faktycznie zbuduję jakiś stuff, albo przynajmniej porządnie przyjrzę się temu co budują inni, zanim wpadnę w dev-rytm z którego zostałem kilka miesięcy temu wytrącony. @rafek dał mi nawet tip jak znaleźć na to czas mając małe dziecko w domu -thx, od wczoraj wypróbowuję. Zatem: do następnego razu!
Zajebisty wpis :-), naprawdę super się czytało. Warto było spędzić 3x normalnego czasu
Ten "tip" od @rafek to ja też poproszę na priv, może nie tylko dla dev się nada. Fajnie słyszeć że dobra impreza była.
Cześć,
Także bardzo chciałem tam jechać, niestety nie udało się. Orientujesz się może, czy będą udostępnione materiały wideo z tej konferencji?
Pozdrawiam (i rzeczywiście pisz więcej :) )
Paweł
g, thx:)
Tomek, o tipie napisze wiecej na blogu jesli sie sprawdzi, jesli sie nie sprawdzi to nie bede pisal bo jest jedno od drugiego zalezne:)
Paweł, chyba widzialem tam jakis sprzet nagrywajacy, ale nie jestem pewny czy na wszystkich sesjach i czy bedzie gdzies online
Hi, guys, nice blog ;) Yes we will put pics , videos and presentations online. You will know it :) Best wishes;]
Wspomniałeś o aluzji Seba. Z kolei ponies Roba z każdą jego sesją stają się coraz bardziej hmmmm disturbing. Związany sznurami kucyk – dafuq :D.
Dzięki za opis konferencji. Miałem już kupiony bilet, ale problemy rodzinne spowodowały, że nie mogłem jechać. Strasznie żałuję, po prostu nie mogę przeboleć. Najbardziej jednak (oprócz samych sesji) żałuję, że nie mogłem się spotkać z całym środowiskiem. Część już miałem okazję poznać podczas DevDay w tym roku i liczyłem spotkanie w Wilnie, ale jak pisałem wyżej nie wyszło.
Chętnie skorzystam z rady rafka. Ciekawe czy sprawdzi się przy dwójce brzdący ;)
Pozdrawiam
Bartek
Tak, ja także z chęcią zapoznałbym się z każdą informacją, jak urwać trochę czasu z puli przeznaczonej w tej chwili wyłącznie dla dwójki małych urwisów :)
Macieju – napisałeś, że chcesz poradę rafka potestować najpierw na sobie – pamiętaj, że im więcej osób zaangażowanych jest w testy, tym większa szansa na wyłapanie bugów :)
Paweł,
To nie są żadne odkrywcze cuda, tylko logiczne rozumowanie banalne w swojej prostocie:) Poczekam do końca roku i jeśli będzie się to nadal sprawdzać – napiszę kilka słów.
[…] mi się nie chciało, a robienie czegoś na siłę nigdy nie wychodzi dobrze. Dopiero wyjazd na konferencję do Wilna zmienił ten stan rzeczy – teraz pisać mi się chce, mam nadzieję że udaje się to robić […]