ugrás a tartalomhoz

Programnyelv váltás

SnowFairy · 2017. Okt. 2. (H), 11.05
Sziasztok,
mi a véleményetek az alábbi témában:

Adott egy medior szintű fejlesztő, jelenleg egy cégnél dolgozik egy adott programnyelven ír alkalmazásokat. Eljutott egy pontig, ahol úgy érzi, hogy a jelenlegi helyen már nem tud tovább fejlődni. Elkezd gondolkodni a váltáson... szeretne egy új programnyelvet is elsajátítani, és olyan munkát találni.

Szerintetek mennyi esélye van egy új programnyelvet használó állást találnia, amiben nincs releváns tapasztalata?
(otthon azért tanulgatja, van néhány homemade projektje, de céges tapasztalata még nincs)

Szerintetek, ha egy adott programnyelven már elért egy szintet, akkor az új programnyelvű állásból csak a junior kategóriában van helye?

Mit gondoltok erről a témakörről, vagy ha van személyes tapasztalatotok, azt is osszátok meg. Köszi!
 
1

Cég

janoszen · 2017. Okt. 2. (H), 11.55
Azt kell látni, hogy a cég érdekei nem feltétlenül egyeznek meg a te érdekeiddel.

Nézzünk egy példát: a cég PHP-t használ, Te meg Javat szeretnél használni. Miért használ a cég PHP-t? Sok cég azért, mert így alakult, de többnyire azért, mert könnyű és relatíve olcsó hozzá valamelyest értő embert találni. Ezen felül könnyű üzemeltetni, mert ha a programozó elcseszik valamit, max az a lekérdezés nem fut le, de nem rántja magával az egész szervert.

Miért váltana ez a cég Javara? Ha nincs üzleti érdeke erre váltani, akkor kár eröltetni, mert abból csak az lesz, hogy egy csomó junior Javas elkövet olyan bakikat, amik adott esetben sok pénzbe kerülhetnek a cégnek. Persze felvehetnek olyan Javast aki ért hozzá és betanítja a népeket, de ez pénzbe és akaratba kerül.

Akkor mi a megoldás? Elmehetsz olyan céghez ahol Java IS van, vagyis szépen lassan át tudsz tanulni, vagy elmehetsz olyan céghez, ahol csak Java van de hajlandóak betanítani.
2

A váltást úgy értettem, hogy

SnowFairy · 2017. Okt. 2. (H), 12.27
A váltást úgy értettem, hogy egy új munkahelyen. Az megvan, hogy a cég nem akar profilt váltani, és ennek sok oka van.

Akkor picit átfogalmazom:
mennyi a reális esélye, hogy találsz egy új állást úgy, hgy más nyelven van 5-6 év tapasztalatod, de az új nyelvet csak otthon tanulod, és nincs lehetőséged a munkahelyeden alkalmazni?

És mekkora az esélye, hogy full juniorként fognak kezelni az új helyen? Ez normális, vagy valahol beszámít, hogy már fejlesztettél pár évet?
Véleményem szerint több éves tapasztalat után könyebb megtanulni valami újat, de nyilván kezdetben nem fog olyan jól menni, és lassabban is halad az ember.
3

Van

janoszen · 2017. Okt. 2. (H), 12.32
Van realis eselye. En 6 honapja valtottam Javara, es noha a kezdetek nehezek voltak, korant sem annyira kulonbozik a PHP-tol mint az ember gondolna. Igen, kulonbozik, de sokkal inkabb az okoszisztemaban mint magaban a nyelvben.

Amit a rendszerrol tudsz, vagy az OOP-rol, az ugyanugy mukodik Javaban mint PHP-ban, par aprosagot kiveve.
4

Az új javas munkahelyedre

SnowFairy · 2017. Okt. 2. (H), 12.48
Az új javas munkahelyedre juniorként vettek fel?
5

Nem

janoszen · 2017. Okt. 2. (H), 13.01
Nem, CTO-nak, de nem hiszem hogy ez az átlagos karrierút. :) A feladatra a Java alkalmasabb volt mint a PHP (rengeteg queue feldolgozás, stb.) viszont a Javas ökoszisztémából szinte semmire nem volt szükségünk. Menet közben portoltam a termérdek PHP-s librarym közül jópárat, és a hosszú távú cél az, hogy megtartsuk a "kezdőbarát" architektúrát, hogy akár egy OOP-val jól bánó PHP-st is fel tudjunk venni dolgozni.

