Konferencja 4Developers to ciekawa inicjatywa wśród spotkań dla ludzi z branży IT w Polsce. Jak możemy przeczytać na stronie głównej projektu: “4Developers to konferencja dla programistów, największe przedsięwzięcie tego typu w Polsce – 400 uczestników, 4 równoległe ścieżki i ponad 30 prelegentów”. Ze względu na fakt, że miałem okazję wczoraj (04.04.2011) w tym przedsięwzięciu uczestniczyć, chciałbym w kilku słowach wypowiedzieć się na temat tego, co było mi dane przeżyć.

Ale zanim pójdę…

O samej konferencji dowiedziałem się z wpisu na blogu Mateusza Kamińskiego. Przyznam, że miałem sporo szczęścia, ponieważ przeczytałem go 31 grudnia 2010r., a był to ostatni dzień, w którym możliwa była rejestracja według najniższej stawki - 115zł + VAT dla studentów (w sumie <150zł do zapłaty). Byłem w trakcie przygotowań do Sylwestra, na chwilę zajrzałem do RSSów… i stwierdziłem, że warto zobaczyć, co przygotują organizatorzy:

a przygotowali całkiem sporo. ;]

Ścieżka ninja.

Jak już wspomniałem w nagłówku wpisu, konferencja była podzielona na cztery główne ścieżki:
  • PHP,
  • Wydajność i skalowalność,
  • Zarządzanie projektami IT,
  • Java.
Oprócz wykładów można było także uczestniczyć w panelach dyskusyjnych prowadzonych w mniejszych grupach osób - wymagane było wcześniejsze zapisanie się na konkretny panel. Moje lenistwo / zapominalstwo niestety skutecznie uniemożliwiło mi tak prostą czynność jak wysłanie maila z imieniem, nazwiskiem i nazwą panelu, ale koniec końców udało się “dostawić krzesło” i posłuchać, co mają do powiedzenia osoby mające trochę większe doświadczenie w korzystaniu z różnych VCSów.

Nie wszystkie wykłady były bezpośrednio związane z tematyką ścieżki, w jakiej się znajdowały - np. w ścieżce wydajności prelegenci kładli spory nacisk na przykłady w PHP. Obrana przeze mnie “ścieżka” wyglądała następująco:

Były to kolejno [każdą z prezentacji można ocenić i skomentować na stronie joind.in]:

  • PHP: “Uprość zarządzanie zależnościami między aplikacjami trzecimi a swoim projektem”, Stephan Hochdörfer, [joind.in]
  • Wydajność i skalowalność: “HipHop dla PHP”, Mariusz Gil, [joind.in]
  • Panel dyskusyjny: “VCS (Version Control System): Distributed VCS (Git, Mercurial) vs. Centralised VCS (CVS, SVN, Perforce)“, Jarosław Potiuk,
  • PHP: Profilowanie aplikacji PHP, Derick Rethans, [joind.in]
  • Wydajność i skalowalność: “Rozszerzając funkcjonalności memcached”, Mariusz Gil, [joind.in]
  • PHP: “Zend Framework 2.0 rządzi”, Juozas Kaziukenas, [joind.in]
  • Zarządzanie projektami IT: “TDD - jak na tym zyskać”, Rowan Merewood. [joind.in]
Jak widać wybrałem wykłady maksymalnie związane z programowaniem i informacjami wokół niego krążącymi.

debug_backtrace();

Ze względu na to, że preferuję pracę na komputerze raczej w godzinach nocnych, miałem pewne obawy, czy uda mi się dotrzeć na miejsce. Na szczęście już o 7:20 byłem “na nogach”, a o 8:20 wsiadłem w tramwaj nr 7. Przyznam, że w tym momencie byłem nieco zaskoczony istnieniem tak dogodnego połączenia pomiędzy Centrum a budynkiem docelowym - wysiadając z tramwaju na przystanku Kawęczyńska-Bazylika należało przejść dosłownie kilkadziesiąt metrów do wejścia.

Rejestracja przebiegła bezproblemowo, chociaż aby się do niej dostać, trzeba było podążyć za kilkoma strzałkami “4Developers ->” niczym w swojego rodzaju grze RPG. Ponadto, kiedy szukałem kolejnych “checkpointów” zauważyłem, że hostessy doklejają jeszcze ostatnie tabliczki, także można to potraktować jako dynamicznie zmieniający się świat gry. ;] Zanim wyszedłem z mieszkania zastanawiałem się jeszcze, czy zabrać ze sobą notatnik lub laptopa, ale finalnie zostawiłem obie te rzeczy na biurku. Okazało się, że organizatorzy pomyśleli i o tym załączając w materiałach konferencyjnych notatnik, który idealnie współgrał z zabranym przeze mnie piórem.

