Firma nie daje mi wyboru
„Słyszałem, że Python jest obecnie popularny. Czy my też powinniśmy używać Pythona?” Czy nowy programista może powiedzieć coś takiego w firmie? To niemożliwe.
Przed znalezieniem pracy mogłem wybrać język, którego będę używał. Do testu kodowania użyłem Pythona, ponieważ był korzystny, a do tworzenia stron internetowych zagłębiłem się w Javę, ponieważ słyszałem, że Java jest dobra w zdobywaniu pracy. Jednak rzeczywistość małych zespołów, które weszły na rynek pracy, była inna.
Wybrano już stos technologii firmy. Starszy kod działał w Javie (Spring Boot), ekrany były rysowane w JavaScript (Vue.js) i nagle skończyły mi się prace konserwacyjne aplikacji na Androida i musiałem radzić sobie z XML i inną Javą.
Nigdy nie wybierałem. Po prostu środowisko (framework) narzuciło mi ten język. Na początku bałam się, że zostanę zbombardowana tym nieznanym językiem i gramatyką. Jednak czytając i pisząc kod losowo, zdałem sobie sprawę z jednej ważnej rzeczy.
„Hę? To jest ta sama koncepcja Java, którą studiowałeś wcześniej?”

Gramatyka może być inna, ale istota jest ta sama (przeniesienie koncepcji)
W czasach szkolnych uczyłem się lekko języka C i dość głęboko zagłębiałem się w Javę. Potem, gdy nastał sezon przygotowań do pracy, usłyszałem w społeczności, że „Python to zły facet, jeśli chodzi o testy kodowania”, więc po raz pierwszy otworzyłem książkę o Pythonie.
Gramatyka była dla mnie na początku nieznana, ale, co zaskakujące, udało mi się przyzwyczaić do niej w ciągu zaledwie kilku dni. Nie dlatego, że Python był łatwy. Dzieje się tak dlatego, że znałem już „istotę programowania” w Javie.
To, co zrobiłem, nie polegało na nauczeniu się nowego języka od zera. Zadanie polegało na nałożeniu w mojej głowie „nazwy miejsca zwanego Python” na „Mapę zwaną Javą”. W kontekście edukacyjnym nazywa się to „transferem wiedzy”. Im głębiej zagłębisz się w jeden język, tym szybciej zrozumiesz inne języki.
UI to ostatecznie struktura drzewiasta
To doświadczenie zabłysnęło także w zupełnie innym obszarze. Kiedy byłem w szkole, korzystałem z HTML i CSS, aby odnowić szkolną stronę internetową i zarobić kieszonkowe. Wtedy nie myślałem, że pomoże to w mojej karierze programistycznej.
Jednak po dołączeniu do firmy nagle musiałem zmodyfikować interfejs użytkownika aplikacji na Androida. Do tworzenia interfejsu użytkownika Android używa języka znaczników zwanego XML. To był mój pierwszy raz, kiedy tworzyłem aplikację mobilną, więc byłem bardzo zdenerwowany, ale roześmiałem się, gdy spojrzałem na kod.
<!-- Android XML -->
<LinearLayout orientation="vertical">
<TextView text="Hello World" />
<Button text="Click Me" />
</LinearLayout>
<!-- HTML -->
<div style="display: flex; flex-direction: column;">
<span>Hello World</span>
<button>Click Me</button>
</div>
Tylko nazwa tagu była inna, ale struktura „wstawiania elementu podrzędnego do elementu nadrzędnego i kształtowania go za pomocą atrybutu” była dokładnie taka sama jak w formacie HTML. Ponieważ rozumiem strukturę drzewa DOM i model pudełkowy, mogłem szybko stworzyć własny układ Androida.

