Programnyelv váltás
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!
■ 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!
Cég
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.
A váltást úgy értettem, hogy
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.
Van
Amit a rendszerrol tudsz, vagy az OOP-rol, az ugyanugy mukodik Javaban mint PHP-ban, par aprosagot kiveve.
Az új javas munkahelyedre
Nem
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.
Én váltottam éles projektről
É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.
Multi-thread fejlesztéssel
Nekem
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.
Ahogy janoszen is írta, az
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 parserbenprivate 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 :)