HTML

ITÉlet

Egy multinacionális cégnél dolgozó informatikai manager szakmai blogja. Észrevételek, tapasztalatok szoftver fejlesztésről, vezetésről, managementről és hatékonyságról itthoni és külföldi példákon keresztül. Az informatikáról másképp...

Utolsó kommentek

  • 232323: Szóval managernek jó lenni, akkor dől a nagy lé, felelősség meg számonkérés sehol. Krém. (2019.10.31. 15:24) Kirúgják-e a menedzsert ha hibázik?
  • Simon Géza: "A következő forradalmi áttörés, nagy dobás, ami megint tőzsdei felfutáshoz vezet, az nem valamilyen informatikai dolog lesz, hanem egészen más." Ha a generic AI nem informatikai, akkor igazad van.... (2018.02.19. 07:01) Az IT jövője
  • pggp: @AnyTink: Köszi, de én csak egy blog olvasó vagyok, aki jól tudja használni a keresőt ;-) (2017.10.17. 07:19) Milyen volt hazaköltözni?
  • AnyTink: @pggp: :) Gratulálok a család bővüléséhez és a sikeres 'hazatelepedéshez'. Mi most gondolkodunk a hazaköltözésen és jó olvasni mások élményéről! Köszönöm az írásod :) (2017.10.16. 18:49) Milyen volt hazaköltözni?
  • pggp: Tulajdonképpen igen, alakult valami: akocsis.com "2017 április, Dália eloször Szentesen" ;-) (2017.06.06. 21:51) Milyen volt hazaköltözni?
  • Utolsó 20

Már 15 évvel ezelőtt is komoly viták voltak arról, inkább tapasztalt vagy inkább kezdő programozókat alkalmazzunk-e, illetve hogyan osszuk fel a munkát tapasztalt és kezdő munkatársak között. Most ezt a témát fejteném ki egy kicsit bővebben.

Már 15 évvel ezelőtt is komoly viták voltak arról, inkább tapasztalt vagy inkább kezdő programozókat alkalmazzunk-e, illetve hogyan osszuk fel a munkát tapasztalt és kezdő munkatársak között. Most ezt a témát fejteném ki egy kicsit bővebben.

A témát a Hogyan válasszuk szét a fejlesztést és a támogatást? című cikk kapcsán vetette fel BPéter.

A félreértések elkerülése végett érdemes tisztázni a legelején: ez bizonyos fokig hitvita. A munkát többféleképpen lehet szervezni, több különböző modell létezik. A külső körülmények is jelentősen befolyásolhatják, hogy melyik az optimális megoldás. Ilyen például, hogy milyen a cég HR politikája (inkább piaci ár felett profikat vesznek fel, hogy inkább piaci ár alatt kezdőket), mekkora szeletet hasít ki az IT a céges kasszából (az IT-t az innováció motorjának vagy szükséges rossznak tekintik) vagy az adott iparág (nem mindegy, hogy web oldalt fejlesztünk egy biztosítónak vagy lélegeztető gépet egy korháznak).

Ugyanazon iparágon belül is többféle cég, többféle cégkultúra és többféle munkaszervezés létezik. Éppen ezért egyértelmű recept vagy azonosan mindenhol alkalmazott módszer nincs.

Megpróbálom összeszedni a legjobb gyakorlatokat, de bizonyosan sok szubjektív elem lesz. Kérek mindenkit, tekintse e cikket gondolatébresztőnek, és ne alkalmazandó szabványnak.


Mint a bevezetőben említettem, a téma egyidős az IT iparággal. Fejlesztő és fejlesztő nem ugyanolyan: ha másban nem, a tudásukba és a tapasztalati szintjükben eltérnek. Amint a szoftverfejlesztés furcsa hobbiból munkává vált, azóta keresik a vállalatvezetők, hogyan lehetne az informatikai munkát hatékonyabban szervezni és hogyan lehet a különböző feladatokat szétosztani a szakemberek között.

Három alapproblémát kell kezelni:

1) A tapasztalt fejlesztő drága

2) Nem minden feladathoz van szükség tapasztalt szakemberre

3) Más a motivációja a tapasztalt és a kezdő programozónak


