W Krakowie między 24 a 26 czerwca 2019 odbywała się konferencja Devoxx Poland. To jedna z największych konferencji w regionie. Uczestniczy w niej około 2500 osób, a przez trzy dni występuje ponad stu prelegentów. W tym Venkat Subramaniam, Sandro Mancusso czy ludzie z Google, Thoughtworksa, czy Red Hata. Tematyka skupia się wokół Javy, ale jest też co nieco o security, chmurze, czy machine learningu. Do tego tematy dla każdego programisty takie jak architektura aplikacji i umiejętności miękkie. Dlatego cieszę się, że mogłem wziąć w niej udział, a nawet wystąpić ze swoją prezentacją o safety-critical. Minęło już parę dni od tego wydarzenia, pora więc na relację.

Dzień 1

Początkowo planowałem przyjechać do Krakowa w niedzielę 23.06. Jednak był to koniec długiego weekendu i nie dało się znaleźć żadnego sensownego pociągu. Wybrałem więc taki, który dojeżdżał do Krakowa w poniedziałek około 8 rano. Niestety pociąg w środku nocy zderzył się z jakąś zwierzyną i po różnych perturbacjach dotarłem z czterogodzinnym spóźnieniem. Nie zdążyłem więc na połowę pierwszego dnia w tym na dwa keynoty.

W końcu udało mi się jednak dotrzeć do centrum kongresowego ICE, które robiło ogromne wrażenie. Położone jest tuż obok Wisły naprzeciwko Wawelu. W środku 5 sal wykładowych i dodatkowe małe sale do warsztatów. Główne audytorium mogło pomieścić chyba ze 2000 ludzi. Miała nawet balkony po bokach jak w teatrze.

Ok, przejdźmy teraz do prezentacji.

Site Reliability Engineering & distributed services design – Jessica Man

Autorka prezentacji na co dzień pracuje w Goldman Sachs i opowiadała jak tworzy się soft w branży bankowej. Było więc trochę o procedurach związanych z jakością i bezpieczeństwem. Główna różnica w stosunku do safety-critical jest taka, że tutaj wszystkie regulacje są nakładane wewnętrznie przez bank. Nie ma żadnych ogólnie przyjętych standardów. Inne są też cele. W aplikacjach bankowych poza poprawnością działania (o której nie było zbyt wiele) najważniejsza jest dostępność. Było więc o SRE (Site Reliability Engineering), monitoringu i metrykach. Druga część prezentacji to omówienie gRPC (google remote procedure calls).

Machine Learning at LinkedIn – Szczepan Faber

Na początku było trochę o dotychczasowych osiągnięciach sztucznej inteligencji. Czyli o meczu Kasparow vs Deep Blue w szachy, AplhaGo vs Lee Sedol w Go i ostatnim AlphaStar vs MaNa (Grzegorz Komnicz) w Starcrafta 2 z tego roku.

Później przeszliśmy do głównej części prezentacji, czyli jak AI wykorzystuje się w LinkedInie. Jak można się domyślić, sztuczna inteligencja w tak dużej firmie jest wykorzystywana do wielu różnych serwisów jak choćby pomoc techniczna, optymalizacja wyszukiwania osób, stanowisk, firm, a nawet wykrywanie ataków. Przez to, że istnieje tak dużo różnych zastosowań, a firma składuje ogromne ilości danych wprowadzono specjalne procesy, dobre praktyki i szkolenia mające zwiększyć produktywność programistów pracujących nad tymi tematami.

Dzień 2

Drugiego dnia udało się już uniknąć problemów i mogłem uczestniczyć we wszystkich prezentacjach. Tego dnia było też zaplanowane moje wystąpienie.

Testing Your Message-Driven Application – Marcin Grzejszczak, Jakub Pilimon

Fajna prezentacja przeprowadzona w formie scenek z życia konsultanta przychodzącego do firmy poprawić istniejący system. W rolę konsultanta wcielił się Jakub Pilimon, a Marcin Grzejszczak był liderem projektu. Ich dialogi pełne były parodii typowych zachowań programistów typu copy-paste development, czy oszczędzania czasu na testowaniu.

Gdy już się pośmialiśmy za każdym razem następowała rzeczowa dyskusja między prelegentami skutkująca lepszym rozwiązaniem.

A case for Outside-In Design – Sandro Mancuso

Tematem było podejście do architektury aplikacji. Na początku Sandro Mancuso wyjaśnił, że każdy jest stronniczy i ma swoje ulubione rozwiązania typowych problemów. Wymienił też rodzaje „biasów” w programowaniu.

Można to porównać do często przytaczanego zdania, że jeżeli mamy młotek, wszystko wygląda jak gwóźdź. Następnie przeszedł do omówienia podejścia Outside-In, gdzie idziemy od ogółu do szczegółu, żeby zaimplementować tylko te elementy, które są potrzebne. Pokazał też pomocnicze techniki, które możemy wykorzystywać na różnych poziomach szczegółowości. Samo podejście od ogółu do szczegółu nie jest niczym nowym i jest chyba najstarszym sposobem projektowania, który z resztą sprawdza się nie tylko w programowaniu.