Zanim wybrałem się na pierwszy wykład rozejrzałem się nieco po stoiskach firm, przeprowadziłem kilka rozmów - ogólnie na plus. Bardzo ciekawe było stanowisko firmy Infolet, gdzie można było spróbować swoich sił w rozwiązywaniu “metalowej łamigłówki”. Nie udało mi się jej rozwiązać, ale miła Pani i tak zaoferowała koszulkę w zamian za wytrwałość i pozostawienie swoich danych osobowych na odpowiednim formularzu. Koszulka wygląda… jak koszulka, za to nadruk głosi:

Przyznam, że idea całkiem szczytna. ;]

Pierwszy wykład autorstwa Stephana Hochdörfera o upraszczaniu zależności zgromadził w sali odpowiednią liczbę osób, jednakże ze względu na problemy techniczne [projektor przestał mieć chęć wyświetlania prezentacji] rozpoczął się z dwudziestopięciominutowym opóźnieniem. Winowajcą prawdopodobnie był kabel sygnałowy projektora, ponieważ po przeciągnięciu drugiego przewodu wszystko zaczęło działać jak należy. W tym momencie padł z sali dosyć ciekawy komentarz: “that’s another dependency”, co zostało skwitowane gromkim śmiechem. Sam Stephan odniósł się do tego w późniejszej części wykładu, mówiąc, że “przykład projektora powinien nam dać już wiele do zrozumienia, jak ważne są zależności pomiędzy poszczególnymi komponentami”. Prelegent omówił kilka sposobów realizacji zależności w projekcie, przedstawiając kolejno zalety i wady różnych rozwiązań, m.in.:

Tematem kolejnego wykładu był HipHop - translator kodu PHP do C++, wykorzystywany i rozwijany przez Facebooka. Zostało przedstawionych dużo informacji porównawczych nt. wydajności, skalowalności, łatwości wykorzystania i struktury tego projektu.

Następnie udałem się na spotkanie panelu dyskusyjnego dotyczącego systemów kontroli wersji. Lubię takie spotkania, szczególnie, jeśli widzę, że osoby wypowiadające się na ten temat faktycznie mają bardzo duże doświadczenie i mogą pomóc takiemu małemu żuczkowi jak ja wznieść się na wyżyny i wykorzystać w pełni to, co oferują poszczególne VCSy. Jarosława Potiuka znałem już ze spotkań Akademii Inżyniera “Szlif”, na których także opowiadał o tym i innych sposobach radzenia sobie z różnymi problemami zarówno programistów, jak i zarządzających projektami. Wysunięta podczas dyskusji inicjatywa prowadzącego w kwestii wykorzystania rozproszonych systemów wersjonowania spotkała się z dosyć twardym oporem ludzi siedzących po drugiej stronie stołu, którzy forsowali opinię, że scentralizowane systemy wersjonowania także “dają radę”, tylko trzeba umieć je rozsądnie wykorzystać. Wydaje mi się, że cały panel zakończył się swojego rodzaju “remisem”, aczkolwiek ja nadal próbuję się przestawić całkowicie na Gita - SVN przysporzył mi już dość dużo problemów, dlatego kiedyś wykonam ten zdecydowany ruch i krótkim “svn2git” przeniosę się w nową erę przechowania zmian w kodzie.

Ostatnim wybranym przeze mnie wykładem przed obiadem było profilowanie aplikacji PHP. Derick Rethans stanął na wysokości zadania prezentując wiele sposobów na poprawienie wydajności tworzonego przez nas kodu. Na dużą pochwałę zasługuje fakt, że pierwsza część wykładu była poświęcona obaleniu różnych mitów wydajnościowych, co zostało podsumowane bardzo dosłownym slajdem o treści: “all of these… are complete and utter bullshit”. Po tym slajdzie skupiliśmy się już na docelowym profilowaniu i optymalizacji. Mając na uwadze całość konferencji, uznaję ten wykład za prawdopodobnie najciekawszy z całej obranej ścieżki.

Nad obiadem nie będę się specjalnie rozwodził, poza tym, że był smaczny. ;] Za to bezpośrednio po nim poszedłem na wykład o rozszerzaniu funkcjonalności memcached. Przyznam, że zostało tu przedstawione bardzo dużo informacji teoretycznych o różnych projektach opatych, czy też związanych z memcache:

