Programistyczny poliglota
Powiedz początkującemu programiście, że potrafisz coś większego niż „Hello world” napisać w 4 różnych językach programowania, a uzna Cię za boga i nie ogarnie jak można tyle wiedzieć ewentualnie stwierdza, że tylko niepotrzebnie marnujesz czas zamiast skillować jedną technologię. Powiedz to samo doświadczonemu programiście, a zapyta „czemu tylko w czterech?”.
Kiedy zaczynamy swoją przygodę z programowaniem zazwyczaj cieszymy się z każdego nowo poznanego elementu języka („pętle?! Wow, czyli jednak nie muszę kopiować tego kodu 1000 razy!”). Wtedy nawet poznanie podstaw jednego języka programowania jest dla nas wyzwaniem, czymś co najpierw wydaje się wręcz niemożliwe, a chwilę później co najmniej trudne. Kiedy w końcu jednak uda się opanować te podstawy ludzka ciekawość namawia żeby wejść głębiej („Ooo, a co to za ciekawa biblioteka open-source napisana w języku, którego akurat się uczę?”). Zaczynamy odkrywać coraz ciekawsze elementy języka, czasami ułatwiające pracę, czasami dające większe możliwości. Wtedy w głowie pojawia się myśl „Tak, to ten język! Na 100% chcę w nim pracować przez najbliższe 80 lat (kto wie jaki wiek emerytalny dadzą), na pewno można w nim zrobić wszystko!”. I ta myśl trwa przez jakiś dłuższy lub krótszy czas.
Jednak np. będąc na studiach jesteśmy niejako zmuszani do poznania kilku składni, więc nawet jeśli jednym z używanych tam języków będzie ten nasz jeden jedyny to i tak będziemy musieli zmusić się do nauki jeszcze innego żeby móc zaliczać przedmioty. Na początku sporo osób, co sam widzę, buntuje się, że po co na uczelni najpierw robią np. C/C++ potem jeszcze Javę, a po drodze jeszcze dają możliwość nauczenia się C#. Uważają, że uczelnia powinna skupić się na jednym tak żeby przez 5 lat klepać zadania np. tylko w Javie. Bez sensu. Po pierwsze różne technologie stworzone są do różnych zadań, przecież nie uczymy się tylko algorytmów żeby pisać w samym C++, a kto wyobraża sobie pisać teraz aplikację webową w tym języku? Po drugie studenckie zadania i projekty tak na prawdę rzadko są na tyle skomplikowane, żeby dawały możliwość wykorzystania zaawansowanych struktur językowych. Dlatego korzystanie przez 5 lat jednego języka nie spowodowałoby, że stalibyśmy się w nim ekspertami, byłby to czas zmarnowany.
Właśnie, wspomniałem o tym, że różne języki są stworzone do różnych celów. Dlatego też postrzeganie nauki kilku języków programowania zmienia się kiedy musisz wykonywać różnego aplikacje. Dopóki siedzisz w jednej dziedzinie, w jednym typie programów nie widzisz aż tak dużej potrzeby nauki innych narzędzi. Jednak kiedy zaczynasz przeskakiwać między różnymi dziedzinami, próbować tworzenia różnego rodzaju programów naturalnie zaczynasz zmieniać języki. I wtedy nagle okazuje się, że twoje zdziwienie koniecznością lub chęcią nauki nowych składni znika. Zaczynasz rozumieć, że ciężko trzymać się tylko jednego języka. Poza tym nowe języki poszerzają Ci wachlarz narzędzi, które możesz wykorzystać. Nawet jeśli nie jako główne narzędzia to np. jako wspomagacze przyspieszające pracę.
Kolejna sprawa to możliwość spojrzenia na zadania z innej strony. Znając kilka składni widzisz różne możliwości rozwiązania postawionego przez Tobą problemu.
Jeśli pracujesz to być może dobrym argumentem dla Ciebie będzie to, że znajomość dodatkowych języków, np. skryptowych, pozwoli Ci przyspieszyć niektóre zadania, przez co, w uproszczeniu, będziesz dostawał na konto tyle samo za mniejszy wysiłek. A „legitymując się” znajomością przynajmniej podstaw innych technologii niż te, na które aplikujesz przy zmianie pracy jesteś postrzegany przez przyszłego pracodawcę jako osoba wartościowsza, bo w razie potrzeby będzie mógł najpierw Ciebie zapytać czy pomógłbyś w innym projekcie (nie będę się rozwodził na jakich warunkach itd.) zamiast od razu zatrudniać kolejną osobę więc miałbyś możliwość wykazania się i dalszego rozwoju, poza tym skoro nauczyłeś się tego wszystkiego to pokazujesz, że nie jesteś leniem i nie liczysz tylko na ciepłą posadkę, w której korzystał byś tylko z tego co już znasz.
Ostatni argument za byciem programistycznym poliglotą jest taki, że jeśli stale się uczysz kolejnych języków to nie wpadasz w rutynę, nauka od podstaw czegoś nowego zawsze zmusza do pewnego wysiłku w przeciwieństwie do klepania w kółko podobnego kodu. Dzięki temu masz szansę dłużej czerpać satysfakcję z programowania i odłożyć w czasie efekt wypalenia. A ponieważ znając jeden język nauka kolejnego przychodzi szybciej dlatego możesz też szybko zacząć wykorzystywać nowe umiejętności w praktyce.
Podsumowując, polecam uczyć się co jakiś czas nowego języka programowania dzięki czemu będziesz cały czas atrakcyjny dla pracodawcy, ułatwisz sobie pracę, poszerzysz horyzonty myślowe i zapobiegniesz rutynie.
Leave a Comment