Jeden język vs kilka języków w pracy

Jeden język vs kilka języków w pracy
K1
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:2
0

Cześć, żeby nie przedłużać - zacząłem się jakiś czas temu uczyć Scali, dostałem pracę i od stycznia zaczynam bycie juniorem.

Dostałem wczoraj maila, że chce mnie dwóch liderów - u jednego jest 100% Scala, u drugiego jest mix Scala, Rust, Ruby, Go, Python i Java, z przewagą tego pierwszego (około połowa), a reszta jest mniej więcej po równo. Mam sobie wybrać, gdzie idę. W obu zespołach są mikroserwisy. W żadnym nie trzeba pracować z front endem.

Pytanie brzmi, czy na początku kariery programistycznej lepiej spróbować kilku języków i w żaden się nie wgłębiać, czy wejść od razu głębiej w jeden? Dlaczego?

renderme
Ja radze w jeden, a pozniej jak bedzie lepsze seniority i kasa bawic sie w inne.
99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:2420
3

To zależy, w małej firmie: Scala, Rust, Ruby, Go, Python i Java to mocna przesada. Zwłaszcza że jest np. Ruby i Python, te języki zajmują tą samą "niszę ekologiczną" więc użycie jednego gdy mamy już w firmie ten drugi nie ma najmniejszego sensu. W dużych firmach taki eklektyzm językowy nie budzi podejrzeń bo może być rezultatem np. przejęcia mniejszej firmy. Istnieje też ryzyko że np. nikt nie chce utrzymywać tego Ruby'iego i w głowie jakiegoś seniora pojawi się pomysł: "No, niech się młody tym zajmie! :trollface:".

Z tego co napisałeś niestety nie mogę udzielić Ci żadnej rady. Kultura pracy w danej firmie oraz ludzie z którymi będziesz pracował są o niebo ważniejsi niż języki programowania. Do tego warto pomyśleć o takich rzeczach jako dojazd do pracy, premie, ogólne wynagrodzenie i możliwości awansu.

Większa liczba technologii - z jednej strony pokazuje że firma nie boi się eksperymentować, i pewnie będzie używać innych cutting-edge technologies. Z drugiej strony technologie mogą być używane, ale brakuje wiedzy eksperckiej - innymi słowy dziwne bugi i sytuacje na produkcji to może być normalność ponieważ nie ma tam np. seniora Ruby a tylko programiści Javy piszący od czasu do czasu Ruby'ego (lub na odwrót).


Holy sh*t, with every month serenityos.org gets better & better...
dedicated
@0xmarcin: Python ma jednak chyba szerszą niszę niż Ruby
Bonanzaa
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 4 lata
  • Postów:168
4

Jak jesteś jeszcze na etapie kiedy chce Ci się programować dla przyjemności, dużo czytasz o dobrych praktykach itp to wziąłbym wiele języków ale pewnie będziesz musiał się uczyć po godzinach. Z drugiej strony w CV możesz sobie później wpisać pod konkretną ofertę że pracowałeś tylko z Java albo Java/Scala bo będziesz miał więcej opcji na pracę. Jeśli nie jesteś omnibusem i nie chcesz nadgodzin to brałbym tylko Scala.

edytowany 1x, ostatnio: Bonanzaa
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:2 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
17

u drugiego jest mix Scala, Rust, Ruby, Go, Python i Java

Koszmar, byłem kiedyś w projekcie gdzie na backendzie były Java/Kotlin/Scala/Groovy, Erlang/Elixir, JavaScript/TypeScript, Go, Python. Każdy mikroserwice w innej technologii. Na początku wydaje się to fajne, ale na dłuższą metę jest męczące. W monokulturze (np tylko Scala) łatwiej pisać bo możesz podglądać rozwiązania między mikroserwisami. A tam trzeba było za każdym razem wynajdywać koło na nowo


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
UglyMan
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Postów:2206
4

Na swoją pierwszą pracę odradzam pakowania się w takie szambo jak pierdylird języków (swoją drogą ciekawe jak do tego doprowadzili). Bez tego będziesz miał bardzo dużo rzeczy do nauczenie się i i ogarnięcia. Potem i tak pewnie ten język zmienisz kilka razy, zaczniesz robić w innych, ale na początek to się trzeba na czymś zaczepić, nauczyć pływać w tym basenie pełnym rekinów zwanym branżą IT