Az első pont szokott a cégvezetőknek és pénzügyi vezetőknek fájni a legjobban. Elméletileg megtehetnénk, hogy az IT csapat minden tagja csupa profi, magasan képzett és mindenhez ért, és akkor a munka biztosan úgy haladna, mint a karikacsapás. Csakhogy a hatékonyságot nem kizárólag a teljesítmény (output) határozza meg, hanem a költségek is – és pazarlás lenne minden feladatra drága profit alkalmazni.

Vannak, akik megteszik, és ennek megfelelő munkakörnyezetet alakítanak ki.


A második pont tény: habár a programozás magasfokú kreatív mérnöki munka, de a programozáshoz kapcsolódik egy csomó olyan feladat, ami se nem magas fokú se nem kreatív, esetleg már nem is mérnöki. Ilyen például a tesztelés, az ügyfél kapcsolattartás, a koordináció, az oktatás, vagy a vizuális design meghatározása. Ezek mind fontos feladatok, de másfajta tudást és más tudásszintet igényelnek. Maga a programozás is szétbontható magas tudásigényű és alacsonyabb tudásigényű feladatokra.

Sőt: a nagyon tapasztalt és jó teljesítő programozókat zavarni szokta, ha alacsony tudásigényű feladatokkal kell az idejüket vesztegetni. Őket a kihívások motiválják.


És itt kapcsolódunk rögtön a harmadik problémához is: az emberek a karrierjük különböző szintjén másképp viselkednek, más feladatokkal lehet őket motiválni. Például egy kezdő programozó még elsősorban tanulni akar és tapasztalatot szerezni, illetve a saját határait próbálgatja – ezért minél több feladatot szeretne kapni. Egy tapasztalt fejlesztőt már nem maga a tanulás, hanem az önmegvalósítás és a kihívások motiválnak – kevesebb munkát szeretne, de azok legyenek komolyak. A kezdő fejlesztő alkalmazkodik és jól tanítható, a tapasztalt fejlesztő viszont már kialakult viselkedéssel/hozzáállással rendelkezik, ami nehezen változtatható.

Attól függően, hogy egy munkakör mennyiben igényli a „hozott anyagot” illetve az alkalmazkodást, lehet hogy egy fiatalabb munkatárs alkalmasabb, mint az idősebb.


A tudomány jelenlegi állása szerint a munkaszervezés alapja az, hogy szerepköröket/feladatköröket azonosítunk, illetve munkafolyamatokat építünk. A szoftverfejlesztés egy folyamat mentén történik, ahol a folyamatban különböző szerepkörben lévő munkatársak vesznek részt. Ez igaz akkor is, ha a folyamat maga nem látszik vagy ha az egyéneket a folyamatok fölé helyezzük.

Csak rajtunk áll, hogy szervezzük ezeket a folyamatokat és szerepeket. Megtehetjük például azt, hogy a munkavégzést erősen a folyamathoz kötjük, és akkor kevésbé képzett szakemberek is el tudják végezni a munkát (droid). Vagy ellenkezőleg, építhetünk arra, hogy az egyének átlátják a munkájuk értelmét, és majd megfelelő szituációban megfelelő módon döntenek (agilitás).

A szerepköröket is szervezhetjük úgy, hogy szétválasztjuk a magas tudásigényű és alacsony tudásigényű szerepeket, így meghatározva a kezdő és a tapasztalt programozó feladatkörét.

Többféle felosztás létezik. Például kis cégekre tipikusan jellemző, hogy a fejlesztési feladatot az elejétől a végéig ugyanaz az ember csinálja végig, akinek így sokoldalúnak kell lennie és mindenhez értenie. Vagy éppen ellenkezőleg, egy outsourcing szolgáltatásokra szakosodott nagyvállalatnál a fejlesztésben sok ember vesz részt, mindenki egy adott feladatra specializálódott, és mindenki csak a saját kis munkáját hajtja végre.


Ennyi bevezető után rátérnék a szoftverfejlesztés megszervezésének gyakorlati oldalára.

Amikor egy cég vagy egy szervezet szoftvert fejleszt, akkor tipikusan 4 féle funkcióra lesz szükség:

