Mostanság elég nagy hiány van szoftverfejlesztőkből (kéne még olyan húszezer), épp ezért sok multi indít képzést, illetve különböző intézmények indítanak gyorstalpaló pár hónapos tanfolyamokat boldog-boldogtalannak. Mindenkiből, aki be tudja kapcsolni a számítógépet szoftverfejlesztőt akarnak faragni, egyrészt azért, mert ha a business beindul tényleg kell az emberi erőforrás az igények kiszolgálásához, másrészt a multinak egy számot is fel kell mutatni, hogy egy évben ennyi embert sikerült felvenniük, ezzel is mutatva, hogy ők bizony nőnek-növekednek. Ezek a képzések szépek és jók, DE… sajnos erre a szakmára is igaz, hogy kellenek készségek, szoftverfejlesztőnek is születni kell, mert nem arról van szó, hogy ülsz a gép előtt egész nap, és fosod magadból a kódot. Ha ez lenne, akkor tényleg elég lenne indiaiakat és kínaiakat alkalmazni bérelt pötyögőként (igen, e két nemzet programozóival szemben vannak előítéleteim, de ezeknek az összefoglalása nem is külön blogposzt lehetne, hanem külön blog). Tény, hogy vannak fejleszthető képességek, de ha nincs meg hozzá ez az elvont, tényleg absztrakt dolgokban megnyilvánuló gondolkodásmód, akkor az illetőből csak egy programozó Uwe Boll lesz, aki után jobb sorsra érdemes, tehetséges fejlesztők nagy mennyiségű mérnökóráját fogja lefoglalni a toldozgatás-foldozgatás. Elárulom, minden fejlesztő számára van egy olyan név a verziókezelő history-ában, amit ha meglát, utána megváltásnak érzi a harakirit. Meg igazából a kanalas gyilkosságot is…
Milyen képességekre és lelkiállapotra is van szüksége egy jó szoftverfejlesztőnek?
Nulladik pont a szakmai elhivatottság lenne, de ez minden szakmára ugyanúgy vonatkozik. Nem hiszem, hogy különösebben ki kéne fejtenem, az, hogy itt el kell hinned, hogy te valami fontosat teszel, szeretned amit csinálsz, törekedned kell a minőségi munkára és a lehető legjobb megoldásra. Ugyanígy nulladik a tehetség, valamint a képesség a csapatmunkára. Figyelem, a háromból csak maximum kettőt lehet választani egy személyhez!
Ezeken kívül még mi kell?
1. Lustaság
A jó szoftverfejlesztőt onnan ismered fel, hogy nagyon lusta. Ezen nem azt értem, hogy nem végzi el a munkát, ennél jóval összetettebb dologról van szó. Problémát oldunk meg, és minél egyszerűbb egy megoldás, annál jobb, mások által jobban felfogható. Lássuk be, a legegyszerűbb megoldással mindig a leglustább emberek állnak elő. Mindegy, csak minél kevesebbet kelljen rajta dolgozni. Ebben az a poén, hogy általában amíg a lusta fejlesztők egy óra alatt eljutnak az egyszerű megoldásig, egy indiai írt ezer sor kódot. A te egyszerű megoldásod pedig öt sor kapcsos zárójellel, rendes formázással. 🙂
2. Kreativitás
Szorosan összefügg a lustasággal, mert a lusta megoldás általában kreatív is. A kettő igazából egymást segíti: mivel lusta vagy, azért kezdesz el a kreatív, rövid megoldáson gondolkozni, hogy keveset kelljen gépelni. Ez a két képesség nagy hasznodra van akkor is, amikor magyarázkodsz a managernek, hogy miért nem vagy még kész.
3. Kitartás és türelem
Lássuk be egy-két feladat nem triviális, főleg a hibajavítás. Van egy bug, persze speciális körülmények között jön elő csak, természetesen legacy kódban (=olyan régi kód, amit még az időszámításunk előtt írtak, és azóta nem nyúlunk hozzá csak ha muszáj, mert 1. aki a kódot írta, valószínűleg be volt nyomva 2. működik, senki sem tudja hogyan és miért 3. mert ennyire senki sem perverz). Nekem legnagyobb ilyen kis bughuntingom három napig tartott, full legacy, C-ben írt förmedvény, egyetlen kis pointer volt rosszul beállítva a bufferban. Amikor új adatot írtunk a bufferba, kétszer lett hozzáadva az új adat hossza az addigi hosszhoz, tehát csak akkor jött elő hiba, amikor az adat mérete nagyobb volt, mint a buffer méretének fele. Maga a hiba itt tehát egyértelmű, de amíg megtaláltam, hogy hol adjuk hozzá duplán a hosszt, addig nagyjából 3-4 hibát fedeztem fel ezalatt a kódban, és miután sikerült kijavítani, kiderült, hogy két új ticketet kapásból lehetett volna írni mert minden szar volt nem teljesen úgy működött ahogy kellett volna. Szóval az ilyenhez néha kötélidegek kellenek, de ez fejleszthető képesség, és sokat számít hozzá a tapasztalat és az adott rendszer ismerete.
4. Precizitás
Hiába teszel meg bármit, lesz hiba a kódodban, mert nincs hibátlan kód, de azért az extrém esetekre felkészülhetsz és kezelheted. Sajnos a userek általában egy horda majomhoz hasonlóak, és nem úgy fogják használni a rendszert, ahogy kéne, de bizonyos esetekre fel lehet készülni, és fel is kell, mert annál kevesebbszer fog felhívni az indiai/kínai support (és ezt/őket senki sem szereti). Ez az a képesség, ami a leginkább tanulható, egy idő múlva felismered a megoldások hibáit és ha gyökérbiztos kódot nem is írsz, de a leggyakoribb hibákra felkészülhetsz.
5. A flow
Vannak kódolós napok és nem kódolós napok. Előbbinél csak ülsz, és tényleg olyan mintha elvesztél volna, gyönyörű megoldásaid vannak, élvezed a pötyögést, gyorsan jár az agyad, imádod amit csinálsz, és elsőre tökéletesen fut a kód, máskor a CTRL+C kombó leütése is világfájdalmat okoz, amikor lenyomod hozzá a CÍTRL+V akkor meg úgy érezd, hogy elsírod magad, semmi sem megy, morci vagy és nem működik, egész nap a problémán kattogsz, aztán lefekvéskor álmatlanul forgolódsz, majd bekattan a megoldás. Kellemetlen, ha időre kell kódolni, vagy valami sürgősen kell, de el kell fogadni, hogy a kódolás lelkiállapot-függő is, van amikor megy van amikor hiába erőlteted.
Mivel egészítenétek ki a listát? Mi volt az eddigi legkeményebb bugotok?
Valamint kávé, kávé, kávé!!!
Kommentek
Kommenteléshez kérlek, jelentkezz be: