Three.js czy React jako projekt do portfolio?

Three.js to cool biblioteka, można w niej robić grafikę 3D. Lans na całego. Ale React to też lans, bo jakieś tam SPA, czy coś tam można robić, takiego bardziej "profesjonalnego", więc też warto pokazać znajomość Reacta, prawda?

Cóż, miałem niedawno rozmowę o pracę, w której poproszono mnie o stworzenie projektu od zera w Three.js i wyświetlenie czegoś na ekranie. Proste prawda? Niby tak, ale i tak co chwila coś się nie chciało wyświetlić (wiadomo jak to jest z Three.js. Zapomnisz o czymś, np. o dodaniu światła i masz czarny ekran).

I tak przez około godzinę. Czułem, że wypadam bardzo źle. No ale na codzień nie piszę projektów od zera, tylko wykorzystuję już istniejący kod. Jednak rozmowy o pracę to dość specyficzna sytuacja, gdzie robi się rzeczy odrealnione od tego, co się naprawdę robi i w sytuacji sztucznych ograniczeń. Więc przypuszczam, że wypadłem źle. Przypuszczam, bo nie dostałem jeszcze odpowiedzi. Kto wie, może akurat się mylę i dobrze wypadłem? :)

edit: Akurat wtedy dostałem odpowiedź odmowną, ale dość absurdalne to było - widocznie uznano, że jeśli zapomniałem kolejności argumentów do jakiejś funkcji, to się nie nadaję, nie mam doświadczenia czy co tam jeszcze xD BTW ciekawe gdzie oni znajdą kogoś ze znajomością niszowej technologii ;) no chyba, że czegoś nie wiem i Three.js teraz umie każdy.

Tak czy siak, programistów Three.js powinno się oceniać po poprzednich projektach, portfolio, a nie po tym, czy pamiętają, jak się wyświetla coś konkretnego na ekranie. Bo przecież można zapomnieć, a to nie znaczy, że się jest gorszym programistą. Ważniejsze jest ogólne doświadczenie z konceptami 3D, żeby wiedzieć, co to wierzchołki, wektory, materiały, a nie żeby na pamięć wszystko wystukać z klawiatury.

Z drugiej strony gdyby to była rozmowa na temat React to takie podejście "czy umiesz coś zrobić z palca?" miałoby więcej sensu. React się tak szybko zmienia, że jest sens sprawdzić, czy ktoś jest na bieżąco, czy zna hooki i najnowsze "dobre praktyki" (bo "dobre praktyki" w React się zmieniają co kilka miesięcy...) i czy umie szybko zrobić taska. Bo nie oszukujmy się - o ile w Three.js się jeszcze jakoś myśli, to praca w React to po prostu klepanie tasków. Three.js jest trudniejsze, wymaga myślenia. React wymaga głównie umiejętności szybkiego klepania komponentów, więc trzeba sprawdzić, czy ktoś umie szybko zaklepać komponent.

Jednak suche komponenty w React nie są zbyt "cool", w Three.js jednak łatwiej zrobić coś do portfolio, co wzbudzi zainteresowanie i co faktycznie może posłużyć jako dowód umiejętności, tego, że umiesz robić coś w 3D. Poza tym dobre/pomysłowe portfolio w 3D ma potencjał wirusowy. Np. jakiś czas temu ktoś zrobił portfolio, w którym się jeździło samochodem i wszyscy to szerowali. Każdy podziwiał.

Grafika 3D ma tak wielki cool factor, to niektórzy nawet nie zajmując się tym na co dzień, uczą się Three.js tylko po to, żeby dodać efekty 3D na swoje portfolio (co nie zawsze jest dobrym pomysłem i nie zawsze jest dobrze zrealizowane - łatwo przesadzić i zrobić coś ładnego, co będzie zamulać - mam czasem wrażenie, że ludzie, którzy piszą tego typu rzeczy, mają nastawienie "u mnie działa i mam 60FPS, bo mam super maszynę, ale co mnie obchodzi to, że ktoś będzie to odpalał z wolniejszego urządzenia i będzie miał 5 FPS? Tylko ja się liczę i to, że umiem robić ładne efekty". Nie idźcie tą drogą).

Poza tym jak ktoś aplikuje na pozycje kompletnie niezwiązane z 3D, to po co mu efekty 3D? Co ci z tego przyjdzie, że będziesz mieć w portfolio kręcącego się trójwymiarowego pączka? Ktoś cię o to prosił? To może być na minus nawet, bo może sprawić, że zostaniemy zaszufladkowani jako ludzie, którzy bawią się grafiką i animacjami, a nie jako poważni web-developerzy, co będą sprawnie w Reakcie klepać formatki i siermiężne w Reduksie pisać reducery, bo na tym się robi kapitał w te dni.

React jest więc poważniejszą technologią, jeśli chodzi o lans w korpoświecie. Jednak jest gorszą technologią, jeśli chodzi o prezentowanie tego w portfolio. Bo co trzeba by było zrobić w React, żeby mieć projekt potwierdzający umiejętności? Raczej nie jakiś prosty projekt, bo projekcik w React każdy może walnąć z tutoriala i nikomu to nie zaimponuje. Prędzej należałoby stworzyć rozbudowane SPA, które robi coś konkretnego i jest używane przez wielu ludzi, najlepiej przez płacących klientów, żeby nosiło to znamiona doświadczenia komercyjnego. A komercyjne doświadczenie to standard, bez niego nie masz nawet szansy na pierwszą pracę xD

Poprzeczka w React jest wysoko ustawiona. Może dlatego, że pisanie w React jest od strony technicznej dość... łatwe. Trudniejsze jest utrzymanie projektów, pisanie czegoś o dobrej architekturze, sprawne dopisywanie nowych funkcji do istniejącego kodu, migracje między kolejnymi wersjami Reacta. Czyli to wszystko, co przejawia się w większych i dłużej utrzymywanych aplikacjach, a czego nie pokażesz w swoim zrobionym na szybko portfolio. Dlatego pracodawcy wymagają, że będziesz już mieć za sobą jakieś solidne doświadczenie komercyjne w pierwszej pracy jako React Developer xD

Dlatego pisanie apek w React do portfolio nie ma większego sensu, chyba, że masz jakiś plan monetyzacji takiej apki (tylko wtedy już będzie to już startup) albo grasz długofalowo i np. chcesz zostać popularnym kontrybutorem open source albo kimś takim i z tej pozycji uderzać do firm (np. Dan Abramov zrobił Reduksa, który stał się megapopularnym dodatkiem do Reacta, i potem ta popularność mu się zwróciła i został zatrudniony przez Facebooka. Zresztą to nie jedyny podobny przypadek. No ale nie działa to z automatu. Trzeba sobie wyrobić nazwisko najpierw (albo rozpoznawalny pseudonim)).

Podsumując - Three.js jest bardziej cool technologią do portfolio, ale łatwo przesadzić albo wywołać mylne wrażenie, że tylko na 3D się znasz, skoro masz to w portfolio. Z drugiej strony React jest słabą technologią do portfolio, ale bardziej poszukiwaną na rynku pracy. O ile jesteś na bieżąco oraz umiesz na sygnał zakodzić szybciutko każdą głupotę, którą dostaniesz na zadaniu domowym w rekrutacji. Jak lubisz być klepaczem, to React jest odpowiedni dla ciebie :)

Komentarze

Popularne posty z tego bloga

Ściemy z ogłoszeń o pracę

Zostać programistą (2) - czy się nadajesz?

Czego się nauczyłem w 2021?