Cześć.
Ten artykuł miał powstać już jakiś czas temu, ale różne zbiegi okoliczności sprawiły, że dopiero teraz pojawia się na blogu. Może dlatego, że historia którą opowiem ma już kilka lat i zebranie jej w głowie zmuszało mnie do niemałej retrospekcji… A może po prostu potrzebowałem artykułów mniej felietonowych. Tak czy siak, mamy to!
Skończyłem Politechnikę Łódzką na wydziale Elektrotechniki, Elektroniki, Informatyki i Automatyki, gdzie Java była głównym językiem, którego próbowali nas nauczyć wykładowcy. Patrząc wstecz nie mogę wiele zarzucić poziomowi wykładów i ćwiczeń, dziś oceniłbym go na taki „zaawansowany junior”. Myślę, że jest to poziom umiejętności, którego można się spodziewać po studencie i myślę, że jest on kompromisem pomiędzy dobrą znajomością składni języka, a małą liczbą złych nawyków. Oczywiście wtedy królowała Java w wersji 7 i nijak ma się ona do tego co Java prezentuje teraz. To były jeszcze czasy kiedy Sprint w większości opierał się na XMLu, Bootstrap był super nowością, a na froncie nadal można było spotkać jQuery (chociaż całkiem głośno się mówiło, że to passe). Istniał już ExtJS i powstawały na nim apki. Popularność zyskiwały takie rozwiązania jak Vaadin czy Google Web Toolkit. Jest to mniej więcej rok 2013.
Wtedy właśnie dostałem się na praktyki, gdzie, jak można się domyśleć, pisałem w Javie. Tworzyliśmy narzędzie trochę podobne do Jiry. Po praktykach poszedłem już do pracy (na część etatu) i tam również programowałem w Javie, tym razem był to Spring.
Myślę, że bycie pilnym studentem i 1,5 roku komercyjnego doświadczenia zrobiły ze mnie wtedy początkującego regulara z całkiem fajnymi perspektywami na przyszłość. Co się stało więc, że nie skorzystałem z tej obietnicy?
Nim przejdę do dalszej części historii, doprecyzuję czym jest dla mnie „język wiodący”. Pod tym terminem rozumiem główny język w którym się specjalizujesz lub po który najczęściej sięgasz. Oczywiście nie jest on jedynym jakiego używasz. Bardzo rzadko zdarza się, by programista używał tylko jednego języka, ale zazwyczaj w jednym, wybranym, pisze najczęściej. I właśnie to jest język wiodący.
Byłem już programistą Javy z ponad rocznym doświadczeniem komercyjnym. Pewnego pięknego (chyba letniego) dnia odwiedził mnie kolega. Wtedy jeszcze wynajmowałem jeden z trzech pokoi w mieszkaniu zaaranżowanym w stylu „błagam, wyremontuj mnie”. Nie zrozum mnie źle, było schludne i przestronne, a co najważniejsze bardzo dobrze je wspominam, a to że wymagało remontu… No cóż, na takie było mnie wówczas stać. Właśnie w tym momencie życia kolega (nieco lepiej zarabiający) zaproponował przejście do firmy, w której pracował. Szukali tam ludzi, ale pisali w Pythonie.
Najpierw odmówiłem, ale wraz z upływem czasu sceptycyzm ustępował ciekawości. Owa ciekawość sprawiła, że zacząłem przeglądać tutoriale uczące jak pisać w Pythonie. Bardzo podobała mi się prostota tego języka. Stała ona w ogromnej sprzeczności ze stylem Javy, gdzie klasy nazywają się np. AbstractAnnotationConfigDispatcherServletInitializer. Nie wymyśliłem tej nazwy, ona istnieje (lub istniała) w Springu.
W końcu zmieniłem pracę i zacząłem pisać w Pythonie. Nie miałem wiele do stracenia – ryzyko mniejszych zarobków nie przerażało, na wynajęcie pokoju w przeciętnym mieszkaniu i tak byłoby mnie stać.
Pisałem kod w Javie, ale ze składnią Python’ową. Inaczej mówiąc – tworzyłem potworki, które bardziej przypominały Javę niż Python’a. Dużym ułatwieniem dla mnie był fakt, że moje nawyki były regularnie temperowane podczas code review. Pamiętam, że pierwsza klasa, jaką stworzyłem w Pythonie wcale nie miała dużo mniej znaków, niż przytoczony przeze mnie wyżej przykład. Chwilę potrwało nim przyzwyczaiłem się do innej konwencji nazw zmiennych (camelCase vs snake_case). Największym problemem było oczywiście poznanie ekosystemu nowego języka i tego jak powinno się w nim rozwiązywać problemy. Jednym słowem z „początkującego regulara” spadłem na pełnoprawnego juniora.
Oczywiście doświadczenie wyniesione z Javy nie było bezużyteczne. Podejście do tworzenia rozwiązań i cały ten programistyczny mindset jest nadal taki sam. Czy było warto? Na tamte lata tak. Teraz największą przeszkodą byłyby pewnie pieniądze, bo musiałbym się liczyć z mniejszą fakturą, przynajmniej na początku. Ale wiem też, że przejście na inny język umiałbym teraz zrobić lepiej, mam znacznie szersze horyzonty i o całe tony więcej doświadczenia. Sprawia to, że jeśli będzie trzeba pisać w czymś innym niż Python/JS/PHP/SQL – bez większych problemów dam radę.
Jeśli rozmyślasz nad zmianą swojego języka wiodącego to przemyśl czy nie przeszkadza Ci prawdopodobnie mniejsza faktura i pewien okres w którym będziesz potykał się o podstawy. Jeśli nie masz z tym problemu, to myślę że warto. Zmiana technologii ogromnie poszerza horyzonty. Ja sam nie mogę zapewnić, że do końca swoich dni będę wierny Python’owi. Ale sądzę, że w tamtym czasie dzięki zmianie języka dużo szybciej wynajmowany pokój zmieniłem na własne mieszkanie.
Oj daaawnoo mnie tu nie było. Ale wakacje to był czas dużej liczby intensywnych wyjazdów i tak naprawdę, dopiero jakoś… Read More
Cześć! Zapraszam na krótkie podsumowanie kwietnia. Wyjazd do Niemiec A dokładniej pod granicę z Francją. Chrześnica miała pierwszą komunię. Po… Read More
Ostatnio tygodnie były tak bardzo wypełnione, że nie udało mi się napisać nawet krótkiego podsumowanie. Więc dziś zbiorczo podsumuję luty… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W styczniu przeczytałem "Homo Deus: Historia jutra". Książka łudząco podoba do wcześniejszej książki tego… Read More
Cześć! Zapraszam na podsumowanie roku 2023. Książki Zacznijmy od książek. W tym roku cel 35 książek nie został osiągnięty. Niemniej… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W grudniu skończyłem czytać Mein Kampf. Nudna książka. Ciekawsze fragmenty można by było streścić… Read More
Pokaż komentarze
Jak lubisz programować w coraz prostszych językach za coraz mniejsze pieniądze to polecam PowerBuildera. Tylko zauważ, że łatwo jest się przesiąść z języka trudniejszego na prostszy, a dużo trudniej w drugą stronę. Wiem bo to przerabiałem.