logo

Dlaczego znam Javę i Angulara, mimo że kodzę w Node i Reakcie

Długość wpisu: 5 min

Robiliśmy kiedyś jednorazowy meetup o nazwie Angular vs React.

Występowałem z ramienia #teamreact, a znajomy Rafał Brzoska z ramienia #teamangular. Rafał to świetny ekspert od Angulara, który robi fajne prezki ze Smerfami w roli głównej.

Wymyśliliśmy, że pierwsza prelekcja może opowiadać o różnicach między dwoma frameworkami/libkami, o ich wadach i zaletach.

Byłoby to zbyt oczywiste i nudne, gdybym ja opowiadał o Reakcie, a Rafał o Angularze. Dlatego zrobiliśmy na odwrót i ja opowiadałem o mocnych stronach Angulara, a on o mocnych stronach Reacta.

Z Angularem łączy mnie dość specyficzna, ale nieskomplikowana relacja. Polega na tym, że:

  1. Nie rozmawiamy ze sobą od lat.
  2. Sąd orzekł między nami zakaz zbliżania się.

Mimo tego nie było mi trudno znaleźć kilka dobrych zalet Angulara (zwłaszcza po tym, jak wyrzucili “JS” z nazwy) i pokazanie go w dobrym świetle.

Myślę, że zrobiliśmy coś ciekawego, nieszablonowego i znacznie bardziej wartościowego niż przepychanie się o to, co jest lepsze, a co gorsze.

Nigdy nie interesowały mnie wojenki na temat technologii, które czasem wybuchają w necie. Kiedyś było to Java vs C#, potem Angular vs React, React vs Vue, ostatnio słyszałem śmieszki o RoR i Laravelu. Powoli robi się to nudne.

Gdy miałem 5 lat i byłem w przedszkolu, to twierdziłem, że Żółwie Ninja są lepsze od Spider-Mana. Gdy raz kolega bawił się Żółwiem Ninja, a ja Spider-Manem i gdy nie chciał się wymienić, mimo że prosiłem, to walnąłem mu zabawką w łeb i zabrałem mu Żółwia siłą.

Żółw jeździł na motorze, więc był podwójnie fajny.

Z tego powodu wywalili mnie dość szybko do zerówki, czyli klasę wyżej i musiałem się zadawać z dzieciakami starszymi ode mnie, których w ogóle nie lubiłem. Oni mnie też nie.

A teraz, po latach, uważam, że to jednak Spider-Man jest lepszy 🤷‍♂️.

Wojny o libki i frameworki, których używamy, mają dokładnie tyle samo sensu, co moja “walka” o Żółwia Ninja.

Wszystko jest remixem

Każda technologia to w jakimś stopniu remix czegoś, co powstało wcześniej. Wszystkie wspomniane powyżej narzędzia są przydatne dlatego, że opierają się na doświadczeniach z narzędziami, których używało się wcześniej.

Występuje między nimi synergia, która napędza rozwój. Najpierw C# pożyczył trochę rzeczy z Javy, a potem Java z C#. Najpierw Angular pożyczył od Reacta komponenty, a potem React od Angulara… też coś pewnie :). A Vue to remix jednego i drugiego.

Sam nie zobaczyłbym mega korzyści płynących z Reacta i podziału na komponenty, gdybym wcześniej nie poczuł, że angularowy two-way-binding, to nie jest rozwiązanie wszystkich problemów tego świata.

Dlatego, nawet jeśli czegoś nie lubię używać, to staram się mieć otwarty umysł, bo zawsze jest coś, czego mogę się nauczyć. Nawet jeśli jest to nauka na błędach.

Fachowcy z innych społeczności

Programista, który chce dołączyć do grona najlepszych w tym fachu, może sobie mocno ułatwić życie, obserwując najlepszych programistów.

Jednak zamykając się w bańce jednej technologii, możemy nigdy na nich nie trafić.

Ja najwięcej nauczyłem się od dinozaurów programowania, którzy w swoich książkach stosowali przykłady z Javy i od .NETowców, którzy prowadzą świetne blogi.

Trafiali się Rubjowcy i PHPowcy. (w Ruby nigdy nie kodziłem)

Uwielbiam The Zen of Python. (w Pythonie też nie)

Teraz uczę się najwięcej od hipsterów JSa, ale dzięki poprzednim doświadczeniom widzę jak mocno remixują oni starszych i bardziej doświadczonych kolegów. Czasem świadomie, a czasem mniej.