KamilAdam
swoją drogą ciekawe jak do tego doprowadzili tam gdzie ja pracowałem była zasada że jak conajmniej 3 osoby były chętne można było wprowadzić nową technologię. A że nie które osoby były chętne na wiele rzeczy to było więcej technologii niż ludzi
UglyMan
Tak to jest, jak jest demokracja - czy dupokracja jak to Kurwin powieda
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Poznań
  • Postów:8769
4

Ja bym zapytał o to, czy skoro tych dodatkowych języków nie znasz, to czy dadzą Ci zarówno czas na ich ogarnięcie, jak i będą na początku patrzeć życzliwie. Bo przy takim założeniu to opcja druga jest bardziej rozwojowa. Ale w sytuacji, jeśli dzisiaj zaczynasz a jutro masz pchać kod na produkcję, to raczej bym nie polecał takiego rozwiązania, bo możesz się nieźle wkopać.


BraVolt
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Warszawa
  • Postów:2918
1
cerrato napisał(a):

, czy skoro tych dodatkowych języków nie znasz, to czy dadzą Ci zarówno czas na ich ogarnięcie

Ile czasu potrzeba na Rust, Ruby, Go, Python i Java kiedy ktoś nie zna żadnego z nich?

OP dopiero zaczyna (junior od stycznia), zatem nie będzie to nauka an zasadzie: poznam specyfikę składni, a dalej szybko poleci bo mam długie doświadczenie


"Kiedy wiedzieć czy zacząć nauke Springa? bo w czystej Javie to nic ciekawego nie zrobie chyba"
Ein Volk, ein Reich, ein Kwa-Kwa ***** ***
PK
PK
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:245
0

Z perspektywy CV lepiej wybrać jeden język, ponieważ hr lubi proste odpowiedzi. Ja nawet mimo, że płynnie piszę w paru językach to wysyłając CV zostawiam info max o dwóch językach, by ktoś przypadkiem nie pomyślał, że umiem wszystko i nic.

Mimo to wybrałbym opcje z wieloma językami, bo jako junior lepiej jest wybierać rzeczy wpływające na rozwoj. Z tych wszystkich języków jakie wymieniłeś najtrudniejsza jest scala, a jeśli już ją mniej więcej ogarniasz to inne języki w miarę szybko poznasz. Przejście na pracę z wieloma językami da Ci większy bagaż doświadczeń, te języki trochę się różnią i rozwiązują trochę inne problemy, możliwość zorientowania się jak to wszystko wygląda jest super na początku. Później wpisz sobie do CV ten język, który najbardziej przypadnie Ci do gustu.

W ten sposób wilk będzie syty i owca cała, bo w razie czego zostawiasz sobie furtkę w CV do zmiany języka. Na późniejszych etapach skoki między językami w zasadzie gorzej wyglądają w CV i zamiast stawkę mida dostaniesz na jakiś czas stawkę juniora więc jeśli określisz się wcześniej co do języka to lepiej dla Ciebie.

Korges
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 11 godzin
  • Postów:555
3
Kamil1998 napisał(a):

zaczynam bycie juniorem.

We ty sie chłopie jednego języka naucz.

loza_wykletych
loza_wykletych
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 4 lata
  • Postów:854
0

Kilka języków programowania w pracy. Brzmi pięknie. Wkleiłbym jakiś cytat z wieżą i Babilonem w tle. Ale kto chce to sobie znajdzie. Wkleję to:
https://time.com/5889376/boeing-737-max-house-report/


Z wszelkiego drzewa tego ogrodu możesz spożywać według upodobania - ale z drzewa poznania dobra i zła nie wolno ci jeść, bo gdy z niego spożyjesz, niechybnie umrzesz.
MU
  • Rejestracja:ponad 4 lata
  • Ostatnio:3 dni
  • Postów:102
0

@Kamil1998: To wszystko zależy - jednej odpowiedzi nie ma
możesz mieć np cpp, C#, JAVA - ale nie korzystać z nowych ficzerów bo projekt długodystansowy i panie tam jeszcze robią np w VS2015 a przejście na VS2019 to moze bedzie za 2 lata.
może być tak - u nas jest cpp17, co oznacza, że flaga kompilatora jest ustawiona na cpp17, a do roboty masz ify, switche, for-y - bo głownie utrzymanie