Framework, nie uczyli tego w szkole
Właściwie to, co zmyliło mnie bardziej niż język, to istnienie „ram”.
W szkole nauczano jedynie „podstawowych umiejętności fizycznych”, takich jak gramatyka języka C, struktury danych, algorytmy i teoria lingwistyki. Oczywiście nie oznacza to, że nie słyszałeś nazw „React” czy „Spring”. Po usłyszeniu od społeczności, że „React jest obecnie najlepszy”, poszedłem do księgarni i kupiłem książkę React.
Ale zamknąłem książkę, zanim przeczytałem nawet połowę. Ponieważ nie mogłem zrozumieć, dlaczego kod musiał zostać napisany w ten sposób. „Nie, możesz po prostu utworzyć funkcję i ją wywołać. Dlaczego muszę dziedziczyć Component i umieścić go w funkcji render? Dlaczego nie mam nad tym kontroli?”
Wtedy nie wiedziałem. Krytyczna różnica między „Biblioteką” a „Frameworkiem”.
Jeśli w szkole nauczyłeś się swobodnego młotkowania, ramy praktyczne przypominały ogromną fabrykę, która zmusiła cię do powiedzenia: „My zajmiemy się młotkowaniem, więc po prostu wbij gwóźdź w dziurę”. Ponieważ nie znałem pojęcia „Odwrócenie kontroli”, niezależnie od tego, jak długo czytałem tę książkę, wydawało mi się, że jest to obcy język.
Jeśli znasz język, możesz zobaczyć framework
Jednak wrzucono mnie w wir pracy praktycznej i zmusiłem się do korzystania z frameworka, natknąłem się na paradoksalną prawdę. Bez względu na to, jak skomplikowana jest magia Spring Boot, ostatecznie składa się ona z „kodu Java”.
Adnotacje takie jak@Autowired w magiczny sposób wprowadzają zależność, ale jeśli się im przyjrzeć, ostatecznie jest to zastosowanie technologii odbicia Java. Responsywny system Vue.js ostatecznie wykorzystuje także funkcje monitorowania obiektów i właściwości JavaScript.
’Jeśli język (podstawa) jest mocny, widoczne są zasady działania frameworku (aplikacji).’ Kiedy dołączyłem do firmy, od razu dołączyłem do firmy, nie wiedząc, jaka jest struktura MVC Springa, ale ponieważ rozumiałem Javę, udało mi się szybko dostosować, myśląc: „Och, zamiast tego framework uruchamia mój kod. Muszę tylko rzucać obiektami zgodnie z tymi regułami”.
Gdyby moje „podstawy JavaScriptu” były lepsze, kiedy czytałem książkę o React, byłbym w stanie zrozumieć, dlaczego React stał się taki.
[Wskazówka] Recepta dla uczniów z trudnościami w podejmowaniu decyzji
„Jakiego języka powinienem się uczyć?” To jedno z najczęściej zadawanych pytań w społeczności. Niezależnie od tego, czy jest to język, czy framework, niekoniecznie musisz przez całe życie zagłębiać się tylko w jedną rzecz. Jednak paradoksalnie, aby być dobrym w kilku rzeczach, najpierw trzeba jasno „sprzedać jedną rzecz”.
Jeśli jesteś studentem i masz problem ze znalezieniem kierunku studiów, zamknij książkę i od razu otwórz „stronę rekrutacyjną”.
„Ta firma używa Springa, a tamta firmy Node. Co powinienem zrobić?” To nie ma znaczenia. Cokolwiek to jest, trzeba się tego po prostu odpowiednio nauczyć. Jak już mówiłem, istotą programowania jest komunikacja. Osoby, które opanowały Springa, szybko się dostosowują, nawet jeśli po dołączeniu do firmy firma poprosi ich o korzystanie z Node.js. Jednak każdy, kto choć trochę tego spróbował, zakończy się wędrówką od nowa, niezależnie od tego, jakie ramy zostaną mu narzucone.
Kiedy będziesz miał czas na przemyślenie, wybierz jedną „umiejętność, której potrzebuje rynek (ogłoszenie o rekrutacji)” i kop głęboko. To najszybszy sposób.
[Weryfikacja kodu] Języki mogą się różnić, ale pamięć jest taka sama
Sprawdźmy za pomocą kodu, czy mimo różnych języków to, co dzieje się wewnątrz komputera, ostatecznie jest takie samo. ArrayList w Javie i list w Pythonie mają inną składnię, ale metoda zwiększania pamięci (tablica dynamiczna) jest taka sama.
Java:
// Java: gdy jest pelny, rozmiar zwieksza sie 1.5x i przenosi dane.
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
// Wewnetrznie: tworzenie tablicy -> dodawanie danych -> przy braku miejsca tworzenie wiekszej tablicy i kopiowanie
Python:
# Python: gdy jest pelny, rozmiar zwieksza sie ok. 1.125x + @ i przenosi dane.
my_list = []
my_list.append(1)
# Wewnetrzne dzialanie jest prawie identyczne jak w Javie (uzywa logiki realokacji tablic z C)
Bez względu na to, jakiego języka używamy, sposób działania cyfrowych centrów dystrybucji (komputerów) nie ulega zmianie. Dzieje się tak, ponieważ zasady korzystania z procesów roboczych (CPU) i pamięci masowej (pamięci) są uniwersalne.
Zakończenie: ciekawość zamiast strachu
Kiedy jesteś programistą, nieuchronnie nadejdzie moment, w którym będziesz musiał używać języków i frameworków, których nie chcesz. Czy za każdym razem będziesz uciekał, mówiąc: „Jestem programistą Java, więc nie lubię Pythona”?
Język to „narzędzie”, a nie religia. Framework to „warsztat” korzystania z narzędzi. Osoby, które mają głębokie doświadczenie w nauce języka (swojego języka ojczystego), szybko uczą się, jak korzystać z nowego narzędzia, nawet jeśli zostało im to dane.
Więc nie bój się, nawet jeśli Twoja firma zmusi Cię teraz do korzystania z nieznanego stosu technologii. Inna jest tylko skorupa, ale substancja w środku jest taka sama, jak to, co już znasz.
Teraz, gdy pozbyliśmy się strachu przed językiem, przejdźmy do następnego artykułu w głąb „Pamięci”, prawdziwego świata, w którym żyje kod. Gdy już wiesz, gdzie w pamięci RAM znajduje się napisany przez Ciebie kod i jak działa, bariera językowa będzie mniejsza.
1