Smutny Java Developer - jak przestać klepać crudy?

6
marcyse napisał(a):

Pomyśl nad devopsowaniem, może to kolejny twój krok zainteresowań, o którym jeszcze nie wiesz.

Jako okazjonalny programista YAML powiem:
To dobrze płatna działka, ale cholernie frustrująca dla programisty. Wielogodzinne wprawtrywanie się w konsolę, bo znowu coś porypałeś w parametrach startowych serwisu i trzeba powtórzyć deploy. Strasznie smutne.

Fajnie jest ogarniać narzędzia/CI/chmurki na tyle, żeby móc sobie wszystko zoptymalizować / odapalić. Ale jako praca na etat to smutne.

2

Tutaj przedmówca dobrze powiedział, miałem czasem obowiązki Devopsa i do frustracji doprowadzało mnie to że jakaś libka nie działała tak jak potrzeba bo jej maintainerzy zapomnieli o niej a podbicie wersji pluginu z której ona korzystała rozwiązywało problem xDDDD do czego czasem się dochodziło po paru dniach. Albo że jakoś tool pod spodem dodaje znak nowej linii czy inne cudawianki.

Jak piszesz swój kod to masz kontrolę i większą władzę nad tym co robisz.

3

Duże firmy / korporacje / softłer-domy to niestety miejsca gdzie w większości będzie się robić rzeczy szablonowe, masowe, nudne w tym CRUDy. Jedynie mały procent będzie miał okazję robić rzeczy ciekawe. Pozostaje pytanie jak się z tego wyrwać?

benoni12 napisał(a):

I w sumie teraz główne pytanie, co mogę zrobić by nie zostać smutnym klepaczem, tylko jednak podążyć drugą ścieżką? Jakie lub jak szukać stanowisk z takimi wymaganiami?
Wpisywać w CV rzeczy w stylu finalista Mistrzostw Polski w Grach Matematycznych i Logicznych czy członkostwo w Mensie, czy to raczej nie ma wpływu (lub ma negatywny)?

Brak nudy to umiejętność samodzielnej realizacji zadań z różnych obszarów. Jeśli wyspecjalizowałeś się w CRUD'ach na bazie JAVA to teraz spróbuj samodzielnie robić np. front-endy w JS/CSS/HTML. To pozwoli Ci tworzyć projekty w o wiele szerszym zakresie i bardziej samodzielnie.
Z doświadczenia wiem, że w małych firmach są ciekawsze projekty a stawki w zakresie 150zł - 240zł / godz. już dla większości stały się normą i mało kto z ich powodu rezygnuje ze współpracy. Mowa tu o polskich klientach - tak, często tych wyśmiewanych "Januszexach" co to Pan Adam zatrudnia tylko 10 osób i handluje np. zbiornikami na wodę. Fakt, że takie stawki osiągamy poprzez kompleksowe dostarczanie rozwiązań, czyli od rozmów wstępnych przez projekt, wykonanie, testy po dostarczenie działającego rozwiązania. Wymaga to szerokiej wiedzy ale warto wspomnieć, że 20 lat temu też wszystkiego nie wiedziałem a też w taki sposób działałem. Było trudniej bo to zmuszało mnie do nauki i zdobywania wiedzy, z której dziś korzystam i na której zarabiam.
Na początek nie musisz umieć poruszać się we wszystkich obszarach bo nigdy nie dostaniesz zlecenia, które będzie wymagało znajomości ich wszystkich. Może się trafić, że dostaniesz zlecenie na prosty system okienkowy na desktop + aplikacja na telefon. Z pierwszym prawdopodobnie poradzisz sobie już dziś a z mobilną się douczysz.
W ten sposób za kilka lat ogarniesz technologie od niezbędnego zarządzania serwerami przez projektowanie, back-end po front-end niezależnie czy będzie on mobilny, w przeglądarce czy desktop. Być może w porównaniu z profesjonalnym Analitykiem z Google będziesz "słaby" ale też nie każdy problem wymaga "rocket-science" by go rozwiązać. Stwierdzę nawet, że większość projektów wymaga minimalnej podstawowej wiedzy z:

  • prowadzenia rozmów wstępnych i analitycznego umysłu;
  • projektowania aplikacji / bazy;
  • czegoś w czym stworzymy serwer dla back-end do współpracujący z bazą;
  • znajomości technologii WEB - czyli coś o będzie gadać z back-end i ładnie wyglądać;
  • dziś fajnie jest umieć zrobić aplikację na telefon. Na szczęście mamy tu masę technologii a od biedy znając juzJS/HTML i CSS można zrobić Progressive Web App i nie wgłębiać się w nowe technologie.
  • podstawy jakiejś chmury Azure, AWS itp...