1) Fejlesztés: Új funkciók kifejlesztésére, ez az amit általában szoftverfejlesztés alatt értünk.

2) Üzemeltetés: A már kifejlesztett és átadott szoftverekben lehetnek hibák illetve lehetnek apró módosítási igények, ezért valakinek a régi kódon is dolgoznia kell.

3) Menedzsment: A fejlesztések összefogása, koordinálása, a szükséges kommunikációs feladatok elvégzése, adminisztráció.

4) Minőségbiztosítás: Tesztelés, dokumentáció, oktatás, auditok, code review, metrikák, stb.


Hova tud beilleszkedni egy kezdő programozó?

Fejlesztés: Itt nagyon jól tud működni a mester-inas páros, azaz a kezdő fejlesztő egy tapasztalt fejlesztő keze alatt dolgozik. A tapasztalt szakember egyrészt elmondja, hogyan kell programozni és mi a célravezető megoldás az adott feladatot illetően, majd ellenőrzi ennek végrehajtását (megfelelő minőségű-e a kód, követi-e a standard-ot, stb)

Üzemeltetés: Az ITIL 3-as felosztását tekintem alapnak, tehát van egy 1. szintű helyi helpdesk a triviális hibák elhárítására, van egy 2. szintű helpdesk (akik a hibák nagy részét megoldják), és van a tapasztalt 3. szint a trükkös hibák elhárítására. A kezdő fejlesztő nagyon jól alkalmazható a 2. szinten. Az üzemeltetés egyébként is erősen folyamat orientált, ami segíti egy kezdő fejlesztő beilleszkedését.

Menedzsment: Ez tipikusan az a terület, ahol nagy tapasztalat szükséges. Egy kezdő informatikus számára kevés munka van.

Minőségbiztosítás: A legtöbb esetben csak józan paraszti észre és az alapok ismeretére van szükség. Egy pályakezdő is tud ezen a területen értékes munkát végezni, feltételezve persze azt, hogy valahol a pályakezdők csapata mögött van egy profi is, akitől szükség esetén kérdeznek.


Hova érdemes rakni kezdő informatikusokat?

Szigorúan saját vélemény követezik.

Az abszolút kezdők számára (pl. gyakornok) nagyon jó indulási terület a minőségbiztosítás – itt megismerhetik a cég előírásait, folyamatait és szervezeti felépítését. Olyan ez, mint amikor a szakács-jelölt az elején krumplit pucol, a fazékhoz nem nyúl.

Kezdő informatikusokat semmiképpen ne rakjunk menedzsment területre (kivéve a menedzser asszisztens, kivétel erősíti a szabályt).

Mind az üzemeltetés, mind az új fejlesztés olyan terület, ahol egy kezdő sokat tanulhat és megfelelő kihívásokat talál. Eljutottunk a nagy kérdéshez: hova érdemes inkább kezdő és hova inkább tapasztalt fejlesztőket tenni?

Mindkét terület olyan, hogy a kezdők segítség nélkül nem fognak boldogulni (és kárt okoznak a cégnek). A fejlesztési területen szükség van egy architekt-re, aki átlátja a szoftver-architektúrát és ezért meg tudja mondani a fejlesztőknek, hogyan kell egy adott új funkciót megvalósítani a szoftver konzisztenciájának megzavarása nélkül. Az üzemeltetési területen pedig szükség van arra a bizonyos 3. szintre, a profikra, akik a trükkös hibáknak utánamennek és megoldják azokat.


Na jó, de melyik területen alkalmazhatóak a kezdők nagyobb számban, és hova kellenek a profik?

Folyamatszervezés oldaláról nézve a szoftver üzemeltetés, a hibajavítás jól megszervezhető. A hibák kategorizálhatók, a tipikus hibákra tipikus megoldások adhatók. A hibák nagy részét egy kevéssé képzett programozó is ki tudja javítani.

Sőt továbbmegyek, ez a tevékenység ki is szervezhető. A managed contract vagy performance contract azon alapul, hogy a hibák tipikusak lesznek, adott idő alatt adott módon kijavíthatóak – és ehhez nincs szükség atomfizikusra. Lesznek kivételek, de azt az 5%-nyi „egyéb” hibát majd kezeljük valahogyan.

