Rozwój techniczny - wszechstronny czy jednokierunkowy

0

Cześć,

Mam pytanie do osób z pewnym bagażem doświadczeń technicznym, które napotykały w swojej pracy problemy z różnych obszarów technicznych i które zastanawiały się czy nie zmienić technologii po kilku latach pracy będąc już seniorem albo architektem w dotychczasowej technologii.

Jestem developerem Javy z 5-letnim doświadczeniem. W swoim doświadczeniu głównie programowałem w Javie, aczkolwiek pojawiały mi się projekty, w których musiałem porzucić Javę i napisać projekt w Pythonie, ReactJSie, przeprowadzić migrację na bazie danych w Oraclu czy zintegrować systemy za pomocą narzędzia EAI (WebMethods).
Łącznie na 5 lat mojego doświadczenia, około 2 lata były poświęcone na projekty poza Javą, w trakcie których uczyłem się zagadnień i podejść występujących podczas migracji czy integracji systemów. Na pewno fajnym było pozyskanie tej wiedzy, pisząc zaawansowanego SQLki czy ucząc się WebMethods i "bardzo wysokopoziomowego sposobu programowania", aczkolwiek powodowało to, że nie byłem na bieżąco z technologiami w Javie (np. JSF, moduły Springa czy MyBatis), ale starałem się w wolnym czasie doganiać nowinki technologiczne.
Plus mojego doświadczenia jest taki, że teoretycznie mógłbym odnaleźć się w różnego rodzaju projektach, minus jest taki, że "albo jesteś dobry w jednej technologii, albo jesteś średni we wszystkich technologiach".
Zastanawiam się czy moje doświadczenie będzie jakoś zauważone i docenione przez przyszłych pracodawców czy raczej powinienem trzymać się jednej technologii (no i ReactJS, zawsze się przyda na pozycję Full-Stacka) i ćwiczyć jak największe skille w niej.

Czy mieliście podobne problemy w swojej pracy? Który wybór jest wg was lepszy i dlaczego?

4

Hej miło mi to słyszeć, jesteśmy w podobnym miejscu! ;p
Zdecydowanie najlepszym rozwiązaniem, z którym się zetknąłem jest T-shaped skills. Czyli masz dogłębną ekspertyzę w jednej dziedzinie (w Twoim wypadku Java) i bardzo szeroką znajomość różnych innych technologii.
Pamiętaj, że narzędzia należy dobierać do problemu. I technologia ciągle się zmienia, nie warto więc kurczowo trzymać się jednej. Gdyby nagle umarła (np. Flash), pozostałbyś w średniej sytuacji. A tak przerzucenie się na inną to dla Ciebie kwestia krótkiego czasu ;)

0

