Cześć! Dziś opowiem Wam o ostatnim problemie, jaki rozwiązywaliśmy na grupie kursantów KierunekJava. Całość skończyła się pozytywnie, ale nie obeszło się bez odrobiny dramatyzmu 🙂
Gdy korzystamy z najpopularniejszych rozwiązań na rynku, to często oczekujemy (i wręcz zakładamy), że one zwyczajnie będą działały – niestety nie zawsze tak jest…
Zapraszam do lektury oraz wniosków, które z powodzeniem można zastosować w podobnych sytuacjach.
Spis treści
Problematyczna podmiana bazy danych
Jeden z popularniejszych frameworków Java – JPA/Hibernate wprowadza nam dodatkową warstwę abstrakcji w dostępie do danych, co zgodnie z założeniami powinno nam w przyszłości np. ułatwić ewentualną podmianę wykorzystywanej bazy danych.
W praktyce niestety czasami są z tym problemy 😉
Projekt aplikacji
W ramach programu EAI (Efektywne Aplikacje Internetowe) budujemy wspólnie aplikację. Całość oparta jest o Spring Boot, Maven, Hibernate/JPA oraz bazę danych PostgreSQL, a do testów bazę danych H2.
Dość często w początkowym okresie projektu zdarza się, że trochę żonglujemy tymi bazami danych… np. najpierw zarówno sama aplikacja, jak i testy są na tej samej bazie danych np. PostgreSQL, a dopiero później to rozdzielamy, żeby testy mogły żyć niezależnym życiem.
Tak było też w tym wypadku. Jeden z naszych kursantów chciał podmienić bazę danych wykorzystywaną w testach – zmieniając w tym celu odpowiednią konfigurację.
Niestety „COŚ” poszło nie tak i co ciekawe tylko część z testów przestała działać.
Gdy nasza aplikacja jednoznacznie się wysypuje, to można powiedzieć, że mamy szczęście…
Jednoznaczne błędy stosunkowo łatwo się naprawia – gdy np. nie możemy połączyć się do bazy danych, to dostaniemy stosowny komunikat, że baza danych jest nieosiągalna.
Tutaj niestety było inaczej i tylko niektóre – dodajmy – bardzo specyficzne przypadki nie działały…
Jak podejść do tak niejednoznacznego problemu?
Kursanci mają to szczęście, że mogą zwyczajnie zapytać i przegadać swój problem 🙂 I jest to całkiem dobre wyjście. Zamiast walić głową w przysłowiową ścianę lepiej zebrać swoje myśli, spisać je (tak, to też pomaga!) i przegadać to z kimś innymi – czy to na stack overflow, czy w dowolnym innym miejscu.
➡ ZOBACZ 👉: CO ROBIĆ, gdy nic nie działa i wszystko się wali?!
Zanim jednak rzucimy się, wołając o pomoc do innych developerów – mamy jeszcze kilka sposobów, które warto wypróbować wcześniej.
Przekazywanie kodu i informacji o problemie
O ile screeny z kodem sprawdzają się nieźle w bardzo prostych przypadkach, gdy chcemy na szybko pokazać dosłownie kilka linijek kodu – tak przy odrobinę trudniejszych wyzwaniach warto już sięgnąć po dedykowane narzędzia.
W tym celu możemy np. wykorzystać repozytorium git oraz publiczny hosting GitHub
O tym, jak podzielić się kodem w ten sposób możesz przeczytać tutaj.
Debugowanie kodu
Mając do dyspozycji cały kod, możemy go bardzo prosto zdebugować – czyli uruchomić dosłownie linijka po linijce i sprawdzić co tam się właściwie dzieje.
I tak właśnie było w tym wypadku – dopiero uruchomienie całego kodu i sprawdzenie tego na własne oczy pozwoliło mi lepiej zorientować się w sprawie.
➡ ZOBACZ 👉: Debugowanie, jakiego jeszcze nie znałeś
Przegląd kodu (ang. code review)
W tym wypadku warto też wspomnieć, że udostępniając taki kod innej osobie, robimy swego rodzaju uproszczony code review. Inna osoba patrzy na nasz kod i zastanawia się, co można w nim jeszcze ulepszyć.
Świetne rozwiązanie, na którym zyskuje obie strony. Jeżeli chcesz dowiedzieć się więcej – zachęcam do lektury tego wpisu.
➡ ZOBACZ 👉: Code Review – Nie wiesz, jak pisać lepszy kod? Skup się na code review (przegląd kodu)!
Prawdopodobnie nie Ty pierwszy…
Gdy natrafiamy na jakiś problem, często jesteśmy nim tak pochłonięci, że całkowicie zapominamy, że prawdopodobnie nie my pierwsi spotykamy się z takim wyzwaniem.
Szczególnie gdy pracujemy jako programiści i nie robimy czegoś całkowicie nowego, a np. uczymy się jakieś już istniejącej technologii – to naprawdę istnieje bardzo małe prawdopodobieństwo, że trafimy na coś, co nie zostało już wcześniej przez kogoś znalezione – i co dla nas ważniejsze – opisane!
Tak, w Internecie można znaleźć praktycznie wszystko 🙂
Zaczynając od tutoriali jak posmarować kromkę chleba masłem… a kończąc na rozwiązaniu naszego problemu programistycznego!
Gdy tylko mamy zidentyfikowany problem – przeskakujemy do Google i próbujemy znaleźć podobną sytuację.
➡ ZOBACZ 👉: Szukaj w google
W naszym konkretnym przypadku okazało, że rzeczywiście ktoś wcześniej zgłosił już taki problem i jest to błąd w Hibernate. Smutne – ale czasem tak bywa i jako developerzy musimy też liczyć się z sytuacjami, że rozwiązania, z których korzystamy, nie zawsze są idealne i czasem zwyczajnie mają błędy. Ostatecznie po drugiej stronie też siedzą zwykli ludzie, developerzy jak my 🙂
Kolejny pozytyw takiego szukania to doświadczenia osób, które już walczyły z tym problemem – bardzo często dzielą się swoimi rozwiązaniami. I właśnie ich podpowiedź pozwoliła nam szybko rozwiązać nasze niedziałające testy.
Tyle z mojej strony na dziś. Mam nadzieję, że ta analiza pokaże Ci tok rozumowania i kilka inspiracji jak można szukać rozwiązań codziennych trudności programistycznych. Powodzenia i do usłyszenia!
Tomek
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!