Podczas wykładu kilkakrotnie odzywały się osoby z sali, które poprawiały nieco wypowiedzi autora lub same dodawały kolejne informacje, nieco wyprzedzając kolejne slajdy. Na uwagę tutaj zasługuje też “pani hostessa”, która starając się dostarczyć mikrofon pytającym biegła w naprawdę wysokich szpilkach przez całą salę, żeby zdążyć na moment, kiedy pytający skończył już zadawać pytanie. Po kilku tego typu wybrykach “zrezygnowała” z dalszych prób i zajęła miejsce wśród uczestników. ;]

Na przedostatnim spotkaniu Juozas Kaziukenas, który został zapowiedziany przez hostessę jako “pan Joe”, opowiedział o ideach i strukturze Zend Frameworka w wersji 2.0. Juozas jest developerem Zend Frameworka, symfony, Symfony2 i Doctrine, a więc słuchałem go naprawdę z wielkim szacunkiem. Nie wiem dlaczego, ale podczas prelekcji robił dosyć niewybredne żarty z programistów pracujących na symfony, m. in. na samym początku wskazał ręką drzwi i powiedział: “symfony developers may leave the room”, a w momencie, kiedy jeden z uczestników próbował wyjść z sali i nie mógł otworzyć drzwi, powiedział: “another symfony developer trying to escape”. Wśród osób słuchających wykładu powstała ogólna wesołość, aczkolwiek do tej pory nie wiem, jaki był cel tych żartów. ;] Przy okazji - po wykładzie pozwoliłem sobie zadać pytanie o Symfony2 i niestety potwierdził moje przypuszczenia, że termin wydania wersji finalnej to kwestia nie tygodni, ale miesięcy.

Idąc na ostatni wykład przełamałem dominację ścieżek PHP i Wydajności, wybierając tematykę Test Driven Development omawianą przez Rowana Merewooda. O ile moje opinie na temat TDD mogą być kontrowersyjne i już w połowie wykładu formułowałem pytania, jakie potencjalnie mógłbym zadać, o tyle przedostatni slajd, a właściwie jego omówienie zmusiło mnie do ich porzucenia. Zawierał on bowiem dosyć ciekawe stwierdzenie, że “TDD is not going do create good code” i “Good plan, Good dev, Good code — Bad plan, Bad dev, Bad code”, a więc utwierdził mnie w przekonaniu, że autor nie próbuje forsować TDD na siłę i dobrze wie, jakie skutki rodzi bezmyślne pisanie kodu “aby zdał testy”.

finally { }

Moje ogólne wrażenia z konferencji są bardzo pozytywne. Jedną z najbardziej istotnych rzeczy, jakiej nawet nie podejrzewałem, jest liczba poznanych osób. Jako bloger wchodzę w oczywiste relacje z innymi blogerami - ja komentuję ich wpisy, oni komentują moje, a blogosfera “się kręci”. Dlatego byłem naprawdę zaskoczony mając okazję jednego dnia poznać “kolegów współblogerów” Macieja “batmana” Wilguckiego [z którym zresztą miałem okazję słuchać większości wykładów], Radosława “singles” Benkel, Mateusza “matipl” Kamińskiego i Jarosława Kielmasa, a także przeprowadzić kilka interesujących rozmów z przygodnie spotkanymi osobami.

Problemy techniczne jakie wystąpiły podczas pierwszego wykładu były naprawdę nieistotne, a reakcja uczestników była bardzo budująca, ponieważ wykorzystali oni ten czas do rozmów między sobą, a Ci, którzy siedzieli w pierwszych rzędach, do rozmów z prowadzącym. Jedynym mankamentem, który jednak był prawdopodobnie “decyzją projektową”, było położenie “mównic”. Niestety siedząc po lewej stronie sali za każdym razem był problem z elementami znajdującymi się blisko lewego dolnego rogu prezentacji. Można to było zauważyć szczególnie na wykładzie Stephana Hochdörfera, gdzie pierwszy slajd zawierający informacje o autorze miał zupełnie nieczytelne dane kontaktowe - odbijały się one właśnie na “katedrze” zasłaniającej część prezentacji.

Podsumowanie.

Konferencja 4Developers w edycji 2011 była zdecydowanie warta odwiedzenia i mam nadzieję, że w przyszłym roku starczy mi chęci i siły woli, żeby wybrać się do innego miasta, bo nie sądzę, żeby miała się odbyć drugi raz “na miejscu”. Możliwość spotkania ludzi mających wpływ na branżę, w jakiej pracuję, czy też pracujemy jest naprawdę nie do przecenienia. Dziękuję tym, których miałem okazję spotkać za chwile poświęcone na rozmowę, gratuluję organizatorom tego, że uniknęli problemów i dopięli wszystko na “ostatni guzik”. Do zobaczenia za rok!