Rozwój w kierunku systemów rozproszonych.

1

Hejo,

Jestem programistą, jeszcze na stanowisku juniorskim, a w obecnej firmie piszę mikroserwisy (na mała skalę, ale jednak) na node.js. Przyznam szczerze, że od jakiegoś czasu miewam wrażenie, że trochę źle kieruję swoją karierę. Początkowo byłem front-end developerem, choć głównie pisałem aplikacje na JS, cssa to prawie na oczy nie widziałem. Tak jakoś wyszło, że mój pierwszy język programowania to był c++ i js. Postanowiłem zabrać się za ten drugi ze względu na to, że świat idzie w weba. Więc dostałem się do jakiejś tam firmy, gdzie sporo się nauczyłem (tak ogólnie), ale kompletnie nie w tym kierunku co chciałem, od początku chciałem pracować z node.js skoro już go w miarę umiałem, po prostu chciałem iść w backend.

Aktualnie pracuję na stacku, który powiedzmy jest tym, czym chciałem na początku, zaraz po skończeniu szkoły średniej, czyli mikroserwisy i node.js. Ogólnie mi się podoba, szkoda tylko, że skala nie jest taka duża, ale to na pewno się kiedyś zmieni (albo ja zmieniając pracę :D), chodzi mi bardziej o to, że bardziej niż język doceniam budowanie dobrego systemu, w tym przypadku opartego na mikroserwisach. Oczywiście budowanie dobrego systemu, też mam na myśli dobry kod pod spodem, ale czy to jest node.js, czy coś innego to już mniejsza o to.

Node.js jest super, ma fajne zastosowania, ale też limity i chociażby z tego powodu zacząłem szukać innego języka, który da mi to, czego potrzebowałem, padło na Go, ale to nie znaczy, że np. taka Scala, też by nie mogła się gdzieś pojawić. Wszystkie te języki mają jakiś swój hype na mikroserwisach i fajnie się sprawdzają. No właśnie, ale to 3 różne języki, a ja mam wrażenie, że w takim przypadku jest ciężej dostać pracę, bo w żadnych z nich nie jesteśmy jakimś tam bossem.

Ogólnie, nie chciałbym zamykać się na język, a po prostu stać się ekspertem w system rozproszonych i teraz pytanie do Was, bardziej doświadczeni koledzy, jak można by pokierować swoją karierę, tak aby do tego dążyć.

Wcześniej wspomniałem, że język nie ma znaczenia, a chciałbym skupić się na mikroserwisach, co po części jest prawdą, ale jak każdy człowiek ma swoje widzi misie i tak samo programista ma jakieś mniejsze lub większe obrzydzenie do jakiegoś języka, wiec również mam je i ja.

W sumie, gdybym tego nie napisał to odpowiedź byłaby banalnie prosta. JAVA!
Racja, połowa ogłoszeń z mikroserwisami to są oferty w Javie, ale mi Java strasznie nie przypadła, podejść miałem kilka i po prostu jest dla mnie nie do strawienia, nie chce się rozpisywać dlaczego, po prostu nie jest dla mnie.
Dlatego języki (na ten moment, które jakoś tam mogą mi dać pracę) i są powszechne w mikroserwisach to np. node.js, go, scala. Taki widze trend przynajmniej.
Są jeszcze inne języki, ale te wyżej wydają się najbardziej produktywne i można je zastąpić tymi z niższego rzędu (chyba, że się mylę), poza tym to też trochę bardziej niszowe języki, więc powiedzmy, że jest mniej dobrych ludzi w tym.

Okej, wyszedł trochę elaborat z tego, chciałbym poznać wasze zdanie na temat mojego postu. Tylko nie bijcie, jestem jeszcze juniorem, najwyżej sprowadźcie mnie do pionu ;)

0

W sumie to nie zrozumiałem o co pytasz (ale jest już całkiem późno).
Jak Cię interesują systemy rozproszone to po prostu staraj się mieć pracę/projekt, gdzie możesz z takimi pracować. IMHO język jest w końcu rzeczą drugorzędną - twierdzenie CAP zawsze zadziała tak samo, podobne będą trade-offy (jakie tu polskie słowo?), podejścia do integracji, monitorowania, testowania i szukania błędów.

0

Piję do tego, że w Polskich ogłoszeniach jest kult języka. Jak zobaczymy oferty pracy znanek marek, to rzadziej spotykamy stanowisko typu "{tu_wstaw_język} developer". Oczywiście, też występują, ale b. często spotykam długi opis, o tym co powinieneś umieć do okoła, a technologie to drugorzędna rzecz. U nas w Polsce widać to wyraźnie mniej. I piję przede wszystkim do tego.

0

Te same zagraniczne marki często szukają ludzi w Polsce i nie fiksują się na językach. Często też mniejsze firmy szukają równocześnie Foo Developer i .Bar Developer, bo robią rzeczy dla klientów w jednym i drugim.
Jeżeli komuś zależy na konkretnym obszarze, to chyba znaczy, że technologia jest na drugim miejscu. Jeśli się okazuje, że na rynku poszukuje się najczęściej "obszar + technologia X", to może trzeba przemyśleć tę technologię, bo pewnie są jakieś powody, dla których takie połączenie wygrywa. Dla przykładu - mam wrażenie, że ciężko byłoby pracować w czymś co firmy nazywają "data science" i nie chcieć tknąć Scali.

1

Możesz rozważyć połączenie Python + Go jeżeli chodzi o mikroserwisy w dodatku do Node. Niestety, Scala jest głównie używana w projektach big data głównie przez to, że betony od Javy jakby mieliby się nauczyć innego sposobu rozwiązywania problemów, np. prawdziwego funkcyjnego programowania, to by ich cały świat się zawalił i dlatego bronią się rękami i nogami przed Scalą, a szkoda. W Big Data na szczęście to twórcy narzędzi wybrali Scalę i tu Javowcy nie mieli nic do gadania, chociaż i tak jest dla nich równoległa droga tylko z użyciem Javy. Jest jeszcze teoretycznie możliwość Kotlin + Spring Cloud, ale w Kotlin niewiele jest ogłoszeń poza Androidem, a poza tym w Spring Cloud to tak naprawdę wszystko już tam jest obmyślane, umieścisz odpowiednią annotation i rozwiązanie jest w +/- w pełni funkcjonalne także raczej frajdy z tego nie będziesz miał jeżeli chodzi ci o implementacje,

0

Możesz rozważyć połączenie Python + Go jeżeli chodzi o mikroserwisy w dodatku do Node. Niestety, Scala jest głównie używana w projektach big data

W takim połączeniu jak Go + Node, to Python byłby właśnie tylko w dla big data, bo tylko w tym byłyby jakieś korzyści, dlatego myślałem nad Pythonem albo Scala do big data.
Wszystko fajnie, mamy sobie 3 języki z odpowiednim zastosowaniem, pytanie tylko czy warto uczyć się w ten sposób, bo nieraz (nawet na tym forum) ludzie się wypowiadali, że lepiej cisnąć jeden język. Ja patrze na to trochę inaczej, chce cisnąć to, gdzie byłbym produktywnym specem od systemów rozproszonych.

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