W roku 1995 Sun Microsystems wydaje pierwszą wersję Javy. W Polsce ta informacja przechodzi bez echa. Lata 90 to okres świeżo po transformacji, już samo posiadanie komputera zakrawa tutaj o luksus, na który stać nielicznych. Głównym medium jest u nas odbiornik telewizyjny dlatego większość Polaków ten rok kojarzyć może bardziej z premierą pierwszego odcinka Ekstradycji – kultowego serialu kryminalnego lat dziewięćdziesiątych w reżyserii Wojciecha Wójcika. Tak jak Ekstradycja zmieniła postrzeganie seriali kryminalnych w Polsce i w ciekawy sposób ukazała zmiany, które zaszły podczas transformacji, tak Java dokonała pewnej rewolucji w kontekście języków programowania.
Mijają 24 lata. Po wypuszczeniu trzech sezonów Ekstradycji, zakończono emisję serialu, który jak się później okazało, przetarł szlak kolejnym świetnym produkcjom kryminalnym. Wystarczy przytoczyć tutaj kultowego Glinę, starego Pitbulla czy nieco świeższą pozycję Kruk Szepty słychać po zmroku. Równolegle na barkach Javy wyrosło wiele solidnych języków programowania, zaś sama Java doczekała się kilkunastu kolejnych odsłon i w przeciwieństwie do Ekstradycji nie zamierza jeszcze schodzić ze sceny.
Java User Group
Tak jak seriale mogą mieć rzesze fanów skupiających się na forach czy grupach społecznościowych, tak samo niektórym językom programowania udało się zbudować równie silne społeczności. Dobrym przykładem jest Java User Group. Jest to inicjatywa oficjalnie wspierana przez Javę od 1999 roku. Te lokalne (chociaż bywają wyjątki), otwarte spotkania są oddolną inicjatywą, w trakcie której organizowane są wykłady i warsztaty o tematyce około javowej. Głównym celem tych bezpłatnych spotkań jest szerzenie wiedzy i wymiana doświadczeń pomiędzy programistami.
W Polsce spotkania odbywają się w największych miastach:
- Bydgoszcz,
- Kielce,
- Kraków,
- Lublin,
- Łódź,
- Opole,
- Poznań,
- Rzeszów,
- Silesia,
- Szczecin,
- Toruń,
- Trójmiasto,
- Warszawa,
- Wrocław,
- Zielona Góra.
W zależności od miejsca zamieszkania, najprawdopodobniej będziesz kojarzył JUG’a w kontekście jednego z wyżej wymienionych miast i jego lokalnej odsłony. Najbliższa mojemu sercu jest łódzka edycja, na którą regularnie uczęszczam, od niemal samego początku. Nie oznacza to jednak, że powinniśmy ograniczać się tylko i wyłącznie do spotkań na żywo. Dzięki dobrodziejstwom XXI wieku, jest możliwość obejrzenia nagrań z różnych miast bez wychodzenia z domu. Jest to możliwe, ponieważ większość społeczności nagrywa spotkania i publikuje na oficjalnych kanałach YouTube. Poniżej podrzucam ci kilka przykładowych kanałów JUG do śledzenia:
To co z tym serialem?
Na przełomie 2018/2019 roku padł pomysł, aby w gronie kilku znajomych zorganizować serię spotkań, które przybliżą podstawowe zagadnienia związane z językiem Java. Zauważyliśmy, że jest pewna rozbieżność pomiędzy tym co oferują spotkania na JUG’ach, czego nauczają na uczelniach, a tym czego oczekują osoby będące w trakcie studiów, czy kursów programowania. Społeczność programistów bardzo chętnie porusza tematy nowe i gorące ale często okazują się one zbyt zaawansowane dla osoby dopiero wchodzącej w świat programowania. Z kolei, na uczelniach często brakuje świeżości w materiałach, które odpowiadałaby oczekiwaniom pracodawców.
Udaną inspiracją stworzenia formuły rozwiązującej te problemy był Jinkubator, czyli dziecko warszawskiego JUG’a. W ramach serii spotkań pod tą egidą, główny nacisk położono na praktykę i podstawową tematykę poruszonych zagadnień.
Nasza formuła pod względem merytorycznym miała być bardzo zbliżona do powyższej. Wystarczyło zaledwie kilka spotkań, aby pomysł chwycił i udało się zebrać 8 osób, chętnych do podjęcia się takiego przedsięwzięcia. Po burzliwych dyskusjach mieliśmy już nawet nazwę- Javafaktura. Należało tylko dogadać szczegóły, wszak 50% to sam pomysł… (taa.. :-))
Opasłe 50%
House of cards otwiera nam oczy jak wygląda polityka od kuchni. Narcos zdradza kulisy karier baronów narkotykowych. W podobny sposób praca w przygotowaniu Javafaktury pokazała nam o ile rzeczy trzeba zadbać, aby spotkanie wypaliło w formie jaką sobie wymarzyliśmy.
Do zorganizowania takiego wydarzenia niezbędne było chociażby:
– wybór odpowiedniego miejsca spotkań,
– przygotowanie materiałów promocyjnych,
– wypożyczenie sprzętu do nagrywania,
– opanowanie umięjętności montażu nagrań.
Wszystko po to, abyś Ty poświęcając 2 godziny swojego cennego czasu, nie czuł rozczarowania i mógł w pełni skorzystać z formuły, którą ci zaserwowaliśmy. Jako ciekawostkę pokażę ci historyczną tablicę kanbanową z listą zadań, które wykonaliśmy zanim wystartował pierwszy odcinek Javafaktury.
Premiera pierwszego spotkania miała miejsce 12 marca, ale prace nad jego produkcją rozpoczęły się już na początku roku 2019. W trakcie ustaleń zapadła też kluczowa decyzja o sezonowości spotkań na wzór seriali. Sezonowość ta polegała na motywie przewodnim zaczerpniętym od jednego z blockbusterów oraz wspólnej tematyce łączącej wszystkie odcinki w zgrabną całość. To posłużyło też jako inspiracja na tytuł tego wpisu.
S01 Java Is The New Black
„Java Is The New Black” – taką nazwą został ochrzczony pierwszy sezon i jak nietrudno się domyślić, skupiał się w głównej mierze na temacie samego języka. Cele jakie sobie obraliśmy, to przekazanie odbiorcy:
- jakie są podstawowe elementy najnowszej wersji odsłony Javy,
- na które obszary zwrócić szczególną uwagę podczas nauki programowania,
- pokazać dobre praktyki bazujące na naszym wieloletnim doświadczeniu, wyniesione z boju komercyjnych projektów,
- unikać prezentacji czysto teoretycznych i nie wahać się przed pokazywaniem kodu na żywo.
Poniżej skrót tego co miało miejsce podczas pierwszego sezonu.
S01E01 Kolekcje, typy generyczne, streamy – Michał Mela
Przed Michałem zostało postawione najtrudniejsze zadanie. To jego prezentacja otwierała cały sezon i przecierała szlak reszcie ekipy. Od powodzenia pierwszego odcinka zależało, czy ktokolwiek zechce ponownie pojawić się na kolejnych odsłonach cyklu.
Niestety, nie obyło się bez problemów technicznych związanych z podłączeniem sprzętu i jest to też jedyny odcinek, który nie doczekał się relacji w postaci video 🙁 Chyba, wszystkie klątwy efektów demo skupiły się na pierwszym odcinku. Pomijając same problemy techniczne, było bardzo dobrze jak na dziewiczy odcinek. Michał przekazał kilka istotnych uwag i sam odbiór premiery „Java Is The New Black” był bardzo pozytywny. Najbardziej w pamięci utkwił mi cytat, który padł w trakcie wykładu:
Przedwczesna optymalizacja jest źródłem wszelkiego zła.
Donald Knuth
Wiele osób znajdujących się na początku swojej kariery ma błędne wyobrażenie na temat jak wygląda kod pisany przez osoby z bogatym doświadczeniem. Niesłusznie zakładają, że umiejętność wplatania zaawansowanych wzorców czy pisania skomplikowanego kodu, czyni go „idealnym”. W rzeczywistości wygląda to inaczej, to właśnie prostota świadczy o dużym doświadczeniu. Pisanie prostego kodu nie jest wcale tak proste jak mogłoby się wydawać.
Less is more.
Ludwig Mies Van Der Rohe
Od siebie dorzucę, że stosowanie metody YAGNI albo przypomnienie sobie tej zasady ilekroć poczujemy, że zaczynamy przekombinować jest tym o czym powinniśmy pamiętać każdego dnia.
Kod: https://github.com/javafaktura/s01e01.
S01E02 Optionale i Streamy – Adam Król
Drugi odcinek ruszył już bez niespodzianek. Nauczeni na błędach, które wystąpiły podczas pierwszego odcinka, byliśmy już lepiej przygotowani. Adam skupił się na przybliżeniu tematyki Optionali i Streamów w Javie. Omówił kilka pułapek, które mogą czychać na mniej doświadczone osoby używające tych konstrukcji oraz jak ich uniknąć.
Kod: https://github.com/javafaktura/s01e02.
S01E03 Future Simple, Future Perfect, CompletableFuture – Tomek Adamczewski
To odcinek, na który szczególnie mocno czekałem, ponieważ Tomek wziął na swoje barki jeden z trudniejszych tematów tego sezonu. Przejrzyste przykłady do nietrywialnego zagadnienia oraz przegląd dostępnych modeli współbieżności, to coś, na co warto poświęcić niecałe dwie godziny. Tomek rozprawił się z prezentowanymi tematami pierwszorzędnie. Moja opinia nie jest odosobniona, potwierdzają to chociażby ankiety wypełnione przez publikę po prezentacji.
Kod: https://github.com/javafaktura/s01e03.
S01E04 Wzorce projektowe – Tobiasz Kowalski
Javafaktura nabierała tempa i podczas czwartego spotkania, każdy kto liczył na live coding, nie wyszedł ze spotkania zawiedziony. Tobiasz wykonał kawał dobrej roboty. Wytłumaczył, o co, tak naprawdę chodzi we wzorcach projektowych i jak pragmatycznie możemy podejść do ich stosowania. A wszystko to pokazane na kawałku kodu symulującego frakment biznesu w domenie pizzerii.
Kod: https://github.com/javafaktura/s01e04.
S01E05 Testowanie w Javie na przykładzie JUnit5 – Tomek Owczarek
Półmetek pierwszego sezonu to moje wystąpienie i ukazanie tematu testowania na przykładzie najpopularniejszej biblioteki (niekoniecznie tej ulubionej ;-)) JUnit w jej najnowszej piątej odsłonie. Cel jaki sobie obrałem przygotowując ten odcinek, to zwrócenie uwagi na to, że testy są istotnym elementem pracy programisty, którego nie należy lekceważyć. Położyłem główny nacisk na testowanie jednostkowe i komponentowe, jednocześnie pokazując, że ilekroć możemy, powinniśmy wystrzegać się testów zabetonowanych mockami czy stubami.
Kod: https://github.com/javafaktura/s01e05.
S01E06 Zmiany w kluczowych pakietach JDK – Paweł Balczyński
Paweł podczas prezentacji zdecydował się na oryginalne podejście i całkowitą rezygnację ze standardowych slajdów. Całość została zaprezentowana z poziomu konsoli przy użyciu Jshella. Nie obyło się bez kawałka historii, o tym jak znaleźliśmy się w tym miejscu, gdzie jesteśmy. Paweł zwrócił również uwagę na pewne ułomności biblioteki standardowej, na które warto żebyś zwrócił uwagę.
Kod: https://github.com/javafaktura/s01e06.
S01E07 OOP – Piotr Kotynia
Piotrek za cel postawił sobie przybliżenie dobrych praktyk wywodzących się między innymi z paradygmatu obiektowego. Na wykładzie zostały zaprezentowane zasady SOLID, DRY, KISS czy YAGNI. Wspomniane zasady, pomimo kilkunastu lat na karku nadal są obowiązkową pozycją, którą każdy programista powinien znać i stosować.
Kod: https://github.com/javafaktura/s01e07.
S01E08 Na OOP świat się nie kończy – Artur Czajka
Java jest często określana jako język głównie obiektowy. W ostatnich latach zyskujemy jednak elementy, które pozwalają na skorzystaniu z paradygmatu funkcyjnego. To na tych elementach skupił się Artur w swoim wykładzie spinającym cały pierwszy sezon piękną mona… przepraszam: klamrą.
Kod: https://github.com/javafaktura/s01e08.
Podsumowanie
Sezon odniósł duży sukces, patrząc na frekwencje podczas wykładów i liczby wyświetleń poszczególnych odcinków. Na pewno złożyło się na to ogromne zaangażowanie osób w ten projekt, i to że udało się dopiąć niemal wszystkie sprawy organizacyjne na czas. W tym miejscu należy podziękować również publice, która ochoczo przybywała na spotkania wypełniając aulę po brzegi i niejednokrotnie biorąc czynny udział w żywiołowych dyskusjach.
W trakcie trwania pierwszego sezonu zbieraliśmy ankiety, które miały na celu określić czy:
- tematyka jest adekwatna do audytorium,
- poziom przekazywanych treści jest dobrze dopasowany do średniego doświadczenia w auli,
- nie warto skorygować naszego kursu i nie pozmieniać czegoś w harmonogramie,
- oraz zebrać feedback na temat tego jak sobie poradziliśmy, często w nowej roli prelegenta.
Jedno z pytań ankiety weryfikowało poziom lojalności wobec marki. Net Promoter Score, bo o nim mowa mierzy lojalność, która istnieje pomiędzy konsumentem a dostawcą.
Wartości NPS wahają się pomiędzy -100 i +100, przy czym -100 odpowiada sytuacji gdy każdy z badanych klientów jest krytykiem danej marki niepolecającym jej innym, a +100 odpowiada sytuacji gdzie każdy promuje – jest gotów polecić – daną markę znajomym. Wartości dodatnie NPS uznawane są za wynik dobry a wartości powyżej 50 za doskonały.
Średni wynik dla całego sezonu jaki udało nam się osiągnąć to 26
Drugi sezon w drodze
Wróćmy jeszcze na chwilę do tych seriali. Z ich kolejnymi sezonami bywa różnie. Czasem sezon jest przerywany ze względu na niezadowalające przyjęcie przez publikę. Producenci zakręcają wtedy kurek z pieniędzmi i niedokończone wątki serialu zostają takimi na wieki. Przewidujemy, że wątki naszego serialu doczekają się dalszych losów. Po ciepłym przyjęciu pierwszej serii, mamy motywację do pracy nad kolejnymi sezonami. Ten drugi startuje już lada moment, bo już 15 października 2019
Tutaj link do wydarzenia, gdzie można się zapisać
(w momencie publikacji może okazać się, że miejsc na wydarzenie już zabraknie – co wtedy? kliknij tutaj)
Cały sezon w całości zostanie poświęcony Spring Frameworkowi. Decyzja ta, została podjęta głównie za sprawą feedbacku jaki otrzymaliśmy z ankiet. W pytaniu o to, jaki temat jeszcze powinien zostać zaprezentowany na Javafakturze, to właśnie Spring deklasował wszystkie inne propozycje. Grono prelegentów zostanie rozszerzone o nowe twarze, wdrożymy też kilka usprawnień na bazie doświadczenia i uwag zebranych po pierwszym sezonie.
Aby być na bieżąco z całą inicjatywą Javafaktury, polecam ci śledzenie mediów:
- Oficjalny profil na fb: https://www.facebook.com/javafaktura
- Meetup łódzkiego Java User Group, gdzie publikowane są wydarzenia kolejnych odcinków: https://www.meetup.com/pl-PL/Java-User-Group-Lodz/events
- Oficjalny kanał YouTube łódzkiego Java User Group, gdzie publikujemy zmontowane nagrania: https://www.youtube.com/user/juglodz/videos