Ezzel szemben az új fejlesztések nehezen kategorizálhatók és nehezen tipizálhatók. Lehet, hogy egy igény pár sor kód beszúrásával megvalósítható, miközben a másik igényhez a program jelentős részét át kel írni.

Ezek alapján sokan vannak, akik szerint a kezdőket rakjuk az üzemeltetésre, a profik pedig írják az új feature-ket.

A személyes véleményem ennek pont az ellenkezője. A gondolatmenet ugyanis hibás – rossz volt a nézőpont. Nem az a kérdés, hogy melyik munka sztenderdizálható, hanem az, hogy mi kell az ügyfélnek. Bárki bármit mond, de az ügyfél számára a jól működő program (azaz a hibajavítás) fontosabb, mint az új funkciók. A felhasználók azonnal lemondanának bármilyen új fejlesztési igényükről, ha cserébe a beígért és leszállított funkciók úgy működnek, ahogyan azoknak kellene.

Egy rosszul működő vagy lassú üzemeltetés óriási kárt okoz. Nem csak az ügyfélnek, hanem saját maguknak: a hibajavítás sok időt vesz el és újabb hibákat generál.

Végül pedig nézzük a kérdést a hatékonyság szempontjából. Akkor dolgozunk hatékonyan, ha minél kevesebbet kell a vezető fejlesztőnek a kezdők munkáit bogarászni, és ha minden javítás elsőre sikerül. Ha hibajavításra rakunk kezdő fejlesztőket, akkor annak ára lesz: a tapasztalt fejlesztők idejük nagy részében ezzel kell foglalkozniuk. A kezdő fejlesztő félreérti a hibát, rossz okot próbál meg kijavítani, stb. Majdnem annyit fognak a vezető fejlesztők foglalkozni ezzel, mintha ők maguk javítanák ki a hibát.

Konkrétan: amíg egy új feature fejlesztésénél elég az új design-t nagy vonalakban egyeztetni és pusztán iránymutatást adni, addig egy hiba kijavításánál minden apró részletre oda kell figyelni.

Minél inkább igyekszik a vezető fejlesztő távolabbra helyezkedni a hibajavítástól, annál több lesz a rossz kommunikáció, a félreértés és a regressziós hiba. Akkor pedig már lehet, hogy összességében jobban járunk, ha a profikat eleve erre a területre orientáljuk.


Egy kezdő programozónak milyen lehetséges karrierútjai vannak?

Az alkalmazás üzemeltetési és az új fejlesztési munka szakmai szempontból nagyon hasonló, ezért azok kvázi azonosnak tekinthetők. (Kivéve persze azt a tényt, ha valaki projekt munkára jelentkezik, akkor korábbi projekt munka előnyt jelent.)

Aki elindult a programozási vonalon, az általában nem szívesen megy minőségbiztosítási vonalra. Ennek ellenkezőjére sem láttam példát, nem tudom mennyire tipikus (pl amikor valaki tesztelőből „igazi” fejlesztő lesz).

Menedzsmenttel tapasztalt informatikusok foglalkoznak, és igaz az, hogy minőségbiztosítási területről valamiért jobbak az esélyek. Sokkal gyakrabban lesz a tesztelési vezetőből projektvezető, mint a vezető fejlesztőből.


Outsourcing és kezdő fejlesztő

Már több cikkben írtam, hogy az outsourcing káros a fejlesztői karrierútra. Az outsourcing kvázi azt jelenti, hogy a nem tudásigényes (vagyis kezdő) pozíciókat/feladatokat a vállalaton kívülre helyezik. Ez azt jelenti, hogy a vállalaton belül csakis nagy tapasztalatot igénylő pozíciók lesznek, és egy kezdő programozó egész egyszerűen nem fog találni a vállalaton belül állást. Az outsourcing-ra jellemző fluktuáció miatt túlkereslet lesz kezdő informatikusra, miközben a tapasztalatot igénylő pozíciókat fűnyíróval vágják, az ilyen szakemberekből túlkínálat lesz. Még az is előfordulhat, hogy a pályakezdő és a profi hasonló fizetést kap, a megszerzett tudás ellenére.

 