Bujanie się po różnych środowiskach bardzo mocno poszerza światopogląd, pozwala szybciej trafić na uniwersalne dobre praktyki i uświadamia, że tak naprawdę każdy ma te same problemy.

Dlatego warto obserwować tego ziomka, który kodzi w Javie, bo z pewnością trafimy na wiele rzeczy, które aplikują się do JavaScriptu.

Java vs JavaScript

Poznaj Javę

Programiści Javy mają ten punkt z głowy, ludzie od C# pewnie też. Jednak tak naprawdę przez “poznaj Javę” mam na myśli “wyjdź ze swojej bańki, poznaj inne punkty widzenia”.

Najlepsi programiści jakich znam, nie mają żadnych problemów, żeby skakać między technologiami. Mają swoje preferencje, ale patrzą na programowanie całościowo. Są po prostu “programistami”, a nie “JS/C#/Python programistami”. Dobrych praktyk i rozwiązań szukają wszędzie.

Sam stosuję takie podejście i widzę, że mocno wzbogaca moje umiejętności, sposób patrzenia na kod i ogólnie na proces wytwarzania oprogramowania.

W pewnym momencie sam zacząłem tworzyć remixy i robić połączenia, których nie widziałem nigdzie indziej, a w moim kodzie zaczęły pojawiać się pozytywne naleciałości z innych baniek.

Przykład:

Pracując w JSie, nadal stosuję tę samą wiedzę o pisaniu testów jednostkowych, odwracaniu zależności i mockowaniu, której nauczyłem się z Javy i C#. To dlatego, że w JSie praktycznie każdy zachęca do mało praktycznych sposobów mockowania, które powodują, że kod jest brzydki i mniej odporny na zmiany.

Wielu programistów JSa nawet nie wie, że można inaczej i najprawdopodobniej sam bym tego nie wiedział, gdybym żył tylko w bańce JSowej.

Muszę dodać, że trzeba tutaj uważać. Nie każdy pomysł z innej technologii będzie kompatybilny z tą, której teraz używasz. Wielu o tym zapomina i tworzy przekombinowane rozwiązania, które pożyczyli z innej technologii i wciskają na siłę do tej, której używają obecnie.

Mam tutaj jedną zasadę, która ułatwia mi proces myślenia.

Zastanawiam się, jak dobra praktyka z technologii X wpasowuje się w filozofię Y, której używam obecnie.

Chodzi o to, żeby dopasować dobre praktyki z innych technologii do tego, czego używamy teraz, zamiast dopasowywać tego, czego używam teraz, do praktyk z innych technologii.

Generyczna definicja jest zawiła, więc podaję przykład:

Zastanawiam się, jak dobra praktyka stosowana w językach obiektowych wpasowuje się do Reacta, a nie jak mogę pozmieniać kod w Reakcie, żeby był bardziej zgodny z dobrymi praktykami z języków obiektowych.

Brzmi to jak drobna zmiana, a tak naprawdę jest olbrzymia.

No i nigdy nie widziałem, żeby ten drugi sposób działał.

Kiedy zacząć skakać do innych baniek?

Myślę, że w momencie, kiedy już poznasz swój pierwszy język/technologię na tyle, że będziesz swobodnie się nim posługiwał, to warto zacząć skakać po innych językach/technologiach.

Małymi kroczkami.

Trzeba pamiętać, że bańki mają też swoją zaletę - mocno zawężają nam listę tematów do ogarnięcia, pozwalają się skupić i dzięki temu szybciej zaczniemy dowozić wartość.

Zbyt wczesne, nadmierne skakanie między różnymi tematami, językami, technologiami powoduje, że będziemy we wszystkim przeciętni.

O skakaniu między bańkami, priorytetyzowaniu i tworzeniu swojej własnej roadmapy rozwoju jeszcze napiszę, bo to jest grubszy temat.

Podsumowując:

  • wojny na technologie nie mają sensu, bo wszystko jest remixem
  • w innych językach i technologiach można wiele podpatrzyć
  • a tym bardziej w innych community, bo każde ma swoich fachowców
  • dla dobrych programistów technologia to sprawa drugorzędna
  • uważaj z dopasowywaniem dobrych praktyk

Daj znać, jakie jest Twoje zdanie na temat tego, kiedy i jak dużo czerpać z innych bańek. Przynosi Ci to wartość? Podziel się komentarzem 👇.

Do następnego, elo 🖖.

Podziel się:

Instagram, Twitter, YouTube, Facebook, LinkedIn