Egyébként a munkám nagy része nem fejlesztés, hanem üzemeltetés, a fejlesztés csak azért jön a képbe, mert rengeteg mindent kell programból csinálni.
6

Én váltottam éles projektről

BlaZe · 2017. Okt. 2. (H), 14.32
Én váltottam éles projektről éles projektre "új" nyelven (PHP -> Java). Nem juniorból mentem nem junior pozícióba. Sőt, valójában felfelé léptem az új nyelven. Úgyhogy megvalósítható :) Az alapokkal kell tisztában lenni, onnantól nagy meglepetés nem szabad legyen.

Érdemes a cél nyelvben kicsit elmélyülni otthon, esetleg valami open source projectbe beleszállni kicsit. Azután egy váltás nem szabadna gondot okozzon, ha jó vagy.

A másik út a céges képzési programok. De ott is el fognak várni befektetett energiát, és valami hozott alap tudást. Ennek keretében mi pl vettünk fel korábban Javában csak otthon programozó kollégát, pedig még magas is a felvételi küszöb.
7

Multi-thread fejlesztéssel

inf · 2017. Okt. 2. (H), 14.46
Multi-thread fejlesztéssel nem volt problémád?
8

Nekem

janoszen · 2017. Okt. 2. (H), 16.59
Ugyan nem engem kerdeztel, de nekem nem volt. Igaz, en mar korabban is programoztam multithreading alkalmazasokat.

Ha a PHP-s vilagbol jossz, hozza vagy szokva hogy a kulon lekerdezeseid kulon szalakban futnak. Ez Javaban sincs maskepp, default configon a servlet engine (tudtommal [nem ezt hasznalom]) kulon threadekben futtatja a kododat, szoval ebbol a szempontbol ugyanugy viselkedik mint a PHP. Az hogy nem multiprocess hanem multithread itt csak egy lehetoseg, letrehozhatsz pl. egy shared cachet amit lockolni kell, de ez egyaltalan nem kotelezo.

Nyilvan mas a helyzet ha pl. egy chatet irsz, ott szembesulhetsz a Java NIO-val vagy hasonlokkal, de klasszikus webfejlesztesnel nem olyan borzasztoan nagy problema.

Szamomra az eros/statikus tipusossag / a genericek jelentettek a legnagyobb kihivast. En egyebkent a Hacklangen keresztul jutottam el a Javaig, a Hack kodomat majdnem 1:1 regexp replace-el tudtam Javara alakitani.
9

Ahogy janoszen is írta, az

BlaZe · 2017. Okt. 2. (H), 21.27
Ahogy janoszen is írta, az enterprise frameworkök, és a java.util.concurrent osztályok elfedik a többszálúságot a programozó elől, úgyhogy nem igazán. Az elmúlt években viszont teljesen más környezetben dolgozom, így már azért észnél kell lenni. Pl találtam szálak között osztott parserben private String message-t. Fincsi volt rájönni mi a baj :)

Amíg elég a gyári concurrency kezelés, addig általában nincs gond. Ennek mondjuk meg van az a hátránya is, hogy sokan elkényelmesednek és nem tudják hogy is működik az egész. Nem egyszer hallottam interjún, hogy majd a framework megoldja. Amint valamiért meg kell osztani állapotot a szálak között, ott már azért érteni kell, hogy mi hogy történik.

A multi-threaded kód annyival "alattomosabb" egy processz alapú concurrencynél, hogy nincsenek éles határok a szálak között, a kód írása közben nem is látja az ember, hogy melyik szálakról érkezhet oda a vezérlés, melyik a shared adat, és melyik nem. Úgyhogy még nagyobb figyelemre és fegyelemre van szükség. Sokszor a programozó intuíciójával ellentétes dolgok történhetnek, ha valaki az egyszálú végrehajtáson edződött. Emiatt rendkívül fontos a thread management, az egységbe zárás, a megfelelő absztrakciók használata és persze a dokumentáció. A spagetti kód többszálú környezetben maga az orosz rulett.

Úgyhogy amíg az ember csak standard frameworköket használ, addig megy. Utána meg izgalmas :)