Mi hát a megoldás? Kezdő vagy inkább tapasztalt fejlesztők?

A válasz az, hogy a vegyes csapat a legjobb.

Címkék: szervezés folyamat tapasztalat kezdő fejleszto

A bejegyzés trackback címe:

https://akocsis.blog.hu/api/trackback/id/tr765211779

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

eax · http://eax.eax 2011.12.05. 19:57:51

"Minőségbiztosítás: A legtöbb esetben csak józan paraszti észre és az alapok ismeretére van szükség." Veletlenul sem. Itt van pl. a security teszteles. Sokkal tobb tudas/tapasztalat kell hozza, mint a kodolashoz.

vers 2011.12.05. 20:23:08

kezdoket alkalmazzon a halal, azt hiszik ok szartak a spanyol viaszt , aztan az elso problemanal eltaknyolnak, egy profi siman lenyom 3 kezdo programozot, ugyhogy csakis tapasztalt tobb eve kodolo mernokoket alkalmaznek , kezdot soha semmire

Zsoldos Peter · http://zsoldosp.blogspot.com 2011.12.05. 20:30:48

Valóban nehéz ebben a témában "megmondani a frankót", sok függ az egyéntől (ha buzzwordöket kellene használni, magamat devbaopsqa-nak kellene hívnom :), illetve az adott szervezettől (egy hatfős informatikai részlegnél más lesz igaz, mint egy multinál), illetve annak kultúrájától (pl. silósodjunk vagy se, milyen minőségű minőségre van szükségük, stb.). Egy dolog biztos - az is lehet, hogy itt ezen a blogon (is) olvastam - a tapasztalt programozónak a tudásmegosztás/okítás mindenképpen feladata (legfrissebb, kapcsolódó sztori a tudás visszacsempészése volt alkalmazottként: http://wrttn.in/04af1a), valamint pont a legtapasztaltabbakat nem szabad agyonterhelni - hogy legyen idejük reagálni, amikor beüt a ménkő vagy megcsúszik a projekt. Ugyanakkor az érdekes felvetés, hogy jó programozóból ritkábban lesz menedzser/projekt vezető - kíváncsi vagyok, vajon a kurrens (lean) startup hullám fog-e változtatni ezen (remélem igen!), hisz számtalan ifjú programozót ismertet meg (ld. hacker news) a termék vagy üzleti, s nem program esztétikai-technikai döntéshozatallal...

Ismeretlen_102125 2011.12.06. 09:50:44

@eax: Igaz, a biztonsági területre több tapasztalat kell, mint simán kódolni. Viszont a funkcionális tesztelésre és stresz tesztre ez már nem igaz (csak hogy mondjak két példát). @vers: Igen, ez is egy működő modell.

Zsoldos Peter · http://zsoldosp.blogspot.com 2011.12.06. 14:31:24

@akocsis Azon gondolkodom, hogy vajh hány olyan területe van az informatikának, ahol azt lehet mondani, hogy elég a józan ész, nem kell gyakorlat... Szerintem nem sok. Függetlenül attól, hogy melyik területre kerül a junior kollega, elkerülhetetlen, hogy mentorolja őt valaki tapasztaltabb. Persze valóban lehet, érdemesebb nem a nagy kockázatú feladatok elvégzését rábízni eleinte, de az terület független.

Gabez 2011.12.08. 13:34:01

"de a programozáshoz kapcsolódik egy csomó olyan feladat, ami se nem magas fokú se nem kreatív, esetleg már nem is mérnöki. Ilyen például a tesztelés,.." Súlyos tévedés, avagy hatalmas nagy öngól.

Ismeretlen_102125 2011.12.08. 15:46:42

@Zsoldos Péter: Értelemszerűen mindenkinek van főnöke, akihez fordulhat ha kérdése van. Nevezhetjük mentornak is. Csupáncsak arra akarta célozni, számos olyan informatikai feladat van, ahol nincs szükség 10 vagy 5 év tapasztalatra. @Gabez: Visszakérdeznék: hány év tapasztalattal engednél oda valakit funkcionális teszelni? Bizonyára az én megfogalmazásom volt túlságosan pongyola. A tesztelés egy nagy terület, a maga szaktudásával és technikáival. A tapasztalt tesztelő nagy kincs. Viszont nincs szükség minden tesztelési feladathoz 10 év tapasztalatra.

Zsoldos Peter · http://zsoldosp.blogspot.com 2011.12.09. 07:29:34

@akocsis: a mentor az nem feltétlen jelent főnöket nekem, sőt. Az akár még baj is talán, ha a főnök a legerősebb technikai ember a csapatban, bár nyilván ez sem általános igazság. De ez off topic. Amikor a feladatok szétválasztását említed, hogy mihez kell tapasztalat, mihez nem kell annyi, azt egy adott alkalmazáson/projekten belül gondolod vagy különböző projektek között? Ha az előbbi, akkor szvsz néha érdemes beküldeni a tapasztaltabb kollégát is, hogy dolgozzon az egyszerű feladatokon, hogy lássa, az általa fejlesztett bonyolultabb dolgok, illetve architektúra történetesen használható és segíti az egyszerűbb feladatok megoldását vagy sem (ld.: Ivory Tower vagy Non-Coding Architect). A csapatmorálnak is jót tesz, ha mindenki mindenen dolgozik - csak kulimunkát kapni nem túl motiváló, valamint a tapasztalt fejlesztőt is érdemes emlékeztetni, hogy nem a kódért meg az érdekes problémákért kapjuk a fizetést, hanem azért, hogy az üzleti igényeknek megfelelő alkalmazásokat szállítsunk.

Ismeretlen_102125 2011.12.09. 08:14:22

@Zsoldos Péter: Semmiképpen nem szabad úgy osztani a munkát, hogy a kulimunka a junior-é, az érdekes meló pedig a senior-é. Inkább azt kell nézni, hogy mi az, amit egy kezdő is el tud végezni, illetve mi az, amit egy kis tanulásal/segítséggel el tud (és amiből tanul). A kódolás nem biztos, hogy jó példa, mondok mást: fejlesztési folyamat audit. Idős kolléga szerepe az, hogy meghatározza, milyennek kell lenni a fejlesztési folyamatnak, milyen dokumentumokat/evidenciákat kell előállítani, és ehez készít egy checklist-et. A fiatal kolléga a checklist és a folyamatleírás alapján végigmegy a projekteken, és megnézni, hogy megfelelnek-e, mi van meg és mi nincs. Ha valamit nem ért, akkor kérdez az idősebbtől. Itt nem a kulimunka lett leadva, hanem más a szerepük (fiatal = auditor, idős = tanácsadó).

Gabez 2011.12.09. 12:29:31

@akocsis: "Visszakérdeznék: hány év tapasztalattal engednél oda valakit funkcionális teszelni? Bizonyára az én megfogalmazásom volt túlságosan pongyola. A tesztelés egy nagy terület, a maga szaktudásával és technikáival. A tapasztalt tesztelő nagy kincs. Viszont nincs szükség minden tesztelési feladathoz 10 év tapasztalatra." Attól függ, mit jelent itt a "funkcionális tesztelés". Ha egy UI-t kell nyomogatni előre leírt lépések szerint, akkor természetesen egy diák is megfelel. Ha egy jól skálázható és terhelhető teszt keretrendszert kell összerakni, aminek van 50 interface-e a termék felé és implementálni az első mondjuk 100 TC-t, aztán az egészet betenni valami automatizált környeztbe és összeállítani a regressziós setupot, akkor azért már gondolkodóba kell esni, hogy ki is csinálja. Vagy inkább kik. 10 év tapasztalatra nincs szükség mindenhez, de ez igaz bármilyen területre. A devekre is...ha egy textfieldet kell feltenni egy weblapra, ahhoz kit ültetnél le? Gondolom, ahhoz sem kell 10 év. De még fél se. Nagyon szemet szúróak a "nem kreatív, nem mérnöki" jelzőid, nem tudom, milyen tapasztalat vezetett ehhez. Ahol én dolgoztam, ott a teszt kód (nem a unit, hanem a funkcionális!) nagyobb volt, mint a termékkód. Persze lehetne optimalizálni, de a termékkódot is...szóval aki azt mondja, hogy a tesztelés az bagatell munka, az vagy a földbe dugja a fejét, vagy eddig még nem dolgozott igazán komoly tesztelői csapattal. Az általánosítás sokszor használt eszköz a nagyot mondásra, de súlyos hiba is egyben.

cipo 2011.12.09. 12:45:04

@vers: Nah persze. Már ha milliárdos a cég és rengeteg kidobandó pénze van. Ez kb. olyan mintha takarítónak 3 diplomást alkalmaznánk milla/hó bérért, mert Ő biztos nem hagy piszkot. Jó PM, jó vezetési fejlesztő nagyon jól ki tudja osztani a feladatokat, hogy a kezdő megír pl egy FAQ-ot amivel nem kell egy seniornak tökölni. Miközben a Senior meg hardcore SQL-eket gyárt...amin elhasalna a kezdő. Ez most két kiragadott példa, de legalább nem kell 1 év múlva a cég felét elbocsátani, mert elfogyott a pénz, mert minden munkára drága embert alkalmazunk.

Tündi · http://www.7veszteseg.blog.hu 2011.12.10. 09:38:43

Biztosan az a baj, hogy én nem vagyok IT szakember, csak egy átlagos szoftverfelhasználó (és néha mérgelődő a nem működő progik miatt :), de azt írod, hogy "Konkrétan: amíg egy új feature fejlesztésénél elég az új design-t nagy vonalakban egyeztetni és pusztán iránymutatást adni, addig egy hiba kijavításánál minden apró részletre oda kell figyelni.", és én ezt nem értem. Lehet, hogy az a baj, hogy az új feature-ök fejlesztésénél csak a design van nagy vonalakban egyeztetve a részletek megbeszélése helyett, és aztán ez miatt kell utána annyi hibát kijavítani? Nem lenne egyszerűbb elsőre jó kódot gyártani? Egyébként igazad van, én, mint átlagfelhasználó azt mondom, először működjön jól az alapprogi, és utána legyenek benne új csillivilli funkciók. Az a halálom, amikor valami nem működik, de már kapok még három menüpontot meg egy tök új kinézetet, mert az fontos (csak éppen nem nekem).

Ismeretlen_18109 2011.12.10. 21:44:22

@Tündi: Elsőre jó kódot írni nem éri meg. Nincs rá fizetőképes kereslet. Még a repülőgépek szoftvereiben is van hiba, sőt bizonyos szoftvermodulok hibás működését is ki lehet küszöbölni. De azért érdemes törekedni arra, hogy minél jobb szoftvert készítsünk. Vannak erre módszerek és technológiák. Vannak egyszerű hibák, amiket egy kezdő is ki tud javítani. Meg vannak hibák, amik javításánál nagyon észnél kell lenni, nehogy a javítás elrontson valami mást és bizony előfordul hogy a tökéletes megoldás helyett az elfogadható megoldás a nyerő. Ehhez kell sokéves tapasztalat.

Zsoldos Peter · http://zsoldosp.blogspot.com 2011.12.12. 09:19:15

@Jeep: anno mikor a code reviewt vezettük be (a blogomon bővebben részletezem, ha érdekel), akkor mondtam, hogy azért nézünk meg minden checkint, mert nem tudjuk, hogy mikor szúrunk el valamit. Ha előre meg tudnám mondani, hogy melyik commit lesz hibás, akkor nem committolnám be. Ugyanez áll a bugfixekre is szvsz. @akocsis: a példa, amit hoztál, az nekem pont "kulimunkának" tűnik. A tapasztalt megcsinálja a kreatív részt, a junior pedig megkapja a gondolkodásmentes végrehajtást. Ha engem így kezelnek, valószínűnek tartom, hogy nem sokáig maradok azon a helyen kezdőként. Mikor programozni kezdtem, sokkal inkább matekóra jellege volt a dolognak - együtt megoldottunk egy feladatot s megtanultam, mi a mögöttes logika, s utána önállón dolgoztam, majd a "házi feladatomat" ellenőrizték. S a házi feladat, a matekleckével ellentétben nem egy gondolkodásmentes behelyettesítés volt. De a tapasztalt kollégák is hasonló feladatokon dolgoztak, hisz az üzleti szoftverek jelentős része nem izgalmas, PhD-t igénylő szuperalgoritmus. De a te példádnál maradva: mivel (szvsz) az utólagos dokumentumgyártás mindig csak "tudjuk-le-kötelező" jellegű, így sok haszna nincs. Én ott a kezdő-tapasztalt minőségbiztosító munkafelosztást úgy képzelném el, hogy kidolgozzák együtt a stratégiát, aztán elkezdik ezt elmagyarázni (s eladni) az érintett csoportoknak, hogy miért jó ez, ill. hogy tudják hatékonyan dokumentálni maguk ezeket a dolgokat - azaz a csapat feladata lesz a minőségbiztosítás, s a külső csoport csak szakmai konzulens szerepet tölt be (ha jól emlékszem, Toyota eredetű megelőző minőségbiztosítás is). Az első egy-két előadást a tapasztalt ember tarthatná, aztán egyet tarthatna a junior kolléga, ami után visszajelzést-értékelést kapna az idősebbtől, s onnantól már mindketten egyedül tartanának előadásokat a többi csoportnak.

Viktor 2011.12.12. 11:49:02

Lehet, hogy nem fogom ezt az egészet, de szerintem nem kezdő vs tapasztalt programozó a kérdés. Szerintem azt kell nézni ( a sok más mellett persze), hogy mennyire tehetséges. Ha tehetséges, akkor érdemes levadászni. A feladat elosztásnál meg szerintem nem érdemes kőbe vésett szabályokat alkalmazni. Mindenki csinálja azt, ami a cégnek is jó és amivel motivált is lesz. Illetve erre a legegyszerűbb, ha a pull menedzsmentet alkalmazzuk. Érjük el, hogy az emberek jelentkezzenek a feladatra és ne nekünk kelljen kiosztani. A kezdő, nem kezdő csak annyiban számít, hogy egy kezdő nálam rosszabb eséllyel indul, mert nagyobb valószínűséggel szórom ki a válogatásnál. Na jó, legyünk konkrétak, szinte biztos, hogy kiszórom :-) Viszont ha mégis eljut az interjúig valahogy, akkor már hasonlóak az esélyei ( ha csak az a "hátránya", hogy kezdő ). Mivel tapasztalt emberekből van nálunk elég, nyugodtan felvehetek egy kezdőt. Ennek az az előnye, hogy más, új szemmel néz bizonyos dolgokra és kevesebb fizetéssel beéri. De az is igaz, hogy nem vagyok tulajdonos, egy tulajdonos más szemmel láthatja a dolgokat, amikor a saját pénzéről van szó. De remélem, hogy nagyon másképp nem döntenék mivel tudom, hogy egy jó szakember és egy rossz szakember között kb 10-es szorzó van hatékonyságban és egy jó mondjuk csak 2* annyit kér, mint a rossz, még mindig 5-ször jobban járok vele.

eax · http://eax.eax 2011.12.12. 19:30:20

"hány év tapasztalattal engednél oda valakit funkcionális teszelni?" Weblapot vagy vasuti fekrendszert? :)

Ismeretlen_102125 2011.12.13. 21:39:53

A kérdés jogos :) A vasúti fékrendszeren kívül is vannak olyan szakterületek, ahol tapasztalatra van szükség (például kasszarendszerek vagy kártyaterminálok tesztelése, vagy a korábban emlegetett IT biztonság). Igazából ez a téma (tapasztalt fejlesztő/tesztelő vs kezdő) inkább általános, mintsem konkrét. És nagyon függ a körülményektől. Bármit is mondanék, biztosan jönne valaki, aki ahol éppen dolgozik ott egészen másként van. Mint ahogy a bevezetőben írtam: ez csak gondolatébresztő. Nagyjából azt tartalmazza, amit én eddig láttam. Valaki más pedig mást látott.
süti beállítások módosítása