Spring i mity … Do tej pory Spring Framework pojawiał się na blogu głównie w kontekście innych narzędzi lub ogólnych rozważań o pracy programisty Java. Jednak tym razem postanowiłem opisać kilka mitów, na jakie mogą trafić początkujący developerzy.
Motywacja
Motywacją do napisania artykułu był post na jednej z grup na Facebook. W poście tym osoba początkująca pytała się, dlaczego uwierzytelnienie użytkownika nie działa jej na podstawie danych z MySQL. Nie jest to szczególnie zajmujący przypadek w Springu, ale diabeł tkwi w szczegółach …
Generalnie problem, jaki tam się pojawił był trochę innej natury:
- osoba była początkująca i pisała kod na podstawie jednego z tutoriali,
- tutorial zakładał, że ktoś ma już zainstalowaną bazę MySQL,
- kod dopisany przez tę osobę wskazywał, że nie programowała za długo do tej pory,
- w pom.xml zapomniano o włączeniu modułu spring-boot-starter-security (akurat był to tutorial ze Spring Boot),
- z kodu nie wynikało dlaczego właściwie oczekiwanie uwierzytelniania użytkownika miałoby być spełnione (kod z tutoriala nie był przepisany w całości).
Z całego wątku na tej anglojęzycznej grupie wyłonił się obraz kilku mitów, na które trafiamy w różnych dyskusjach. Na kanwie tej historii postanowiłem napisać artykuł. Mam nadzieję, że pomoże kilku osobom nie popełniać takich samych błędów.
Także, lecimy z tematem.
Mit 1. Zaczynam uczyć się Javy to warto połączyć to ze Spring
To chyba jedna z najgorszych rad jaką można dać osobie rozpoczynającej swoją przygodę z programowaniem. Gdy zaczynasz naukę programowania, to przede wszystkim należy skupić się na zrozumieniu języka. Jego mechanizmów, składni, budowy podstawowych aplikacji. Taka nauka to minimum kilka miesięcy. Trzeba przyswoić mnóstwo zagadnień, które dla osób wcześniej nieprogramujących stanowią nie lada wyzwanie.
Dlatego jestem zaskoczony, jak często na różnych grupach trafia się taka rada. Spring sam w sobie niesie olbrzymi bagaż doświadczeń. Myślę, że adekwatnym porównaniem dla tej wyjątkowo głupiej rady byłaby sugestia czytania w wolnych chwilach Pana Tadeusza dziecku, które dopiero poznaje literki. Niby tu i tu są litery z alfabetu. Niby tu i tu jest tekst. Ale, sorry, tak po prostu się nie da!
Mit 2. Spring jest prosty
Jest prosty, jak masz w nim kilka lat doświadczenia. A i wtedy będziesz znał prawdopodobnie tylko kilkanaście wybranych modułów. Bo pozostałych po prostu nie używałeś lub zdarzyło się, że użyłeś kilka lat temu.
Dlatego warto tutaj podkreślić, że Spring nie jest prosty. Spring Boot ukrywa wiele rożnych aspektów frameworka, które bardzo szybko wychodzą na jaw, gdy chcesz zrobić coś trochę inaczej.
Dlatego, żeby móc powiedzieć, że Spring jest prosty musisz:
- mieć kilka lat doświadczenia w tworzeniu realnych biznesowych aplikacji o większej złożoności niż pet clinic,
- rozumieć jego przypadki użycia i kiedy go nie używać,
- rozumieć koncepty leżące u jego podstaw.
Bez tych elementów, zupełnie szczerze, Spring nie jest prosty. Zwłaszcza, gdy osoba chce wyjść poza pet clinic i spotkać się z rzeczywistymi przypadkami biznesowymi.
Mit 3. Spring jest dobry na wszystko
Nie odkryjemy Ameryki stwierdzeniem, że nie ma rzeczy dobrych na wszystko. Podobnie jest ze Spring Framework. Jest to świetny szkielet. Ale nie w każdym przypadku.
Dlaczego o tym piszę? Bo bardzo często do rozwiązania jest jakiś mały problem. Wykorzystanie Springa z całym bagażem jego zależności jest po prostu czasem mocno przesadzone.
Dlatego warto stosować odpowiednie narzędzia do odpowiednich sytuacji.
Mit 4. Spring to gwarancja pracy
Przez kilka lat ukuł się pogląd, że gdy znasz Springa to nie ma problemu z pracą. Moim zdaniem to jest efekt sytuacji złego „czucia” rynku.
O co mi w tym miejscu chodzi? Spring jest przede wszystkim narzędziem informatycznym. Jak każde narzędzie służy do rozwiązywania jakiegoś problemu.
Śrubokręt służy do wkręcania lub wykręcania, samochód do poruszania się między lokalizacjami. Spring służy do rozwiązywania pewnych problemów biznesowych w IT. Przykładem jest tworzenie mikrousług operujących na danych kawałkach domeny naszej organizacji.
Skoro więc Spring jest narzędziem, to znaczy, że pracodawcy poszukują osób z umiejętnościami rozwiązywania pewnej klasy problemów. I Spring te problemy umie efektywnie rozwiązywać.
Akurat w tej chwili Spring cieszy się wysokim zainteresowaniem, ale … wysoki popyt oznacza też zwiększającą się podaż. I ta podaż programistów znających Springa jest bardzo wysoka. Jest to szczególnie widoczne na grupach, gdzie początkujący programiści żalą się na to, że procesy rekrutacyjne ciągną się miesiącami.
Dlatego, pamiętaj. Gdy pojawi się lepsze narzędzie, a z pewnością się pojawi, wówczas trend zostanie przeniesiony w inne miejsce. Warto mieć tego świadomość i nie nastawiać się, że jak dziś zacznie się uczyć Springa, to za 5 lat będzie się miało super pracę dzięki temu.
Mit 5. Spring ma świetną dokumentację
Moim zdaniem Spring ma świetną dokumentację … tam gdzie ma dokumentację 😊 I zupełnie szczerze, moim zdaniem jest to super dokumentacja podstawowych mechanizmów tego szkieletu.
Jednak tam, gdzie zaczyna się złożoność, pojawiają się też problemy. Konwencje, do których przyzwyczaja np. Spring Boot, są dobre w konkretnych przypadkach. Poza nimi … musisz rozumieć różne mechanizmy w nim zachodzące. Te mechanizmy dotyczą m. in. przepływu danych, wzorców projektowych wykorzystanych w szkielecie, etc.
Czyli, innymi słowy, Spring ma świetną dokumentację na pewnym poziomie. I jest to całkowicie zrozumiałe. Bo szkielet ma przede wszystkim spełniać szereg ogólnych założeń. I nie byłby tak popularny, gdyby zawierał szczegółowe rozwiązania wybranych aspektów np. bezpieczeństwa.
Musisz jednak pamiętać, że gdy przekroczysz pewien próg, zaczyna się miejsce, gdzie to Ty będziesz rozwiązywał dane problem na podstawie swojej wiedzy, doświadczeń i co bardzo prawdopodobne stackoverflow.com 😊
Podsumowanie
Mam nadzieję, że mój artykuł nie burzy totalnie Twojego poglądu na Springa. Chciałem tu tylko pokazać inny punkt widzenia na „złote rady” jego dotyczące, które mogą zmylić osoby początkujące.
Nie zmienia to jednak faktu, że Spring jest w świecie Javy najbardziej dopracowanym i elastycznym narzędziem. Zwłaszcza
W każdym razie podsumujmy tych kilka zagadnień:
- Nie ucz się jednocześnie Javy i Springa. Skoncentruj się na nauce języka, na szkielety przyjdzie pora trochę później.
- Spring nie jest prosty. Wyjście poza ramy konwencji w nim utrzymanych może być bardzo bolesne i czasochłonne.
- Jako narzędzie, Spring nie nadaje się do każdego problemu. Warto o tym wiedzieć i to pamiętać.
- Spring nie jest też gwarancją pracy. Jest wielu programistów, którzy znają Springa na pewnym poziomie. A popyt na nich jest skończony. Warto patrzeć w przyszłość.
- Dokumentacja Springa jest (zwykle) świetna. Jednak nie zawiera scenariuszy złożonych, na które prędzej czy później trafisz w pracy nad większymi projektami. Ale kto szuka nie błądzi …
Dotarłaś lub dotarłeś do tego miejsca. Super! Przeczytaj też jeden z ostatnich artykułów, który niesamowicie szybko zyskał popularność: 🎯 7 rzeczy, które sprawią, że jako programista będziesz niezastąpiony
BTW Będę też wdzięczny za każdy komentarz, bo jestem ciekawy Twojej opinii w tym temacie!
Dzięki w końcu ktoś mi to jasno wytłumaczył. Nie pchać się w starą technologię, tylko zacząć od nowości.
Ze Springiem jest trochę tak, że obecnie jest za duży, żeby był innowacyjny. Niektóre jego moduły cały czas idą do przodu, ale jego „masa” jest na tyle duża, że pewne ograniczenia ciężko już ominąć. Nie zmienia to jednak faktu, że jest to hiperpopularny szkielet oprogramowania.
Wszystko jest proste i oczywiste, ale dopiero powtórzone za (n) razem 🙂