Wiecznie niezdecydowany. Python -> Java -> (?) Python

0

Mam nadzieję, że nie zdublowałem analogicznego tematu.
Z góry uprzedzam, że nie proszę o wymyślenie ścieżki kariery, chciałbym tylko poznać opinie osób trzecich, bardziej doświadczonych zawodowo i życiowo :)

Wcześniej pracowałem kilka miesięcy w pythonie, w mało popularnym frameworku, po czym zrobiłem sobie pół roku przerwy(wakacji) przed znalezieniem nowego miejsca.
Obecnie jestem java developerem od poprzednich wakacji - spring, jee, w dodatku trochę frontendu. Tworzę nowe rzeczy, lecz zazwyczaj łatam bugi w istniejących systemach.
Dlaczego java? Łatwiej było mi znaleźć jakąkolwiek pracę w javie z zerowym doświadczeniem, niż w pythonie bez styczności z django.

Myślę nad zmianą pracy w najbliższym czasie, wracając do pythona. Po ponad roku wciąż nie czuję się komfortowo pisząc w javie, zauważalnie słabiej sobie radzę niż pozostali koledzy z zespołu.
Od niedawna postanowiłem wziąć się 'za siebie' i zacząć dokształcać się w domu, po pracy. Pisać jakieś swoje małe projekty, rozwiązywać trudniejsze problemy, np. nie bać się algorytmów. Założyć githuba i regularnie bawić się nie tylko w javie. Nie być koderem-klepaczem, zapchajdziurą w zespole.
Z początkiem września poświęciłem kilka popołudni na przypomnienie sobie pythona, wstępne zapoznanie i rozpoczęcie pisania aplikacji w Django. Czuję jakąś ulgę i złapałem zajawkę na nowo, przez co zacząłem ponownie myśleć nad pythonem. Do tego koledzy z poprzedniej pracy namawiają mnie do spróbowania sił w ich obecnych firmach i powiem szczerze, że miło by było pracować z tymi ludźmi.

Anyway, po szybkiej analizie zestawiłem sobie plusy i minusy obecnego języka w którym pracuje w stosunku do pythona(ale 'ogólne', nie czysto techniczne).

Java:

  • przeraża mnie to, co inni uważają za mocną stronę Javy - ogromna ilość bibliotek, frameworków, narzędzi, czyli ten ogrom wiedzy z którym się spotkamy prędzej czy później
  • słuchając znajomych z uczelni strzelam, że 90% projektów to utrzymanie starych systemów z wielomilionowymi liniami kodu.
  • po cyklicznym przeglądaniu ofert pracy i lektury tego forum, wnioskuję że trudno o pracę zdalną w javie, a na takiej by mi zależało, chociażby 2 dni w tygodniu.
  • ilość tutoriali, innych pomocnych materiałów, tematów na stackoverflow
  • multum ofert pracy, silna pozycja na rynku, zarówno polskim jak i zagranicznym
  • wyższe widełki płacowe

W Pythonie najbardziej podoba mi się mocne ukierunkowanie na Django w ofertach pracy, natomiast martwi mnie, że zazwyczaj ciężko wbić się bez doświadczenia komercyjnego w nim i w ogóle cechuje się niską popularnością w naszym kraju, w porównaniu do javy.

Trochę się rozpisałem i żeby było łatwiej to zapunktuje pytania:

  1. Dobrze kombinuję próbując spróbować takich nowych wyzwań czy raczej też mieliście takie fascynacje i uważacie że dobrze postąpiliście siedząc w obecnej technologii?
  2. Miał ktoś może przyjemność pracować kilka lat w obydwu językach i mógłby podzielić się swoimi doświadczeniami, krótkie wrażenia z projektów?
  3. Jak widzicie przyszłość pythona w stosunku do javy?
  4. Z zarobkami zapewne poszedłbym w dół, skoro obecnie mam prawie 5k netto na UoD(nieznacznie mniej dostałem na starcie)?
  5. Jak przyszły pracodawca będzie patrzył na moje CV, w wariantach:
    a) teraz startuje na pythonowca, b) po zmianie na pythona, przepracowanych X miesięcy nagle wywalają mnie z pracy i z podkulonym ogonem aplikuję na javovca

Dodam tylko, że dość późno zdecydowałem co chcę robić(programować) w życiu, podejmując pracę programisty dopiero w wieku 24 lat i obecnie żaden ze mnie orzeł, ale sprawa mi to radość i nie sprawia mi frustracji widok debugera przez kilka godzin! :)
Myślę, że łatwiej by było mierzyć mi wysoko w trochę takim niszowym języku po prostu, z drugiej strony jednak szkoda mi już tego doświadczenia w javie.

0

Moim zdaniem nie powinieneś rezygnować z Javy. W Pythonie może być tak, że trafisz na projekty, które były "brzydko" rozwijane... W Javie zresztą też, ale w Pythonie ze względu na specyfikę języka, trudniej będzie się poruszać po takim kodzie. Refaktoryzacja trudna do wykonania... dynamiczne typowanie powoduje, że automatyczne mechanizmy refaktoryzacji mogą nie obskoczyć wszystkiego co trzeba. Z dużymi systemami trzeba nauczyć się obchodzić (niezależnie od języka), są odpowiednie książki o "czystym kodzie" i wzorcach projektowych. Warto poczytać. Sama znajomość języka to jedno, ale ten kunszt wymaga przyjęcia pewnych zasad, które powodują, że zarządzanie dużym projektem staje się łatwiejsze.

0

Dzięki za opinię @Spine, może ktoś jeszcze podzieli się swoim zdaniem? :)

0

Ja bym poszedł w Javę, a Pythona ogarniał na tyle dobrze by szybko do niego wrócić w razie potrzeby.
Stare systemy do poprawek będą w każdej technologii i niestety każdy z nas musi się nauczyć to robić.
W dziedzinie tylko webowej jest spora konkurencja,więc są niższe stawki, jest też sporo partaczy po których trzeba sprzątać.
Python to nie tylko webówka, jest go sporo np. w Bigdata. U nas mamy napisanych mnóstwo narzędzi w pythonie które pomagają nam tworzyć duże zestawy danych, eventów itp Znajomi robili naprawdę ciekawe rzeczy w Pythonie, które miały specyficzne zastosowania i napisali je szybciej niż w Javie.

1
  • przeraża mnie to, co inni uważają za mocną stronę Javy - ogromna ilość bibliotek, frameworków, narzędzi, czyli ten ogrom wiedzy z którym się spotkamy prędzej czy później

Jestem Javovcem i to nie jest wada. Nikt nie każe Ci się wszystkiego od razu uczyć :)
Prawda jest taka że dużo takich bibliotek poznaje się w locie,najważniejsze to jest znać esencje czyli np. Core Java + Spring(z jakimiś ORM) + testy. a resztę poznajesz w trakcie rozwiązywania problemów np. musisz pobrać dane z excela, szukasz biblioteki do tego okazuje się że służy do tego Apache POI czytasz jak to wykorzystywać i klepiesz :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1