Hej, mam podobnie i znam ten bol. Jak miałem rekrutacje na Java Developera ze znajomością Springa to nikt nie bral pod uwage doswiadczenia w migracji z Oracla, a na pewno nie mialem takiej znajomosci Springa jak koledzy z moim stazem pracujacy tylko w Springu. Prawda jest taka, ze dla pracodawcy wazne jest jak bardzo podpasowujesz pod jego wymagania projektowe :(

0

Nigdy nie wiesz co się w żyicu przyda i kiedy jakiś głupi skill okaże się kartą przetargową.
Robiłem w trakcie studiów wakacyjny staż i akurat tak wyszło, że pasującą technologią był python, więc pisałem w pythonie, mimo że tez miałem taki dylemat z serii "a mógłbym zrobić dodatkowe 4 miesiące doświadczenia w Javie!". Rok później okazało się, że dostałem bardzo dobrą pracę właśnie dlatego że szukali kogoś ze znajomością javy + pythona a ja miałem doświadczenie w obu. Co więcej na tym stażu pracowałem z pewną wewnętrzną, dość niszową technologią, którą znów można by uznać za "stratę czasu", a moją aktualną pracę dostałem właśnie ze względu na to, bo znów potrzebnymi skillami była java i python, ale projekt jest związany z tą wewnętrzną technologią i jej znajomość działała mocno na plus.

Narzędzia dobiera się do problemów które trzeba rozwiązać. Język X czy Y nie są żadnym panaceum i nie nadają się do wszystkiego. Znajomość tylko jednej technologii to jest trochę kalectwo i kończy się zwykle wbijaniem śrubek za pomocą młotka (zgodnie z zasadą jeśli masz młotek to nagle wszystko wygląda jak gwoździe).

0

Warto sobie wybrać jedną wiodącą technologię i ją stale pogłębiać, ale też uczyć się innych.

Do Javy świetnym uzupełnieniem są:

Można też oczywiście uczyć się czegoś z zupełnie innej dziedziny (C++, Rust, Nim, etc.) - to jest wybór każdego z nas. A nuż okaże się trafnym wyborem - j.w.

Niektóre firmy zagraniczne mają podejście "wystarczy że jesteś inteligentny i znasz algorytmikę". Nie wiem na ile to się sprawdza, ja miałem niedawno do czynienia z dość doświadczonym programistą Javy, który nie wiedział co to znaczy niemutowalność niektórych klas w JDK (czyli Java mu nie przeszkadzała w pracy).

0

Dzięki za informację, aczkolwiek chodziło mi bardziej o opinie na temat bardzo skrajnych obszarów technologicznych. Znam Javę i raczej nauka innego języka programowania (obojętne czy to język backendowy, frontendowy, funkcjonalny czy interpretowany) nie jest wyzwaniem, aczkolwiek jak poznawałem WebMethods czy inne toole EAI to tego programowania praktycznie nie było, a podejście do rozwiązywania problemów też trochę inne, po prostu trochę inny świat.
W związku z tym, też się zastanawiam czy nauka tego typu skrajnych obszarów technicznych na projekcie, gdzie przez 1 rok nie widzisz kodu tylko jakieś mapowania i translacje, nie sprowadzi mnie na manowce, że będę musiał sobie przypominać czym jest programowanie a nie mówiąc już o znajomości nowinek w Springu 5... :/

0

Jak nie widzisz kodu to jesteś integratorem albo bardziej oficjalnie "specjalistą ds. procesów biznesowych".
Ale nie programistą.
Praca może łatwiejsza, ale możesz zapomnieć jak się programuje.

3

Specjalizuj się w domenach, np. pisanie gier czy inne hft, nie w technologiach.
Gry będą potrzebne zawsze, technologie przemijają ;)

0

@Shalom: troche nie do końca się zgodzę. Oczywiście na przyklad jak się zna Jave nauka Pythona nie jest jakaś cieżka, ale ogarnięcie sobew na przykład JavaScriptu i CSSów i np. Javy jednocześnie jest bardzo trudna

2

@scibi92 no tak bo nie istnieją fullstack developerzy ;)
Zresztą pytanie nie było czy to trudne czy nie, ale czy to wartościowe czy nie. Moim zdaniem wartościowe bo tak realistycznie jak ktoś pracuje kilka lat w jednej technologii to już wiele więcej sie nowego nie dowie. Kogoś kto klepie w technologii X 5 lat od kogoś kto klepie 10 lat różni doświadczenie "projektowe", ale już nie technologiczne. Jak ktoś klepał 5 lat w C++ a teraz 5 lat w Javie to będzie równie użyteczny co gość który od 10 lat siedzi w Javie. Ba, może będzie nawet bardziej użyteczny bo "widział coś więcej" i nie bedzie wbijać śrubek młotkiem tylko powie "hej chłopaki, to można inaczej..."

1

A to nie jest czasem tak, że praca i chęć doskonalenia skilla profesjonalnego tworzenia kodu ciągną w jedną stronę, a marzenia, pomysły i ciągła potrzeba nowych wrażeń sprawia, że skacze się z jednego kwiatka na drugi?

Życie jest długie i chyba starczy na poznanie wszystkiego.

Ale i tak skądś się czuje, co jest tak magiczne, że trzeba to poznać.

Eh sterta książek i technologi czeka do poznania, ale najpierw trzeba dobrze stanąć na nogach, a potem można pogrążyć się w marzeniach.

0

@Shalom: tak rozmawiałem z rożnymi "fullstackowcami" i odnosze wrażenie że ani jednej ani drugiej technologi nie znają dobrze :) Ich styl programowania to często "stackoverflow" :D
Ja tam to teraz tylko zastanawiam się czy uczyć się Kotlina czy clojure (to 1 do celów komercyjnych 2 do celów innego spojrzenia na programowanie bardziej)

1

Zgadzam się mocno z Shalom. Zanudziłbym się gdyby nie to, że jestem fullstackiem I nie zajmowałbym się konfiguracją wszystkiego w chmurze. Teraz w dobie flexboxa to nawet css nie są straszne I mogę sam wszystko ostylować szybko. Jedyny mankament frontendu, to że każdy tablet, telefon I przeglądarka mają inne działanie javascriptu np. Chrome I samsung galaxy chrome bleh.

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