trudno powiedzieć co masz robić w 10 językach a co w tym jednym
pisac poezje czy tabliczki z komunikatem wstęp wzbroniony

edytowany 1x, ostatnio: mussel
Satanistyczny Awatar
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 19 godzin
  • Postów:699
1

Za więcej języków domagaj się więcej kasy bo trzeba niewątpliwie wiedzieć więcej i więcej wysiłku i gimnastyki to kosztuje. Jeśli kasa jest (niemal) identyczna - bierz ten gdzie jest mniej języków.

UglyMan
ale jeśli wszystko w ramach ty samych 8h to dalszego więcej kasy? Jak i tak jest zielony jak trawa.
Satanistyczny Awatar
Bo się więcej spoci, czy jest zielony jak trawa czy czerwony jak buk na jesień.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
2

Gdyby w tej drugiej ofercie było tylko Scala i Rust to bym się zastanawiał.
Ruby jest jeszcze ciakawy.
Ale reszta tej paczki: Go, Python i Java* jest jednak mocno ułomna w porównaniu ze Scalą - więc jak ogarniesz scalę to możesz cierpieć. Nie polecam.


jeden i pół terabajta powinno wystarczyć każdemu
TS
  • Rejestracja:ponad 5 lat
  • Ostatnio:13 minut
  • Postów:853
0

Java/Scala lub Python to na tyle wielkie ekosystemy, że lepiej na początku wybrać jeden język. Wbrew pozorom Ruby i Python się od siebie sporo różnią. Tak samo Go i Rust od siebie jak i pozostałych języków. Scala to jest jezyk wieloparadygmatowy i możesz w nim zrobić naprawdę sporo. Jeżeli zaczniesz mieszać style tych wszystkich języków to możesz w konsekwencji niczego się nie nauczyć bo będą Cię rzucali między zadaniami. To czego potrzebuje Junior to spokojnego klepania kodu i masę komentarzy od seniorów, żeby wiedzieć jak projektować kod, jak go budować i jak to się odnosi do całego ekosystemu.

K1
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:2
0

"Kultura pracy w danej firmie oraz ludzie z którymi będziesz pracował są o niebo ważniejsi niż języki programowania. Do tego warto pomyśleć o takich rzeczach jako dojazd do pracy, premie, ogólne wynagrodzenie i możliwości awansu." ale to jedna firma :P :P

"(swoją drogą ciekawe jak do tego doprowadzili)" każdy zespół miał kilkadziesiąt na prawdę mikro serwisów (tak mówią) i jeden zespół miał narzuconą Scalę przez leada a drugi nie, więc połowę pisali w Scali, a połowę w tym, na co był hype.

"Ja bym zapytał o to, czy skoro tych dodatkowych języków nie znasz," ja to bym nawet nie powiedział, że ten jeden główny znam xD

"We ty sie chłopie jednego języka naucz." tak robiłem, po prostu firma mi sama zaproponowała wybór zespołu (miałem rozmowę z managerem, który pod sobą ma 5 zespołów)

"Jeśli kasa jest (niemal) identyczna - bierz ten gdzie jest mniej języków." no jest identyczna siłą rzeczy, bo to jedna oferta :P Miałem dać znać, jakiego chce kompa i jaki chce zespół.

"Ale reszta tej paczki: Go, Python i Java* jest jednak mocno ułomna w porównaniu ze Scalą" dlaczego Go? I dlaczego Python ułomny a Ruby nie? Nie pisałem nigdy w Ruby (w wężu miałem na studiach jeden przedmiot), ale wyglądał jak Python z endami

W każdym razie - ** dziękuję za opinię**, czytałem już wczoraj i podjąłem decyzję o wyborze jednego języka, zawsze później można zmienić zespół jak będę znał domenę.

Można zamknąć chyba :P :P :P

stivens
dlaczego Go? go to taki lepszy C. Tudziez gorszy bo ma GC - zalezy jak patrzec.
ZN
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 2 lata
  • Postów:49
0

Ja bym zapytał czym dokładnie jest produkt obu zespołów i wybrał to co by mnie bardziej interesowało/było mniej nudne

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)