Rok temu na konferencyjnej mapie Polski pojawiła się nowa pinezka – konferencja CybercomDEV w Łodzi. Wydarzenie jest organizowane przez Cybercom Poland. Trwa tylko jeden dzień, ale uczestnictwo w nim jest bezpłatne. W tym roku odbyło się 21 maja i zgromadziło około 300 osób. Do Łodzi niedaleko, więc udało mi się być jedną z nich.

Konferencja nie skupia się wokół żadnej konkretnej technologii – z założenia ma być raczej miejscem, gdzie zarówno biznes jak i szeroko rozumiany „człowiek techniczny” znajdzie coś interesującego. Wykłady w ramach konferencji był podzielone na cztery ścieżki: IoT (Internet of Things), Soft skills, Architecture i Business. Z racji własnego zawodu i zainteresowań skorzystałam głównie z Architecture, ale byłam też na ciekawym wykładzie w ramach Business (szczegóły za chwilę). Obok wykładów prowadzona była ścieżka warsztatów, ale ich tematyka była raczej „miękka” i doszłam do wniosku, że więcej „mięcha” wyniosę z wykładów. Warto wspomnieć, że jeden z warsztatów był prowadzony przez Sławka Sobótkę – świadomie przegapiłam tym samym okazję do zobaczenia, jak wygląda praktyka w wykonaniu guru polskiego IT 😉

Tyle tytułem wstępu. Poniżej zamieszczam krótki opis i własne wrażenia dotyczące poszczególnych wystąpień.

Keynote Talk: Where will “IT” take us? (Jan Matulewicz)

Krótko i filozoficznie o tym, gdzie, zdaniem prowadzącego, jest miejsce naszej branży w coraz bardziej zinformatyzowanym świecie. Wyszło dość radykalnie – w przyszłości programiści razem z tworzonym przez nich oprogramowaniem zastąpią nie tylko pracowników produkcji, ale też prawników czy lekarzy. Krótkoterminowo bezrobocie nam nie grozi. Długoterminowo albo czeka nas utopia, w której będziemy popijać drinki, patrząc jak wszystko robi się samo, albo… bunt maszyn 🙂

Wzorce organicznej architektury (Jarosław Pałka)

Jarek Pałka po raz kolejny udowadnia, że minął się z powołaniem i powinien zająć się stand-upem:) Ale pomiędzy żartami sporo treści. Dużo przemyśleń na temat pracy z legacy code. Technologie i trendy w architekturze, wymagania klienta, otoczenie biznesowe, programiści pracujący nad danym projektem – to wszystko się zmienia. Dlatego refactoring czy przepisywanie całości bądź fragmentu aplikacji jest naturalne (i wskazane!) w jej cyklu życia. Estymacja na dodanie nowego buttona to kilka tygodni pracy? To znak, że najwyższy czas coś zmienić. Grunt to zrobić to z głową.

  • Identyfikowanie i refactoring miejsc w kodzie, które zmieniają się najdynamiczniej – nie ma sensu ruszać czegoś, co działa dobrze i od lat nie jest zmieniane. Najlepiej wyrzucić taki kod do biblioteki.
  • Ślepe podążanie za trendami jest z reguły kiepskim pomysłem – migrujmy na inne technologie tylko kiedy mamy przesłanki, że zmiana rozwiąże realne problemy naszej aplikacji.
  • Nieużywany kod powinien być jak najszybciej usuwany – ficzery, które nie są wykorzystywane, kod do obsługi klientów, których dawno nie mamy. Unikniemy dzięki temu ryzyka, że świeżynka w zespole poświęci tydzień na walkę z funkcjonalnością, która już dawno nie widziała usera. W ogóle DUŻO USUWAĆ – od historii jest Git.
  • Świadomość zależności pomiędzy różnymi miejscami aplikacji. Sonar czy inne narzędzia do statycznej analizy kodu nie zawsze nam te zależności wychwycą (np. między kodem aplikacji, a skryptem SQL, czy logiką front- i back-endową). I tutaj ciekawy pomysł – do badania takich zależności można użyć historii w Gicie tj. znaleźć pary bądź grupy plików, które najczęściej są zmieniane wspólnie. Poza tym kilka innych ciekawych zastosowań Gita do odkrywania tego, co siedzi w naszym kodzie.

Peer-to-peer salary review in a corpo: a case study (Jakub Nabrdalik)

Wspomniany wcześniej wykład ze ścieżki biznesowej. Odpowiedź na pytanie, od czego powinny zależeć zarobki specjalistów w organizacji IT i kto powinien te czynniki oceniać. Zdaniem prowadzącego wynagrodzenie zbyt często zależy od umiejętności negocjacyjnych zainteresowanego. Powinno od umiejętności „twardych” czyli biegłości w różnych technologiach, a także od komunikatywności, zaangażowania, motywacji oraz szeroko rozumianej „kumatości”. Kolejne stwierdzenie – jedynymi osobami zdolnymi te czynniki oceniać są współpracownicy. Potem trochę szczegółów, jak zorganizować taki system oceniania, by było wygodnie i fair, jak znormalizować wyniki, jak uniknąć prób „zhakowania” systemu. Plusem dobrze zaprojektowanego systemu oceniania będzie nie tylko poczucie sprawiedliwości, ale też jasny feedback dla każdego pracownika – nad czym powinienem popracować, żeby zarabiać więcej?