Ogarniecie podstaw powyższych zagadnień to kwesta roku może dwóch lat ćwiczeń ale warto to zrobić bo na całą resztę życia będziesz miał ogólniejsze pojęcie o tworzeniu systemów i nawet jeśli taka forma pracy Ci nie podejdzie to zamykając się w jednym z obszarów będziesz zwyczajnie lepszy niż Ci co tego nie "liznęli".

1
katakrowa napisał(a):

Brak nudy to umiejętność samodzielnej realizacji zadań z różnych obszarów. Jeśli wyspecjalizowałeś się w CRUD'ach na bazie JAVA to teraz spróbuj samodzielnie robić np. front-endy w JS/CSS/HTML. To pozwoli Ci tworzyć projekty w o wiele szerszym zakresie i bardziej samodzielnie.

No tak, gość chce uciec od frameworków i innych pobocznych rzeczy, a Ty mu polecasz wejście w to głębiej (praca we frontendzie jest chyba jeszcze bardziej odległe od programowania sensu stricto, niż klepanie beanów w springu i użeranie się z hibernate'em).

Ja bym poszukał w firmach zajmujących się ML (z ostatnio widzianych np. DeepL), albo posiadających własny, innowacyjny produkt, który coś robi (np. HERE (ta firma od map)). Jeśli jesteś dobry w klepanie zadanek, spróbowałbym też np. do firm typu google (na interview nikt nie pyta o springa, liczy się głównie sprawne rozwiązywanie zadań algorytmicznych).

1

mam prawie 4 lata doświadczenia (ale tylko na papierku, w praktyce godzinowo wyszło tak z 2,5 roku bo czasy studenckie i niepełny etat)

plus za uczciwość, wielu nie potrafi się przyznać :D

A co do tematu - znaleźć sobie jakąś fajną działkę, spróbować wejść w nią na tyle ile się da i aplikować

0
benoni12 napisał(a):

[...] I w sumie mam dwa pomysły na dalszy rozwój:

  1. Skupić się na java advanced, obkucie się na rozmowy, wkręcić się gdzieś na mocny mid/senior i na 90% klepać crudy (czego nie lubie, ale trudno, za dobry hajs mogę to robić)

  2. Skupić się na algorytmice, może SQL i robić coś ambitniejszego (co by mnie bardziej ciekawiło), no ale gdzie w takim razie szukać pracy java + algorytmika + licencjat z matmy? Na myśl mi przychodzi jakieś data science (ale to zdominowane przez pythona), jakieś modelowanie matematyczne (gdzie ofert pracy nie widziałem chyba nigdy), a chciałbym jednak nie zaczynać kariery od nowa tylko jakoś wykorzystać doświadczenie w javie.

Jeszcze możesz spróbować sił w testach automatycznych/integracyjnych. Może nie jest to bardzo rozwojowe, ale pomoże zdobyć wiedzę z różnych technologii ze środowiska Javy. Napisanie testów integracyjnych między systemami/mikroserwisami to dość przyjemna robota, bo wszystko się robi samemu. I CRUDów nie ma.

EDIT:
Wpisywać w CV rzeczy w stylu finalista Mistrzostw Polski w Grach Matematycznych i Logicznych czy członkostwo w Mensie, czy to raczej nie ma wpływu (lub ma negatywny)?

wszystko co robisz czy osiągnąłeś jest mile widziane w CV

0

Jestem w podobnej sytuacji (Java, też jestem po matmie.) Będę szedł w stronę kryptografii, blockchaina. Wydaje mi się, że dla Ciebie też to może być dobra opcja. A i jeszcze coś... ja bym Cię wycenił na 150 PLN.

1
jarekr000000 napisał(a):
marcyse napisał(a):

Pomyśl nad devopsowaniem, może to kolejny twój krok zainteresowań, o którym jeszcze nie wiesz.

Jako okazjonalny programista YAML powiem:
To dobrze płatna działka, ale cholernie frustrująca dla programisty. Wielogodzinne wprawtrywanie się w konsolę, bo znowu coś porypałeś w parametrach startowych serwisu i trzeba powtórzyć deploy. Strasznie smutne.

Fajnie jest ogarniać narzędzia/CI/chmurki na tyle, żeby móc sobie wszystko zoptymalizować / odapalić. Ale jako praca na etat to smutne.

Ja to właśnie przeżywam i to jest niesamowicie smutne. Może nie jestem full time devopsem, ale mamy w systemie Sparka który dobrze się zachowuje tylko na zdalnej maszynie. A najlepiej z taką dużą ilością danych. Wiec praca wygląda ta.

  1. Coś tam klepie lokalnie, jak kompiluje się, szczatkowe testy przechodzą i wydaje się że jest dobrze muszę zmerdzować feature brancha do developl brancha
  2. Zmiany aplikują się na środowisko developerskie gdzie są szczątkowe dane. Puszczam Joby i patrzę co się dzieje. Czasem wrzystko przechodzi od razu, ale o wiele częściej coś sie wywala. Jak jest już dobrze to przenoszę zmiany z develop brancha na integration brancha
  3. Zmiany aplikują się na środowisko integracyjne gdzie jest więcej danych. Niektóre joby trwają godzinami. Dobrze jest jak uda sie joba puścić na koniec dniówki. Czasem przeciągam dniówkę o pół h żeby jeszcze puścić i zobaczyć wyniki rano. Pół h oczywiście odbieram sobie następnego dnia

Ogólnie mało to przypomina pracę w TDD :D A historia w repo wygląda jak tragedia :D Na szczęście praca nad Jobami w Sparku to tak tylko 20-25% mojego czasu :P Inaczej bym pewnie zwariował :P

Oczywiście jak ktoś ma jakiś pomysł jak testować Sparka czy Airflowa lokalnie to chętnie przyjmę pomysł czy tutaroal jak to zrobić

1

Ja swojego czasu przeszedłem z CRUDów na szeroko rozumiane Big Data oraz przetwarzanie rozproszone. Jest to dużo ciekawsze bo jest tu trochę roboty "inżynierskiej", tj.:

  • musisz grzebać w dokumentacji żeby znaleźć rzeczy, których w Google nie znajdziesz typu "który z pięciu rodzajów joinów będzie dobry do mojego przypadku użycia i dlaczego"
  • coś robi to, co powinno robić, ale robi to zbyt wolno - i wtedy zaczynasz bawić się w pomiary wydajności, zabawę z parametrami itp.
  • dochodzą sprawy infrastrukturalne, typu "ile node'ów wystarczy"

Stack to Java, SQL i Python, przy czym Pythona uczyłem się w locie i nie mam żadnych złudzeń, że CRUDa w nim bym nie napisał.

Tak jakbym miał wskazywać - to sporo firm zaczęło transformację z architektur synchronicznych (tj. tradycyjny CRUD) na taką opartą o zdarzenia (jakieś formy publish-subscribe) więc jeśli poszukasz to na pewno znajdziesz ciekawszy projekt.

1

@KamilAdam: a jakbys zautomatyzowal stawianie srodowiska + load gena ktory wygenruje ci odpowiednia ilosc danych/ruch tak zeby sie to testowalo z automatu po kazdym commicie? Nie wiem co masz pod spodem, ale ja ostatnio cos takiego dla Kafki robilem. Po kazdym commicie buduje sie obraz dockerowy, na k8s zestawia sie tymczasowe srodowisko, ida testy i wszystko sie discarduje.

Nawet jak nie przetestujesz w pelni, to niech Ci da 80% pewnosci ze jest ok. Wtedy juz bedziesz wiedzial ze prawie gotowe, wrzucisz na integracje jak teraz i bedziesz mial pewnosc jak przejdzie.

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