A "B" tipusu programozok egyszerubb emberek. Mindenkeppen joval rugalmasabbak. Mondhatni arany kozeput az "A" es a kesobb emlitett "C" tipusu programozok kozott. Kelloen igenyesek ahhoz, hogy olvashato es karbantarthato kodot irjanak, de "hasznaljak az eszuket". Csak akkor alkalmaznak patterneket, ha patterneket kell alkalmazni. Tipikusan ok azok a fejlesztok, akik peldaul 10-bol 9x teljesen MVC-nek megfeleloen valositanak meg valamit, 10. alkalommal pedig total megkerulik az MVC-t, mert eppen olyan feladatuk van, aminek megvalositasara az MVC pattern vagy az altaluk hasznalt MVC framework teljesen alkalmatlan (pl. egy SQL utasitassal tobb sor INSERT optimalisan). Altalaban nem annyira muveltek, mint az "A" tipusu programozok, de hasznaljak az eszuket, es jobban epitenek sajat logikajukra.
Hatranyuk, hogy a munkaeropiac legtobbszor pont olyan embert keres, aki vagy "A" (illik a megfontolt csapatba), vagy "C" (nem sz*rozik) tipusu programozo. Ok ugymond az "atmenet", akiknek el kell adniuk magukat vagy "A" vagy "C" tipusu programozokent igenynek megfeleloen. Masik hatranyuk, hogy bar sokszor logikus es kovetkezetes a kodjuk, sokszor a rajtuk levo stressz mennyisegen mulik kodjuk minosege. Ha raernek, ugyanugy kepesek orakat vitatkozni egy 10 soros es amugy mukodo fuggvenyen, ha meg kapkodnak, akkor meg olyan kodot irnak, hogy sikitofraszt kap, aki csak hozzanyul kesobb, es a kesobb emlitett "C" tipusu fejlesztokkel ellentetben nicns is "nagy rutinjuk" a "kapkodva kodolasban". Sokszor nagyot lehet csalodni bennuk egy pillanat alatt, mikor evekig jo kodernek hitted. Jellemzo parbeszed veluk tobb ev egyuttdolgozas utan: "Te, miert generalsz a modelben olyan javascript kodot, ami html class-t ad egy DOM-hoz? Te nem szoktal ilyet csinalni en meg ket oraja ezt debuggolom" "Bocs, kapkodtam amikor ezt kellett release-elni".
Hibaik ritkan annyira komplexek, mint az "A" tipusu fejlesztoke, es ritkan annyira primitivek mint a "C" tipusu fejlesztoke, de mindketto hibatipus naluk is elofordul, es a "ketto kozottinek mondhato" hibak sem ritkabbak naluk. Sokan kozuluk azonban okosan tesztelnek, hasznalva az eszuket. Erteni szoktak a unit test-eles trukkjeit is, de ok szoktak a leghangosabban hangsulyozni, hogy vannak bizonyos feladatok, amikhez a unit test abszolut nem nevezheto megoldasnak. Erdekesseg meg, hogy neha ok maguk is visitanak a sajat kodjuktol, mikor megtudjak, hogy egesz mas lett vegul a feladat.
Emellett a "B" tipusu fejlesztok a legrugalmasabbak, sosem mondjak, hogy "ebben ezt nem lehet megirni", esetleg felvazoljak, hogy "nem erdemes", de megcsinaljak ha kell. Legtobbszor gyorsan megertheto es felfoghato a kodjuk, es rajuk a legjellemzobb, hogy egy bonyolultabb fuggveny kozepen is lesz magyarazo komment, nem csak a fuggveny fejleceben, mondvan "ott kotelezo". Ha elmennek szabadsagra is jo esellyel lesz, aki pillanatok alatt tudja folytatni kodjaik 90%-at, emellett altalaban kepesek par percben megmagyarazni, mit miert csinaltak ugy, ahogy csinaltak.
Szeretik az egyszeru de nagyszeru megoldasokat, kedvenc technologiaik sokszor "egyfuggvenyes" github projektek, par soros scriptek, egyszerubb fuggvenykonyvtarak.
A "C" tipusu programozok a leglenyegretorobbek. Ok tudjak a leginkabb betartani a hataridoket. Kepesek 1 honap alatt 3 olyan projektet befejezni specifikacionak megfeleloen (es veletlenul sem jobban), amin "A" tipusu programozok tizei ulnenek honapokig. Altalaban uj projektekre teszik oket, es ajanlgatjak egymasnak oket startupok tulajdonosai, mert "valakinek el kell kezdeni epitenie a kodot", es ugye fontos, hogy egy ilyen kod minel hamarabb mukodjon. Egy okos "C" tipusu fejleszto eseteben szinte "zsenirol" beszelhetunk szemelyeben, de ugyanakkor a "C" tipusu fejlesztoknel a legnagyobb az az arany, akiket nem az eszukert szeretunk. De a hataridoket a kevesbe ertelmes egyedeik is tartjak, lehet hogy a projekt vegul egy 8000 soros spagetti kod lesz egyetlen forrasfajlban tele copy-paste-elt kodduplikacioval, de elkeszul.
Ugyanakkor ok vegtelenul tiszteletlenek. Sokszor muveletlenek is. Nem hajlandok ertelmezni pattern doksikat, ha van egy cegnel kodolasi konvencio, semmit nem tartanak be belole. Csak a sajat hibaikbol es peldakodokbol hajlandok tanulni, es elzavarjak a fenebe azokat, akik tul bonyolult technologiat akarnanak letolni a torkukon.
Ezenfelul ok a felelosek a gyengen tipusos nyelvek letezeseert. A PHPistikek is az o halmazuk kevesbe tapasztalt peldanyai (meg nem tanultak a sajat hibaikbol), es ok azok, akiknel egy fuggveny visszateresi erteke akar 4 kulonbozo tipusu is lehet - a nullt bele sem szamitva. Mar ha hasznalnak fuggvenyt egyaltalan. Ha mar a PHPistikeket ebbe a halmazba tettuk, erdemes megemliteni, hogy a "script kiddie"-k is idesorolhatok, mar ha ez a halmaz nem a script kiddie definicioja onmagaban.
Van, hogy egesz eletukben nem csinalnak absztrakt osztalyt, interface-t, es singletont is csak tizevente egyszer. De ugyanakkor az o REST-like (veletlenul sem RESTful) API-juk mindig valahogy tizedannyi ido alatt kesz van valami csoda folytan, es tokeletesen teszi a dolgat.
Barmilyen meglepo is az eddig leirtak utan, sokszor nagyon is hajlandoak ujat tanulni. De ehhez az kell, hogy olyan legyen a tanitott technoliga altal megoldott problema, amit mar lattak, vagy konnyen el tudnak kepzelni. Es ez sem eleg onmagaban: keves bemutatkozassal es rizsaval rogton valami latvanyosat kell mutatnia ennek az uj technologianak. Kedvenc technologiaik azok a kozepes komplexitasu technologiak tartoznak altalaban, amiknek kesobb jovoje is lesz. Szinte ok a hirnokei annak, hogy mi fog elterjedni ebben a nagy IT dzsungelben. Webes peldakon maradva a composer peldaul tipikus peldaja annak, amiket "C" tipusu fejlesztok irtak "C" tipusu fejlesztoknek, persze az evek soran kinotte magat, leven ahogy varhato volt, elterjedt. Mas weboldalak scrape-eleseben is mindenkeppen ok a leghatekonyabb csoport, a curl parametereit altalaban kivulrol tudjak, valamint a html feldolgozassal kapcsolatos libek kozul is kulon erzekuk van kivalasztani a leghatekonyabbat.
Hibaik ritkan bonyolultak, leven ritkan dolgoznak bonyolultabb logikan vagy kis reszfeladatokra nem lebonthato feladatokon. Ugyanakkor a kodjaik rendszeresen allnak meg bent hagyott "echo 'reached'; exit;"-ek es egyeb trivialis "manualis debug" uzenetek miatt. Rajuk a legjellemzobb, hogy egy text editort szeretnek hasznalni IDE helyett, az automatikus debuggerre pedig csak annyit mondanak: "overkill" vagy "overengineering". Emellett az o kezeik kozul kerulnek ki a legsurubben - halistennek altalaban rovid, de - write-only kodreszletek es kommentalatlan tobb soros regexpek is. Ha a kodjukban nem talalod meg 5 perc alatt a hibat, jobb is, ha visszaadod a koltonek, eselyed sincs. De az a jellemzobb, hogy megtalalod. Jellemzo reakciod meg, mikor a kodjukba futsz: "Miert igy? En ezt total maskepp csinaltam volna" (de legalabb ekkor megertetted, mit es hogy valositott meg). Jellemzo, hogy 2-3 oran at gyakorlatilag refaktoralod egy kodreszletet szebbre, pedig valojaban az elejen a feladat csak egy 5 perces bugfixnek indult.
Ezekbol is kovetkezik, hogy egyedul dolgozva a projekten a leghatekonyabbak, esetleg kis meretu csapatban. De ugyanakkor elonyuk, hogy pontosan tudjak, hogy az ido penz, ok pazaroljak a legkevesbe a megrendelo penzet "oradij" cimszo alatt, es nem csinalnak csak ugy masik 10 fejlesztonek munkat. A legproblemasabb kodreszeik is aranylag keves munkaoraval lecserelhetoek, refaktoralhatoak. Sot, barmilyen hihetetlen, altalaban erre szukseg sincs, mert a kodjuk evekkel kesobb is teszi a dolgat. Es ami meg az idot illeti, az "A" tipusu fejlesztokkel ellentetben azt is felfogjak, hogy nem eppen lesz fejlesztotarsuknak a legjobb elfoglaltsaga egy 600 soros konyvet elolvasni, es altalaban tudnak konstruktivabb tanacsot adni a feladatra koncentralva.
Es barhogy is nezem, mindharom programozo szemelyisegtipusra szukseg van. Eppen ezert igyekeztem igazsagosan bemutatni elonyeiket es hatranyaikat, remelem sikerult.
- carlcolt blogja
- A hozzászóláshoz be kell jelentkezni
- 2409 megtekintés
Hozzászólások
uhh, nice...
--
"Van olyan ember sok az oldalon, akinek a kommentjeinek 100%-a zaj, oket miert nem kommentelitek ilyen lelkesen?" (hrgy84)
- A hozzászóláshoz be kell jelentkezni
uhh, megrohantak az emlékek :)
szép összefoglaló
- A hozzászóláshoz be kell jelentkezni
Amikor új dolgot fejlesztek, akkor CBA, de nem mindig jutok el az A-ig. :)
- A hozzászóláshoz be kell jelentkezni
Igen, sokan olyankor mondanak fel vagy adjak at "A"-s csapatnak a projektet, amikor mar muszaj "A" fejlesztoket szerezni a karbantartashoz, es mar kezdenek kijonni az o modszereiknek az elonyei. ;)
- A hozzászóláshoz be kell jelentkezni
Nálam a leggyorsabb módszer kb ez szokott lenni:
Gondoljuk végig -> rajzoljuk le (UI + logika) -> hányjuk össze -> pucoljuk ki -> gondoljuk újra -> egyszerűsítés -> egyszerűsítés -> pucoljuk ki -> pucoljuk ki -> pucoljuk ki
Legtöbbször már a hányjuk össze után örül a felhasználó és a kód már válasz a problémára/feladatra, így nem feltétlen érzem, hogy lenne más dolgom. :) Később amikor a lelkiismeret nem hagy és unatkozom, akkor pucolom a kódot.
Szeretek kódolni, de nem csak önmagáért a kódolásért, hanem azért, mert a művem pénzt termel. Elsősorban a gazdasági probléma megoldása érdekel ami maga generálja a pénzt, másod- harmadsorban a tökéletesített kód. Még a kódot az UI is megelőzi nálam. Karbantarthatósággal nincs gondom, mert egyedül dolgozom.
- A hozzászóláshoz be kell jelentkezni
"Karbantarthatósággal nincs gondom, mert egyedül dolgozom."
És a memóriád is tökéletes? Mert nekem azért előfordul, hogy valamin amit régebben csináltam kell gondolkodnom egy kicsit.
- A hozzászóláshoz be kell jelentkezni
Az nálam is. Ilyenkor refactoring az első, majd jöhet minden más. :)
- A hozzászóláshoz be kell jelentkezni
"Van, hogy egesz eletukben nem csinalnak absztrakt osztalyt"
Ne is mond, héten dissassemblyztem egy .NET-es kódot, találtam benne egy ilyet:
protected virtual Foo Bar(/* 30 random paraméter, ami helyett egy osztály kellett volna átadni a paramétereket szépen strukturáltan */)
{
throw new RandomSajatException("Nem használható metódus az Asdf osztályban!");
}
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Ez a kod se jellemzo pedig a "C" tipusu fejlesztore. Tobbseguk nem is akarja erteni, mire jo a pure virtual fuggveny. Ez valoszinuleg egy kapkodo vagy egy kevesbe tehetseges/kevesbe tapasztalt "B" tipusu fejleszto muve lehetett elso ranezesre. ;)
- A hozzászóláshoz be kell jelentkezni
Igazából ez egy abstract method akart lenni egy ősosztályban. Legalábbis szeretett volna az lenni.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Na végére értem. Egy "C" típusú kóder kódjait örököltem meg, mikor ide jöttem 4 évvel ezelőtt. Miután egyéb okok miatt kirúgták a nyakamba szakadt az összes szarja. A legkevésbé pazarlással nagyon nem tudok egyetérteni. Te is leírod, időnként a bennhagyott, antipattern hadsereg miatt ezercsillió helyen állhat meg a monstrum, amit alkottak, ráadásul mivel minden épp annyira van összetákolva, hogy működjön, szeret kártyavárként leomlani minden.
Szóval egy pillanatig nem érzem olcsónak azt, hogy folyamatosan tákolja a szarját és olyan "problémákat" old meg, ami egy normális megoldás használata esetén elő sem fordult volna a büdös életben. Csak néhány példa:
- iconv használata helyett str_replace("\0", "", $content) + egyedi str_replace-k a két byte-s karakterekre (UCS16/UNICODE xml forrás)
- regexpel XML feldolgozás (aztán néhol nem volt egy-egy mező emiatt elcsúsztak teljesen az indexek)
- CSV/TSV feldolgozás explode()-al (opcionálisan kombinálva az első pontban említettekkel)
- XML írás kézzel, escapelésre szarás magasban.
- tranzakciók használata értelmetlenül (pl. logolás DB-be, tranzakción belül, rollback esetén ugrik a log. Aztán meg csodálkozás, hogy "de hát nem született hibaüzenet").
- cron/windows időzítő helyett percenként időzíett PHP script if ($ora == N && $perc == M) feltételekkel, majd file_get_contents-el távoli HTTP kérés, mert "utálom a parancssort" és "egyszerűbb így böngészőből tesztelni). A honnan hova irányt már meg sem merem mondani.
- egymásra futások nem kezelése, majd később egy elvben sem működő megoldás erőltetése.
- rsync helyett SMB két linuxos szerver között, majd PHP scriptből szinkron fenntartása
- escapelések, validálások a legkülönfélébb módon hanyagolva vagy teljesen egyedileg megoldva, mikor ott lenne rá egy egy soros, atombiztos kész megoldás.
- OOP használata. Az OOP minimális megértése nélkül. Pl. konstruktorban van benne egy teljes oldal generálásáért felelős kód. Hja az osztályban csak a konstruktor van.
- Egy osztály használata egyszerre collectionnak és adatosztálynak is.
- Verziókezelés teljes mellőzése
- Éles rendszeren fejlesztés
- Éles adatbázison fejlesztés
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Az utolso 3-at vegyuk le, mert azt projektmenedzsment szinten kene kieroltetni, valamint a sajat hibajabol is megtanulta velhetoen azota, hogy ezt miert is kene.
Azokat leszamitva: ezek tipikusan azok a hibak, amiknel mindenki fogja a fejet, mikor meglatja. Valoban kezdobb "C" tipusu fejlesztok muvei, haladobb "C" tipusu fejlesztok is csak neznek hogy mire gondolhatott a kolto.
De ugyanakkor a tobbseguk azert par ora vagy max 2-3 nap alatt teljesen atirhato es megkerulheto kod volt, meg ha azt az idot vegig is karomkodtad, ahogy en is szoktam, ha ilyen kodba futok. (Oke, a db tranzakcios kivetel, azt tenyleg szar lehetett debuggolni). Lenyeg: barmennyire is szarul csinalta, aranylag gyorsan volt otleted ket karomkodas kozt, hogy hogy fog ez megis mukodni. Es ez az ami egy nagyobb tervezesi hibanal mar nem lenne igy.
- A hozzászóláshoz be kell jelentkezni
Nekem kb. fél évembe telt kipucolni mindent. Többnyire azzal indítottam, hogy kibasztam az egészet a picsába, mikor hozzáláttam valamihez és megírtam jellemzően normálisan B style-ban.
Illetve sok kis gányolás le lett cserélve egy egységes platformra. Több munka volt, de azóta lehet azzal foglalkozni, hogy hogyan előre és nem azzal, hogy hogyan tartsuk életben a szart. (Az alatt a kb. 4 hónap alatt, mialatt ott volt, az ideje 90%-a azzal ment el. Lehet, hogy gyorsan megvan, de hogy utána horribilis időt igényel a karbantartás, az is hótziher).
--
Projektmanagement: mivel one man army volt ameddig én nem kerültem oda másodiknak, emiatt az ő felelőssége volt. Mivelhogy nem szoftverház vagyunk, hanem kereskedőcég. Most is hárman vagyunk fejlesztők + külsős üzemeltetés. Maga cégcsoport meg kb. 30 fő.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Minden programnyelv javascript, csak erősen akarni kell.
-------------
No commit - no comment.
DevMeme, fejlesztői pillanatok...
- A hozzászóláshoz be kell jelentkezni
Pedig már úgy éreztem, csak nekem áll sokszor keresztbe a szemem egy JS kódtól.
- A hozzászóláshoz be kell jelentkezni
Legjobb, amikor a callback-en belül van egy valami, ami megint callback, majd azon belül is muszáj egy callback... DEE...!
-------------
No commit - no comment.
DevMeme, fejlesztői pillanatok...
- A hozzászóláshoz be kell jelentkezni
Eddig azt hittem, minden programnyelv FORTRAN, csak erősen akarni kell.
- A hozzászóláshoz be kell jelentkezni
Az idők változnak.
PHP-ba is egyre több JS féle moslékság jön befelé. Úgy néz ki ez a jövő :'(
-------------
No commit - no comment.
DevMeme, fejlesztői pillanatok...
- A hozzászóláshoz be kell jelentkezni
Ez azért valahol zseniális. :)
- A hozzászóláshoz be kell jelentkezni
Te melyik csoportba sorolod magad?
En a B tabort erositem/gyengitem. Erdekessegkent, szerintem a funkcionalis programozast elonyben reszesitok tipikusan B-k: a C-sek tul hujek/onfejuek ehhez, az A meg keptelen kimaszni a maga asta godorbol, olyan melyen benne van (hacsak nem toltott hosszu idot a felsooktatasban a megfelelo projekteken / kutatasban, de ilyen nem sok van, aki megis, abbol szuletnek a hires mondasok ("A monad is just a monoid in the category of endofunctors, what's the problem?")).
Na es a lenyeg: termeszetesen 10 fele programozo letezik... :-P
- A hozzászóláshoz be kell jelentkezni
Az OP szerint 11
- A hozzászóláshoz be kell jelentkezni
Haspókember 3-as számrendszert használt.
- A hozzászóláshoz be kell jelentkezni
Vagy csak nem tud szamolni.
(vo: Hanyfele matematikus letezik? Harom - aki tud szamolni, es aki nem...)
- A hozzászóláshoz be kell jelentkezni
A
- A hozzászóláshoz be kell jelentkezni
A magam részéről mindhárom vagy egyik sem. Projektje válogatja.
- A hozzászóláshoz be kell jelentkezni
+1
A projektre szánt pénz és határidő függvénye, hogy melyik vagyok én :)
Pont egy hete volt egy olyan ügyfelem, aki hétfőn szólt, hogy neki keddre komplett webshop kell.
Hát ilyenkor mit lehet tenni? WordPress + Woocommerce + free template kicsit átszínezve, egy használati doksi írása hozzá oszt csókolom.
Ma pedig olyan ügyfélkel konzultáltam, akihez személyesen mentem el megtárgyalni a részleteket. Nem akar világmegváltást azonnal, így nem is egy WP + pár plugin lesz a weboldala.
Tehát én olyan programozó vagyok, amilyenné az ügyfél tesz!
- A hozzászóláshoz be kell jelentkezni
En meg arra jottem ra, hogy nekem nem kell versenyeznem a "Weboldal 50000 ftbol Pistike es Tarsa Kft"-kkel. Ha olyan ugyfellel talalkozom, akinek eleg egy gyorsan osszekattintott CMS weboldal es ez lenne az elso, annak megmondom: "figyelj, en sokmillio useres rendszereken dolgozom/dolgoztam, kicsit pazarlas volna ha azon dolgoznek, hogy 100 latogatodnak bekuldhess egy ket cikket, meg hetente 2x fizessenek a webshopodbol. Neked is aranytalanul draga lenne, foleg ha nem gondolkodsz nagyobban, hidd el". Altalaban ezutan van meg valaki, akit tudok javasolni magam helyett.
De nem csak a CMS-es rendszereket kerulom. Mas altal folytatott kodnal van egy masik szuro is: ssh jelszot es verziokezelo url-t kerek. Ja, hogy cpaneles webftp only szarra fizettel elo, mert sporoltal/ olyan sysadminod volt aki ennyire se tudott rabeszelni? Hat rajtam mar nem fogsz fillereskedni, ezt el nem vallalom.
Es ami kodot betettek egy verziokezelobe, az mar altalaban valamennyire hasznalhato szokott lenni, akkor is, ha nagyon spagetti kod es http path-ban van a mysql jelszo, altalaban lehet vele valamit csinalni.
- A hozzászóláshoz be kell jelentkezni
Én B-re törekszem, a főnököm C-t vár, a senior vezető fejlesztőnk pedig A-t követel.
Van is néha vitánk rendesen :D
-------------
No commit - no comment.
DevMeme, fejlesztői pillanatok...
- A hozzászóláshoz be kell jelentkezni
Éleslátásra vall ez az írás. Te magad melyik vagy? :-)
Én B-nek szeretem gondolni magam. A C osztályba csak azért nem lógok át, mert én gyűlölöm a kódduplikációt, a DRY koncepció a mániám. Annyira, hogy képes vagyok 4 absztart ősosztályt csinálni, hogy 1 sor duplikációját megússzam. Egyszer tényleg csináltam egy ilyet, de a végén a commit log átnézése után úgy döntöttem, hogy visszavonom, nem teszem be a közösbe.
- A hozzászóláshoz be kell jelentkezni
Hat ezalapjan en teged A-ba tennelek. De En B es C kozt erzem magam feluton, B fele hajolva.
- A hozzászóláshoz be kell jelentkezni
Bekapcsolhatnad a lapodon a kapcsolat fulet.
- A hozzászóláshoz be kell jelentkezni
Valoban jo lenne, ha bekapcsolnam, csak ahhoz kene olyan email cim, amivel nem leakelne rolam tul sok info a profession adatbazisaba, es mindemelle emlekeznek is a jelszavara (ellentetben azzal, amelyikrol regszitraltam, kulon vicces lehet, ha trey azota mar kuldott ra mailt, hogy viselkedjek, tobb eve nem jelentkeztem be oda ;) ). Hetvegeig megoldom ezt a problemat, csak ma nem nagyon lesz levegom, ideirni is utoljara ebedidoben tudtam.
- A hozzászóláshoz be kell jelentkezni
Tenyleg bekapcsolhattam volna... :(
- A hozzászóláshoz be kell jelentkezni
Ha csak pusztán véletlenül volt közös az a kód és te mégis öröklést használtál volna, akkor nem vagy A. Ha tényleg specializált esetek voltak (4 szinten kétlem) és te mégse használtál öröklődést, akkor nem vagy A. És még képbe jön az LSP is. Te valószínűleg nem vagy A. :)
- A hozzászóláshoz be kell jelentkezni
A 4 szint túlzás volt :-). A lényeg az, hogy 1-2 sor duplikálásának megspórolásához kellett volna gyártani egy rakás boilerplate kódot, amire a végén azt mondtam, hogy egye fene marad minden a régiben. Amúgy biztosan nem vagyok A. Mindhárom kategóriában vannak rám jellemző jegyek, de egyikbe sem tudnám 100%-ig besorolni magam.
- A hozzászóláshoz be kell jelentkezni
Mindezt lehet még súlyosbítani azzal, ha az adott fejlesztők nem alkalmazottak, hanem fix idejű szerződéssel projektre lettek felvéve, hogy segítsék a cégnél dolgozó csapatot. Különösen kártékonyak, mert egységnyi időn belül több projektet tudnak tönkretenni.
1. Contractor, A mint Architect. Projekt felénél lelép, rendszerint új projektre. Projekt fejlesztés hirtelen lelassul, aki képes átlátni az AdapterFactoryFactoryRegistry interface-ek (és rendszerint egyetlen implementációja) labirintusát, az csak fogja a fejét, hogy hogy fog ez a vacak élesben egyáltalán teljesíteni. Projekt csúszik, lehet hogy behal. Tervezési hiányosságokat kéne javítani implementálás helyett, persze nincsenek iterációk, mert nincs is már architect. Ki a hülye? A B típusú programozó. Architect megálmodott egy fantasztikus architektúrát, de a tehetségtelen barmok nélküle már nem tudták befejezni.
2. C típusú contractorok csapatokban képesek sáska módjára letarolni egy kódbázist és teleszórni rejtett bugokkal, majd odébbálnak, hátrahagyva a szart, szívjon aki ott melózik.
Kedvenc példányom: Backend rendszer nem publikus admin felületét kell GWT-ben megírni. Előre ki van kötve, hogy csak Firefoxon fog működni, IE-t felejtse el mindenki. Emberünk csak IE-t hajlandó használni fejlesztéshez. Azon kívül hogy a GWT tooling IE-hez gyenge volt akkor, IE specifikus bugokkal múlatta az időt. Mikor sehogy sem tudta IE-ben disabledre állítani egy gomb státuszát, létrehozott a mi forrásfánkban egy com.google.gwt.whatever.Button osztályt, copy-paste-el belerakta az eredeti forrást és átírta hogy működjön IE-ben. Távozása után hetekkel GWT upgrade, belső API-k módosultak, a gombok szép csendben elkezdtek látszólag random módon nem működni. A legszebb az egészben, hogy jól dokumentált módon lehetett GWT-ben adott böngészőre szabott saját implementációkkal kicserélni a beépített dolgokat, ezt elmondtam neki, dokumentációra linkekkel specifikáltam a feladatot. Aztán persze velem morgolódtak hogy ezt mégis hogy, aztán meg jogosan: mégis hogy mehetett ez át a code review-n.
- A hozzászóláshoz be kell jelentkezni
Annyival egészíteném ki, hogy szerintem egy folytonos átmenet van C-ből A-ba.
A-ról két dolog jutott az eszembe, az egyik hogy van egy ilyen mondás, miután egy fejlesztő megismeri a design patterneket, mindenre azt akar használni. A valóságban a GOF-t se úgy kell olvasni mint szentírást, a benne vázolt patterneket adoptálni kell a konkrét feladatra, ami általában szükségtelen részek elhagyásával jár. A másik, hogy én is hajlamos vagyok túltervezni dolgokat, ilyenkor sűrűn mormolom hogy YAGNI, az általában segít. :)
C-ről pedig az jut eszembe, hogy az write once, write it again* kódot eredményez. Valójában nem a fejlesztés tempója gyors, csak gyorsan kerül látványos eredmény szállításra. Később a karbantartási időn ezt az előnyt nagyon gyorsan el lehet veszíteni. Vagy az összegyúrt sárlabda egyben tartása lesz egyre nehezebb, vagy folyamatosan refaktorálni kell, míg végül egy jól karbantartható szoftver lesz belőle. Persze ez a megrendelőt annyira nem fogja zavarni, ha cserébe a szoftver sokkal hamarabb elkezdi termelni a pénzt számára. Csak ott valós probléma ez, ahol nem lehet rossz minőségű kódot munkára fogni. Az ügyféllel viszont fontos megértetni, hogy ettől a szoftver nem lesz olcsóbban / gyorsabban kész.
*: van egy hasonló kifejezés, de azt nem találtam, ezt most találtam ki
- A hozzászóláshoz be kell jelentkezni
[moved]
- A hozzászóláshoz be kell jelentkezni