Na koniec ciekawy wniosek poboczny – wszelkie systemy ocen pracowniczych mają sens tylko wtedy, gdy pracownicy uważają, że taki system jest potrzebny i rozsądnie zaprojektowany. Inaczej prawdopodobnie zespoły w ten czy inny sposób zbojkotują całe przedsięwzięcie.

Next generation of Front end architectures (Luca Mezzalira)

Na ten wykład czekałam chyba najbardziej. Przegląd historycznych i obecnych trendów w architekturach front-endowych (a nawet ogólniej – GUI). Począwszy od MVC i różnych jego wariacji (MVVM, MVP), przez facebookowego Fluxa, aż do najświeższego podejścia MVI – Model View Intent. Podstawowe założenia wyglądają mniej więcej tak:

  • komunikacja odbywa się zawsze w jednym kierunku (w przeciwieństwie do klasycznego MVC). Tutaj mamy w jedną stronę: Model -> View -> Intent -> Model -> …
  • żaden moduł nie kontroluje innego (w końcu nie mamy kontrolera) – intent odpowiada za tłumaczenie „intencji” widoku (usera) na eventy zrozumiałe przez model. Model odpowiada w stronę widoku, również używając eventów.

Na koniec bliższe spojrzenie na dwie z technologii, które mogą pomóc taką architekturę zrealizować + przykłady symulacji gry w Bingo w każdej z nich:

  • CSP-js – JavaScriptowy port dość wiekowej (1978) koncepcji Communicating Sequential Processes. W kodzie bardzo imperatywnie, pętle, toporne operacje na channelach i bufferach. Całość mnie zupełnie nie przekonała.
  • RxJS – reaktywny powiew świeżości. Funkcyjnie i zwięźle. Tworzymy obiekty obserwowane, subskrybujemy generowane przez nie zdarzenia i oczywiście mamy do dyspozycji bardzo szerokie API do operacji na strumieniach. Aż się chce złapać za klawiaturę i zacząć pisać.

Cały wykład był może trochę chaotyczny, ale treści, jak na 45 minut – dość dużo.

Reactive Programming with RxJS

https://github.com/lucamezzalira/reactive-bingo/tree/master

https://github.com/ubolonton/js-csp

https://github.com/Reactive-Extensions/RxJS

Discovering Java EE Microservices (Ivar Grimstad)

Okazuje się, że można stworzyć kilka aplikacji w Javie EE, umieścić każdą z nich w osobnym serwerze aplikacyjnym, uruchomić to wszystko (grzecznie czekając, aż nasze słusznej kubatury serwery wystartują) a następnie nazwać całość architekturą mikroserwisową 🙂

Jeżeli kogoś to nie przeraża, to prowadzący ma całkiem sprytne narzędzie do rejestrowania i wykrywania takich „mikroserwisów” w ramach systemu – SnoopEE. W dużym uproszczeniu:

  1. Uruchamiamy serwer SnoopEE
  2. Rejestrujemy serwisy jedną adnotacją i kilkoma linijkami konfiguracji
  3. W kliencie wstrzykujemy sobie klientów serwisów kolejną sprytną adnotacją

Tytułowe discovery odbywa się z wykorzystaniem protokołu WebSockets. Wszystkie serwisy na prezentacji komunikowały się przez HTTP (SnoopEE wstrzykuje zgrabnego klienta), ale podobno nic się stoi na przeszkodzie, by używać innych protokołów.

SnoopEE na pewno może się przydać w rozmontowywaniu javowego monolitu na serwisy. Ale prefiks „mikro” wydaje się być tu sporym nadużyciem – mikroserwisy są modne i nagle wszystko, co dawniej było SOA teraz jest architekturą mikroserwisową. Prelegent jest ekspertem od Javy EE, ale to, co pokazał, nijak nie wpisuje się w moim odczuciu w najnowsze trendy w tworzeniu oprogramowania.

http://snoopee.agilejava.eu

People not resources (Agata Maroń)

Na zakończenie znów solidne połechtanie programistycznego ego, tym razem z bardziej praktycznego punktu widzenia. Developerzy nie są „resource’ami do utylizacji”, ale osobami, które tworzą realną wartość firmy. Deweloper ma prawo być nielojalny, jeśli nie robi fascynujących rzeczy. Bo przecież to oczywiste, że nie pieniądze, a wyzwania są dla nas najważniejsze;). I w ogóle wszystko się nam należy. Słowem, prowadząca chciała pokazać ludzką twarz HR w organizacji, która zajmuje się m.in. outsourcingiem swoich pracowników i trochę przy tym przesadziła, ale miło było posłuchać.

Podsumowanie

Całkiem sprawnie zorganizowane wydarzenie. Konferencja jest nadal mało znana, a sponsor pojedynczy. Pomimo tego udało się zebrać kilkuset uczestników i ciekawy zestaw prelegentów. Catering smaczny i dużo. Jak nic nie stanie na przeszkodzie, to z chęcią pojawię się w przyszłym roku. A w przyszłości liczę przede wszystkim na rozbudowę ścieżki warsztatowej i damskie koszulki 🙂