Talk to me nicely – how to communicate your ideas and speed up your career – Piotr Stawirej

Ta prezentacja była z kolei o komunikacji i umiejętnościach interpersonalnych. Okazuje się, że to od nich w aż 80% zależy nasz zawodowy sukces. Jednak większość programistów i tak skupia się wyłącznie na poprawianiu zdolności technicznych. Było o efekcje Krugera Dunninga, o książce Dale Carnagie. Było też sporo memów i cytatów.

Jak tylko pojawi się wideo, polecam każdemu obejrzeć.

Moja prezentacja

Drugiego dnia odbywała się również moja prezentacja. Pierwszy raz mówiłem ją po angielsku. W niektórych miejscach musiałem przyciąć, żeby się wyrobić. Paru rzeczy też po prostu zapomniałem powiedzieć. Na koniec wyszło, że miałem jeszcze kilka minut, więc spokojnie mogłem nic nie wyrzucać. Na pewno będzie co poprawiać na przyszłość.

Dzień 3

Ostatniego dnia niestety też nie mogłem być na wszystkich prezentacjach. Pociąg powrotny miałem około 15, a na następny dzień do pracy. Dlatego ominął mnie kolejny keynote. Na szczęśnie na kilka fajnych talków zdążyłem się jeszcze załapać.

Orchestrating Robot Swarms with Java – Mathew Cornford

Autor pracuje nad flotą robotów obsługującą magazyny z artykułami spożywczymi. W takim magazynie na raz znajduje się 1500 tego typu maszyn. Są one zarządzane przez soft napisany w Javie. Musi on realizować pewne zadania w czasie rzeczywistym, dlatego trzeba było popracować nad deterministycznym zachowaniem, garbage collectorem i optymalizacją. Same roboty są napisane w C bez żadnego systemu operacyjnego. Podczas developmentu duży nacisk kładą na automatyzację. Dlatego jest system Continuous Integration sprawdzający zarówno część w Javie, jak i w C. Są też testy Hardware-in-the-loop. Soft jest rozwijany z wykorzystaniem TDD, także w C. Co ciekawe JVM jest wykorzystywany także do testowania firmware robotów. Binarki C są odpalane w JVM i testowane przy pomocy JUnit. Innym ważnym czynnikiem przyspieszającym drastycznie development jest stworzenie środowiska symulacyjnego, w którym można przeprowadzić większość testów wysokiego poziomu. Co ciekawe w tym projekcie nigdzie nie jest wykorzystywany ROS, firma wolała wszystko napisać samemu od zera.

Architects sucks, architecture rocks – James Birnie

Autor tej prezentacji starał się odpowiedzieć na pytanie jak wygląda dobra architektura i czym powinien zajmować się architekt (a czasem nawet ważniejsze – czym nie powinien). Na początek diagnoza problemu:

  • Wiedza o działaniu poszczególnych elementów jest znana tylko nielicznym.
  • Architektura jest tworzona przez osoby, które same już przestały pisać kod.
  • Ludzie wiedzą jak zrealizować zadania w skali mikro, ale nie wiedzą jaki jest cel.
  • Trzeba przestrzegać wielu zasad, które nie zawsze mają sens i nie wiadomo skąd się wzięły

Aby odpowiedzieć na ważne pytania dotyczące takiego systemu, trzeba skorzystać z architektologii (połączenie architektury z archeologią).

Stworzenie dobrej architektury jest ciężkie i narzucenie jej całemu zespołowi przez jedną osobę po prostu się nie sprawdza. Zamiast tego lepiej jasno zakomunikować cele jakie architektura realizuje i jakie są preferowane sposoby ich osiągnięcia. Developerzy posiadając tą wiedzę i trochę swobody będą w stanie sami znaleźć rozwiązania na niższym poziomie realizujące te cele. Musimy też monitorować odpowiednie wartości dobrze obrazujące stan naszego systemu i realizację celów. Lubię prezentacje o architekturze na takich konferencjach. Jako embedded jesteśmy daleko w tyle i możemy się wiele nauczyć.

Live Hack: Finding Security Vulnerabilities Before They Find You! – Simon Maple

Podczas tej prezentacji mogliśmy zobaczyć na żywo włamywanie się do aplikacji webowych wykorzystując znane podatności w open-surce’owych modułach. Takie live hackingi zawsze robią wrażenie. Konkluzja też zawsze jest taka sama – nie możemy wierzyć danym wejściowym i powinniśmy jak najszybciej wgrywać wszystkie patche bezpieczeństwa.

Podsumowanie

Konferencja bardzo mi się podobała zarówno pod kątem organizacyjnym, jak i merytorycznym. Nawet osoba, która tak jak ja, nie ma zielonego pojęcia o Javie może znaleźć dla siebie wiele ciekawych tematów. Jedyny mały minus to dla mnie termin rozpoczęcia od razu po długim weekendzie, który mi mocno skomplikował przyjazd. Pewnie jakby się zaczynało we wtorek, byłoby po problemie.