Dzisiaj chcę omówić i podzielić się wynikami dwóch ankiet, które umieściłem na LinkedIn na moim profilu. Motywem przewodnim tych ankiet było hasło “zdobywanie wiedzy poprzez zabawę”. Poniżej ankiety, o których piszę:
- Czy Hibernate ORM, to jedyna dostępna implementacja JPA (Java Persistence API)?
- Czym jest Lombok?
Obie ankiety poza formą zabawy mają na celu aktywację dodatkowej ciekawości, która moim zdaniem jest niezbędna w pracy programisty, programistki. Często powtarzam osobom, z którymi pracuję, że do programowania jest niezbędna “informatyka śledcza” – sami musimy mieć chęć drążenia tematu. Czy to w związku z rozwiązywaniem napotkanego problemu, tworzeniem, kodowaniem czegoś nowego czy po prostu zgłębianiem wiedzy. Wiem również, że ciężko jest oderwać się od pisania kodu źródłowego (kodowania) i zastanowić się nad narzędziami, które używamy na co dzień w trakcie pracy. Wiem również, że twórcy narzędzi dokładają wszelkich starań, żeby włożyć w swój produkt coś więcej niż dobrze wykonaną część praktyczną. Skoro twórcy narzędzi mają dużo przyjemności i radości w trakcie swojej pracy, to czemu my programiści i programistki nie możemy mieć podobnie w trakcie pracy nad kodem źródłowym?
Czy Hibernate ORM, to jedyna dostępna implementacja JPA (Java Persistence API)?
W ankiecie wzięło udział czternaście osób, które jednomyślnie zagłosowały na odpowiedź, która wskazuje, że Hibernate ORM, to nie jedyna implementacja JPA (Java Persistence API). Jest, to prawidłowa odpowiedź, Hibernate, to nie jedyna implementacja JPA. Jakie są alternatywy dla Hibernate? Na, to pytanie znajdziemy odpowiedź w sekcja “Vendors supporting JPA” na stronie https://en.wikipedia.org/wiki/Jakarta_Persistence#Version_history.

W tym miejscu powinna zadziałać “informatyka śledcza”, która mogłaby postawić następujące pytania:
- Czym jest ORM?
- Object/Relational Mapping – https://hibernate.org/orm/
- Czym jest JPA?
- Java Persistence API – https://en.wikipedia.org/wiki/Jakarta_Persistence
- Czym jest API?
- Application Programming Interface – https://en.wikipedia.org/wiki/API
- Jakie są alternatywy dla Hibernate?
- Sekcja “Vendors supporting JPA” – https://en.wikipedia.org/wiki/Jakarta_Persistence#Version_history
- Jaka jest różnica pomiędzy Java Persistence API, a Jakarta Persistence API?
- Jakarta Persistence (JPA; formerly Java Persistence API) – https://en.wikipedia.org/wiki/Jakarta_Persistence
Czym jest Lombok?
W ankiecie wzięło udział siedemnaście osób, które odpowiedziały prawie 50/50, że Lombok może być biblioteką języka Java lub jednocześnie wyspą i biblioteką języka Java. Jaka jest prawidłowa odpowiedź? Lombok jest jednocześnie Indonezyjską wyspą jak i również biblioteką języka Java. Czyli mamy dwie wyspy Java – https://en.wikipedia.org/wiki/Java i Lombok – https://en.wikipedia.org/wiki/Lombok oraz bibliotekę Java o nazwie “Project Lombok”, wszyscy mówią po prostu Lombok – https://projectlombok.org.

W tym miejscu powinna zadziałać “informatyka śledcza”, która mogłaby postawić następujące pytania:
- Czym jest Project Lombok?
- “[…] Never write another getter or equals method again, with one annotation your class has a fully featured […]” – https://projectlombok.org
- Czy jest więcej bibliotek dla języka Java?
- “[…] There are currently 350+ open source initiatives at the ASF (Apache Software Foundation) […]” – https://projects.apache.org/projects.html
Moje ulubione “ciekawostki programistyczne”
Czy Linus Torvalds jest git?
“Wszyscy” używamy rozproszonego systemu kontroli wersji jakim jest git, ale niewiele osób zdaje sobie sprawę, że został on stworzony przez Linusa Torvaldsa, tego samego, który stworzył – “Linux kernel […] Unix-like operating system kernel” – jądro, rdzeń Unix’o podobnych systemów operacyjnych. Linus Torvalds, programista (software engineer), który nie znalazł dobrego narzędzia do wersjonowania kodu dla własnego produktu, oprogramowania – Linux kernel – postanowił napisać własne narzędzie, które będzie spełniało jego oczekiwania i tak powstał rozproszony system kontroli wersji git. Więcej informacji na https://pl.wikipedia.org/wiki/Git_(oprogramowanie).
Kto obecnie jest właścicielem kodu źródłowego?
Patrząc w stecz, właścicielem języka Java była firma Sun Microsystems, obecnie jest nim firma Oracle. Hibernate pierwotnie został “stworzony przez” firmę JBoss, obecnie właścicielem jest Red Hat.
Czemu mam zwracać uwagę na zmiany “właścicieli” bibliotek, API, frameworków? Na przykładzie JPA (Java Persistence API) – “[…] Jakarta Persistence (JPA; formerly Java Persistence API) […] The API itself, defined in the jakarta.persistence package (javax.persistence for Jakarta EE 8 and below)”. W telegraficznym skrócie. Zmiana wersji JPA wymaga zmiany w innych współzależnych frameworkach, np.: Spring, Hibernate. Zmiana wersji nie jest trywialnym zadaniem, wymaga ona dużego nakładu pracy przy kodowaniu i testowaniu oprogramowania. Dodatkowo szukając informacji w internecie należy zwracać uwagę, której wersji biblioteki, frameworka dotyczy tutorial.
Takie “ciekawostki programistyczne”- mogą również przydać się w trakcie rozmowy kwalifikacyjnej. Osobom, z którymi pracuję polecam w momencie, gdy utknęli na rozmowie rekrutacyjnej – z powodu stresu, braku wiedzy – żeby “podrzucili ciekawostki programistyczne”. Może, to pomóc w zniwelowaniu stresu lub poprowadzić rozmowę w kierunku innego pytania.
Mam nadzieję, że powyższe ankiety poza elementami zabawy dostarczyły również szczyptę wiedzy na temat “tak dobrze mi znanym narzędziom, których cały czas używamy”. Ciekawy jestem, jakie są Twoje czytelniku, czytelniczko przemyślenia po przeczytaniu tego tekstu?