Egy levélben az alábbi kérést kaptam:
Arra szeretnélek még megkérni amennyiben időd engedi, hogy pár sorban összefoglalnád-e mivel foglalkozol a jelenlegi munkahelyeden és milyen elvárásoknak kell megfelelned. Azért érdekel, mert ha hasonló területen/pozícióban helyezkednék el, akkor mire számíthatnék, milyen szakmai vagy egyéb kihívásoknak kellene megfelelnem. Röviden mi a jó és rossz oldala annak az állásnak amelyet betöltesz.
Azt hiszem nem én vagyok a legmegfelelőbb ember, aki erre a kérdésre választ tud adni (és éppenséggel időm sincs valami sok), de gondoltam ha már válaszolok megosztom mindenkivel, elvégre egyre több ember próbál elhelyezkedni ezen a területen, nem árt ha tudják mire számítanak.
Ha pár évvel ezelőtt tették volna fel nekem ezt a kérdést egyszerű választ adtam volna. Ismerni kell a megfelelő technológiákat, trendeket, gyorsan jól kell dolgozni.
Lehet tényleg a korral jár, de azóta sokkal többrétűnek látom ezt a problémát. Ezért nem is a konkrét kérdésekre fogok válaszolni (nem hiszem, hogy a válaszaim bárkinek is segítenének elhelyezkedni) inkább azokat a dolgokat írom le, amit én fontosnak tartok a témával kapcsolatban.
Tehát:
1. Mit várnak el manapság egy szoftverfejlesztőtől?
Amikor döntenek valakiről (felvegyük/ne vegyük) több szempontot értékelnek. Hogy pontosan miket és milyen súllyal az változhat, de jó eséllyel a lentiek mindig benne lesznek:
Szakmai elvárások: Legyen kielégítő szakmai tudása. Tegyük fel ha java fejlesztőről beszélünk, akkor ismerje a java nyelvet (öröklődés, generikus típusok, objektumok és natív típusok közötti különbségek, stb.), tudjon kódot értelmezni, és legyen (legalább) áttekintő képe a fontosabb technológiákról (ha nem is mindenről de: spring, hibernate, soap, xml/xsd, servlet, jsp, svn, stb.). Jó kérdés, hogy mi minősül fontosabb technológiának. Erre a válasz az, hogy amelyek beleillenek a trendekbe, megfelelő támogatottságuk van, stb. Nincs konkrét recept, de ha valaki megfelelő fórumokat/listákat olvas, vagy megkérdez egy szakmabelit biztos fog egy listát kapni, ami kiindulásnak tökéletes.
Management elvárások: A szoftverfejlesztés (vagy bármi más) nem csak a szoftverfejlesztésről szól. Fontos, hogy a jelentkező képben legyen a saját korlátaival, képességeivel, be tudja határolni mi az elvárása/célja, és tudja ezeket megfelelően kommunikálni. Ha valaki kezdő fejlesztő persze nem nagyon tudja megállapítani saját korlátait (mert nincs viszonyítási alapja) de még mindig szerencsésebb ezt mondani, mint bármi mást. Képzeljük el az alábbi helyzetet. Jelentkezik valaki fejlesztőnek, és beáll azok közé, akik x éve fejlesztenek, napi x órában. Ha úgy állnak az új emberhez, hogy ő tapasztalt, joggal elvárhatják, hogy a feladat ismeretében határozza meg, mennyi ideig fog tartani a megvalósítás. Ez egy egyszerű kérdés, emiatt többen alul is becsülik ennek a súlyát. A kérdés egyszerűsége ellenére a választ nagy ritkán sikerül még napra pontosan is megmondani. Rutinnal és sok gyakorlással jól lehet tippelni (feltéve ha az ember odafigyel erre, és tanul a hibáiból). Egy pályakezdő 90%-ban rossz választ fog adni, és ha mégsem, az is inkább a szerencse miatt van. Vagy nagyon felülbecsüli, ami kiveri a biztosítékot a vezetőknél, és elmagyarázzák neki, hogy na ez itt ám nem az a hely, vagy alul és jó esetben napi 12 órákat dolgozik mire behozza a lemaradást. Rossz esetben valaki másnak kell átvenni tőle a feladatot ami nem biztos, hogy elősegíti a további jó munkahelyi kapcsolatok kialakulását (pl. ha az új kolléga miatt kell valakinek hétvégézni, miközben egész héten 1x órákat volt bent 🙂 ). A “becsüljük meg mennyi idő lesz” probléma minden fejlesztőnél létezik, sajnos ezt csak gyakorlással lehet fejleszteni (pl. megkérünk valakit vagy keresünk a neten egy fejlesztési feladatot, megbecsüljük, megcsináljuk, megnézzük mennyit tévedtünk, elemezzük mit becsültünk alul, felül, stb.), de nagyban megkönnyíti az életünket ha ebben jók vagyunk (akkor is ha nem mi szabjuk meg a határidőket, mert legalább tudunk sípolni időben ha valami nem kerek azzal amit nekünk mondtak).
Emberi elvárások: A szoftverfejlesztés (főleg ha nagy projekt) olyan mint egy sokszereplős társasjáték. Az emberek azért dolgoznak, hogy beérjenek a célba (elkészüljön az amit csinálnak, és még jó is legyen). Csak itt a játékosok nem egymás ellen, hanem egymással játszanak. Szép dolog (és igen jó érzés) ha ez működik. Ha valaki elkapkod valamit, nem gondolkozik, hajlamos félvállról venni dolgokat az felér azzal, mint amikor azt mondják a társasjátékban a többi játékosnak, hogy 2 körből kimaradsz. Ha valaki nem lát meg egy problémát előre előfordul. Ha valaki meglátja, és nem érdekli, az a probléma. Tehát az alaposság, következetesség, és kommunikáció kiemelten fontos (nem csak IT területen, de itt sokkal több a kevésbé kommunikatív ember, ami a reál tudományágaknál egy ismert tendencia). Szintén érdemes gyakorolni az önmegtartóztatást. A fejlesztések során a projekt méretével a tévedések száma valamint mérete is nőni szokott. Például nem túl szerencsés fennhangon anyázni egy kódrészletet mert: lehet valaki tévedett, lehet, hogy amikor megcsinálta még jó volt, csak tudtán kívül átalakult körülötte a kód többi része, vagy csak fáradt volt mert 1x órája dolgozott. Ezt soha nem tudhatjuk (persze van amikor mérgelődünk kicsit konszolidáltan, de azt hiszem ettől vagyunk emberek 😉 )
2. Milyen egy szoftverfejlesztő élete
Társaság: Ha egy jó csapatba/cégbe csöppen az ember, akkor nagyon jó. Nekem személyes tapasztalatom az, hogy az emberek sokkal fontosabbak mint a projektek. Ez az a szakma ahol mindig meglehet találni a feladatok szépségét, vagy egy semmitmondó feladatot is meg lehet oldani érdekesen, oly módon, hogy tanulni is lehessen belőle (persze itt is kiemelten fontos az önismeret, bukott el nem egy nagy projekt a túlcizellált megoldásokon).
Szabadidő: Természetesen a szoftverfejlesztés nem kevéssé időigényes feladat, és ha valaki egy új cég életébe csökken, az első napok/hetek/hónapok biztos nagyon húzósak lesznek (túlórák, rengeteg új dolog, érthetetlen összefüggések). Ezek ismert dolgok, nem szabad megijedni, szépen lassan tisztul a kép, és utána megtérül a sok befektetett idő és energia.Természetesen ezek után sem áll meg az élet, folyamatosan jönnek az újabb trendek, mérföldkövek, verziók, hibajegyek, stb.
Pénz: A szoftverfejlesztésben van pénz. Vannak fizetések is (bár ez cégtől függ 😉 ). Kevés szoftverfejlesztőt láttam porsche-val munkába járni (én egy időbe szerettem volna, de nem jött össze 🙂 ), de szerintem a legtöbben megtalálják a számításaikat.