2013. november 8., péntek

Mit tud a jó programozó?

Hát ezt: érdemi, tartalmi vitát folytatni, egymás személyét és véleményalkotási jogát maximálisan tiszteletben tartva, a homlokegyenest ellenkező álláspontok dacára. 

Ugyanis mi tudjuk, minden egyes munkanapunk annak megtapasztalásával telik, hogy nincs mindig, mindenben igazunk. Legnagyobb jószándékunk, tapasztalatunk, szaktudásunk dacára minden egyes nap hibákat követünk el, amelyeket meg kell találnunk, pedig emberi gondolkodásunk természetéből fakadóan "vak" ezekre. Meg kell őriznünk a hitünket saját képességeinkben akkor is, amikor ordító hibát vétünk, mert ennek ellenére általában mi vagyunk azok, akik a legnagyobb eséllyel ki tudják javítani, ha végre kiderült. Azonnal jeleznünk kell ha valami gondot okoztunk, vagy akár minimális esély van erre; őszintén feltárni és vállalni a teljes felelősséget, mert nem a konkrét probléma a lényeg, hanem a belőle leszűrhető tanulság, tapasztalat, amelyre nem csak nekünk, hanem a teljes csoportunknak szüksége van, hogy csökkentsük előfordulásának esélyét.

Mi tudjuk, hogy a legnagyobb hibát mégsem a rendszer megírásakor, megvalósítóként vétjük, hanem a tervezéskor, amikor nem gondolunk végig minden szempontot, amikor beleszeretünk saját elképzeléseinkbe, amikor személyes ügyet csinálunk abból, hogy kinek a javaslata "nyer" - vagy amikor bármilyen okból elhallgatjuk vagy rosszul fejezzük ki kétségeinket, ellenvéleményünket. Vagy vezetőként akkor, ha saját véleményünket a többiek elé helyezzük, nem ismerjük fel időben túlzott ragaszkodásunkat saját véleményünkhöz, amikor olyan légkört teremtünk amely megnehezíti mások számára az ellenvélemény megfogalmazását. 
(Mondom ezt én, a "betonfejű", irányíthatatlan megszállott... nos, ezért vagyok én elemző/tervező, nem pedig vezető.)

A rendszer képe soha nem egyikünkben jelenik meg, és nincs "legokosabb". Különböző látásmódokat, tapasztalatokat, képességeket hozunk a csapatba, amely akkor működik igazán, ha a résztvevők nem csak erényeikkel, hanem gyengéikkel is tisztában vannak (nálunk tényleg alapvetően fontos az állásinterjú "mondja el három gyenge tulajdonságát" kérdése). Ennek révén áll össze a csapat együttes képessége, amely sokkal több az egyéni tulajdonságok összességénél, és ennek révén formálódik a megvalósítandó rendszer képe. Nem valakinek a fejében, hanem az egymás önállóságát, függetlenségét tiszteletben tartó résztvevők által alkotott kör közepén lévő üres térben. Ettől lesz egy fejlesztő csapat közösség. (Újra a magyar nyelv mélységei: köz - közös - közösség!)

Természetesen a felsorolás nem kizárólagos a programozókra, inkább úgy vélem, minden valóban hatékony, feladat-orientált közösségre ez a mentalitás jellemző - csak programozóként sokkal egyértelműbb, azonnal szembetűnő a személyes hozzáállás jelentősége. 
Itt valóban ok-okozati kapcsolatot látok: ilyen mentalitás hiányában egy közösség képtelen a hatékony működésre. Ezért tartom annyira árulkodónak a kontrasztot az állam szervezetéről és működéséről mindnyájunkban élő kép (valamint az ennek a képnek testet, arcot adó Orbán Viktor) - és a "jó" közösség között. Ez (no meg a porckorong sérv megtapasztalása) adta a motivációt a nyílt levél megírására, amely (ha nem lenne nyilvánvaló), azért "nyílt", mert nem a címzettnek, hanem őt példaként felhasználva neked szól, kedves olvasó.

Nem kis büszkeséggel idézem itt erre tökéletes példaként kollégám levelét. Remélem az én válaszom is megfelel a felsorolt szempontoknak.


Kedves Lórándnak, nagyrabecsült kollégámnak

Orbán Viktornak írt nyílt leveledre szeretnék reagálni néhány pontban.

0) Mindenekelőtt: hazudnék, ha tagadnám Orbán Viktor személye iránti elfogultságomat, levelemet így ennek fényében olvasd. Úgy gondolom, korrekt dolog az, hogy ezt még a legelején leszögezem. Nem tisztem védeni őt, lehet, hogy most mégis ezt fogom elkövetni. Remélem, megjegyzéseim ennek ellenére nem erről fognak árulkodni.

1) Először is: azt gondolom, hogy Orbán Viktor felszólalásának általad követett szigorú logikai értelmezése helytelen. Abban természetesen egyetértünk, hogy egy miniszterelnöktől elvárható az, hogy megszólalásai legyenek érthetőek, világosak és logikailag helyesek. Viszont amikor mondanivalója szóképektől hemzseg (amit stilisztikai és retorikai eszközként használ, és amit egy politikustól igazán nem lehet megtagadni), akkor egész egyszerűen nem lehet szavait, mondatait a logika szigorú szemüvegén keresztül vizsgálni. Ez egész egyszerűen nem az a műfaj. Szerinted van értelme pl. egy szépirodalmi alkotást, vagy egy viccet, vagy pl. a Biblia szövegét ezen a szűrőn keresztül vizsgálni?. A használt szóképek pontos típusainak meghatározását (hasonlat, metafora, avagy metonímia) én most - laikusként - nem vállalnám be (ezt inkább végezzék el a bölcsészek).

2) Másodszor: feltehetjük a jogos kérdést, hogy akkor Orbán Viktor beszédének mi a helyes interpretációja?
Még egyszer mondom, szerintem helytelen a szavait, a tagmondatait, az azok közötti logikai összefüggéseket így analizálni, kivesézni. Úgy látszik, hogy nem érted, vagy nem akarod érteni Orbán Viktor mondanivalóját. Én sosem szerettem azt, ha egy kommunikációban a másik ember szavain lovaglunk. Ha figyelünk a másikra és nyitottak vagyunk rá, akkor a kontextusból, a mondandó ívéből és egészéből a nyelvhasználati pontatlanságok és túlegyszerűsítések ellenére úgyis lejön az üzenet.

Hadd mutassak rá most csak egy - általad érvelési hibának tartott - mondatára.
"A válság megoldásához meg kell fordulni." Ennek semmi köze a "black or white" érvelési hibához meg a szögmérőhöz, a 0, 180 fokokhoz meg végképp nincs.
Ez itt egy szókép, nem több, nem kevesebb. Egy közlekedő valakinek a képe jelenik meg, aki eltéved és nem találja a célhoz kivezető utat, talán zsákutcába kerül.
A közlekedő valaki természetesen Európa, az EU és annak országai, a zsákutca, vagy a sehova sem vezető, rossz út pedig a megtagadt keresztény múlt és identitás, valamint a valós, termelői munkát mellőző gazdasági rendszer. A visszafordulás pedig nem a 180 fokról szól, hanem az identitás és a munka újra megtalálásáról.
De ez mind-mind a használt (egyébként többszörös) szókép eleme, amivel leírja, szemlélteti a jelenséget. Nem kell belelátni se többet, se kevesebbet. Egyébként máshol olyan szóképet is használ, amibe nem csak a 0 és 180 fok fér bele (ahol azt mondja, hogy meg kell találni a jó, helyes irányba vezető utat, tehát ott nem megfordulásról vagy visszafordulásról beszél). Továbbá azt is hangsúlyozza később, hogy az idő rövidsége miatt egyszerűsítésekben kell beszélnie (ami sajnos pontatlanságokat is eredményezhet).

3) Harmadszor: azt gondolom, hogy leveled "szakmai okok" része teljesen irreleváns.
Te tényleg azt gondolod, hogy Orbán Viktor itt a jó programozók mibenlétéről, szerepéről, feladatairól beszél? Ha igen, akkor teljesen félreérted őt. A programozó itt ismét csak egy komplex szóképnek a fő eleme. Ne tulajdoníts olyat szavának, amit ő nem gondolt. A megoldás módját próbálja szemléltetni és megvilágítani a programozói munkakört felhasználó szókép eszközével.

4) Negyedszer pedig: a nyílt leveled csalódás számomra.
Csalódás, mert igazából nem értem, mi a célod vele. Komolyan mondom, tényleg nem értem. Feltételezem, hogy az lett volna, hogy egyrészt tartalmával, komolyságával eljusson a címzettig, másrészt valóban jogos, megfontolandó kritikákat mutass be Orbán Viktor személyével és munkájával kapcsolatban (nem dugom a fejem homokba, vannak ilyenek), és a valóban fontos dolgokra és problémákra irányítsd rá a figyelmet.
Ehhez képest elkezded Orbán szavait csűrni-csavarni, majd arról értekezel, hogy milyen a jó, szakértő programozó. Ez komolytalan, egyből kihullik a rostán, esélyed sincs, hogy eljuss vele a miniszterelnökig. Vagy igazából nem is célod ez? Ne haragudj, nem akarok rosszhiszemű lenni.
Te ennél sokkal tehetségesebb vagy, sokkal lényeglátóbb, sokkal komolyabb, és sokkal józanabb, érzelemmentesebb. Elpuskáztad ezt a jó lehetőséget, minden héten mégsem írhatsz nyílt levelet a miniszterelnöknek, nevetségessé válnál. Őszintén mondom, nagy csalódásként éltem meg a leveled tartalmát, sokkal színvonalasabbat, ütősebbet, hatásosabbat vártam Tőled.

Üdvözlettel: Szűcs Csaba


Kedves Csaba!

... Őszintén mondom, ennyire komoly, nyílt és egyértelmű választ eddig senkitől nem kaptam. ...

0) Mindenekelőtt: hazudnék, ha tagadnám Orbán Viktor személye iránti elfogultságomat, levelemet így ennek fényében olvasd. ...
Nos én sem tagadom a sajátomat: én egyértelmű személyes ellenszenvből indulva tartok ott, hogy képes vagyok elkülöníteni a személyét attól a szereptől, amelyet létrehozott és betölt. A korrekt vitának pont az a különleges szépsége, hogy ennek ellenére képesek vagyunk kommunikálni és kifejteni eltérő nézőpontjaink okait. Ez például szerintem elengedhetetlen akkor, amikor társadalmi problémák megoldását keressük.

1) Először is: azt gondolom, hogy Orbán Viktor felszólalásának általad követett szigorú logikai értelmezése helytelen. ... Szerinted van értelme pl. egy szépirodalmi alkotást, vagy egy viccet, vagy pl. a Biblia szövegét ezen a szűrőn keresztül vizsgálni? ...
Szerintem alapvető különbség van a Biblia és egy szépirodalmi alkotás - vagy éppen az ország vezetője és bármely "celeb" nyilatkozata között: az első társadalomszervező erőként működik, a második nem.

Igen, a Bibliát a legjobb példának tartom! Évtizedekig kellett foglalkoznom vele ahhoz, hogy leessen: a maga kontextusában zseniális társadalomszervező program (például a mai mediációs, agykontroll, stb. eszközök csak gyenge utánlövések hozzá képest). Jézus lényének teológiai értelmezéséhez semmilyen hátterem nincs - viszont állítom, hogy félelmetes, matematikai pontosságú minden egyes szava, szóképe. Az igazi értéke számomra éppen a végtelenségig szőröző elemzés révén bomlott ki. Apropó az megvan, hogy Einstein agyának különlegességét nem az elemző részben találták, hanem abban, hogy szokatlanul erős a kapcsolat a két félteke között? Azt hiszem, azért a teológusok is egyetértenek azzal, hogy a Bibliát érdemes hosszan, alaposan tanulmányozni (agy-fejlesztő eszközként használni), nem elég felületes átolvasás után "én mindent elhiszek mert Isten szava" kiáltással kezelni.

Pont ezt az igényességet hiányolom nem csak a mai politikai élet szinte minden nyilatkozójából, hanem (és ez sokkal fontosabb) a hallgatóságból is. Olyanok ezek a szóképek, mint a festés. Egy művész kezében minden részlet önálló értékkel bír, évekig lehet nézni az alkotást és mindig új szépségeket fedezünk fel, és igenis állja a precíz elemzést - más ugyanazt az ecsetet és festéket arra használja, hogy a rozsdát eltakarja, mi pedig legyintünk, hiszen azért fest, hogy ne látszódjék a rozsda. Nem mindegy viszont, hogy milyen kontextusban történik mindez. A társadalom szervezése, valós problémamegoldás szerintem az első hozzáállást kívánja.

2) Másodszor: feltehetjük a jogos kérdést, hogy akkor Orbán Viktor beszédének mi a helyes interpretációja? ... Ha figyelünk a másikra és nyitottak vagyunk rá, akkor a kontextusból, a mondandó ívéből és egészéből a nyelvhasználati pontatlanságok és túlegyszerűsítések ellenére úgyis lejön az üzenet. 
Igen, az üzenet lejön - de ezt a lehetőségekhez mérten objektív módon értékelni, nem pedig "elhinni" kell, elvégre ez határozza meg a jövőnket. Programozóként te is tudod, hogy a vélemény és a rendszerterv között az a különbség, hogy az utóbbit alaposan meg kell emészteni, és igenis minden szó értelmét pontosan definiálni kell - különben a végén oda érünk, ahová nem akartunk eljutni: egy nagy, karbantarthatatlan rendszerhez, amit írói és felhasználói egyaránt legszívesebben kidobnának, ha nem sajnálnák a befektetett időt és erőt. Ez szerintem ugyanaz a tapasztalat programozói és közéleti oldalon.

... "A válság megoldásához meg kell fordulni." Ennek semmi köze a "black or white" érvelési hibához meg a szögmérőhöz, a 0, 180 fokokhoz meg végképp nincs. Ez itt egy szókép, nem több, nem kevesebb. ...
Itt szerintem nézőpontjaink különbsége lehetetlenné teszi a részletes elemzést.
Én koherens, logikus rendszert tételezek fel Orbán Viktor szavai mögött. Amikor pedig az elmagyarázása közben szerintem szó szerint b/w hibát vét (többször, hangsúlyozva), közben (ismétlem: szerintem is helyes és fontos) szempontok mentén ezt elmossa, akkor az az én szememben tudatos csúsztatás. A hallgatóság véleményét akarja formálni, támogatókat gyűjteni ahelyett, hogy nyíltan ismertetné a koncepcióját, amelyről pontosan tudja, hogy megütközést keltene (ezt is ő mondja). Bátorkodtam ezt a tervet a tevékenysége alapján két éve megtippelni, az eltelt időben pedig nem találtam olyan lépést, amely ezt cáfolta volna.
Teljesen egyetértek veled abban, hogy ez felfogható egy helyes és hatásos politikusi nyilatkozatként. Viszont én arról beszélek, hogy a mai válságokat így képtelenség megoldani. Nem személy szerint Orbán Viktor a "hibás", hanem maga a politikus (és "nép") szerep-kép, amelyben élünk, amelyet természetesnek veszünk.

3) Harmadszor: azt gondolom, hogy leveled "szakmai okok" része teljesen irreleváns. Te tényleg azt gondolod, hogy Orbán Viktor itt a jó programozók mibenlétéről, szerepéről, feladatairól beszél? Ha igen, akkor teljesen félreérted őt. ...
Teljesen nyilvánvaló, hogy Orbán Viktor a saját szerepéről, hozzáállásáról beszél, és ehhez használja fel hasonlatként a programozó általa vélt szerepét - én is pont ezt mondom, és erre reagálok.

Te azért sejted, hogy joggal hivatkozom a saját tapasztalataimra, tudásomra a rendszeralkotás minden szintjén (követelményfeltárástól a dokumentáláson és a legkisebb implementációs részleteken túl a követésig, továbbfejlesztésig). Remélem, ezt azért lassan a munkámmal bizonyítani is tudom. Azért borult ki a bili nálam, mert az általa sugallt hozzáállás homlokegyenest ellenkezik minden egyes általam használhatónak tartott alapelvvel. Pont ugyanaz, mint amikor a Biblia "brutalitását" és a keresztes háborúkat emlegetik ezerszer, amikor kereszténységről beszélnek: jó, van ilyen, de a lényeg pont az ellenkezője.

Mutatkozzon be bármilyen módon, nem zavar - de ezt nem tudom elfogadni; pályafutásom és eredményeim révén feljogosítva érzem magam arra, hogy ennek hangot adjak. Ez számomra (talán megbocsátható) személyes ügy: kedvenc porcelánboltomban viselkedik elefántként, szakmai becsületembe gázol. Még akkor is szólnom kell, ha ezzel semmit nem érek el.

4) ... Őszintén mondom, nagy csalódásként éltem meg a leveled tartalmát, sokkal színvonalasabbat, ütősebbet, hatásosabbat vártam Tőled.
Megértem, és tényleg köszönöm, nagyon megtisztelő a számomra, hogy ezt így kertelés nélkül leírtad. Nem kis időt szántál arra, hogy egy számodra nem szimpatikus véleményt alaposan megismerj és érdemi kritikát fogalmazz meg. Az álláspontjaink nyilván sokáig eltérőek lesznek, mert jelen keretek között nehezen tudnánk elég időt fordítani a pontosításra.

A csalódás természetes. Ha például most ránézek arra, amin dolgozom, elég szánalmas és izzadságszagú küzdelem bizonyos homályos elvek mentén nagy gombócokkal (MKS, template, expression, ...), nem is csoda, hogy nem tudom érdemben elmagyarázni. Viszont én gyökeresen másként látom a fejlesztés folyamatát, a rendszerek életciklusát, a programozói szerepet, és ezek egyértelműen ezt a homályos irányt jelölik ki a számomra (amely természetesen lehet téves is, de ez csak akkor derülhet ki, ha tényleg mindent beleadok és mégsem sikerül). Ez nem csak informatikai, hanem társadalmi rendszereknél is így van, ráadásul a kettő szerintem szervesen összefügg - de csak erről órákat lehetne beszélni...

Nem tervezek új nyílt levelet (csak ha megint ilyen erős motiváció ébredne bennem), ez pedig a tőlem telhető mértékben lényegre törő, komoly, józan és érzelemmentes; néhány későbbi blog bejegyzésben a háttér kérdésekre adott válaszom is ott van.
Ütős nyilván az lenne, ha működő állapotban tudnám megmutatni azt, hogy én mit értek társadalomszervezésen és ezzel kapcsolatos programozáson (és amelyben definíció szerint nem létezik az a szerep, amelyet Orbán Viktor létrehozott magának). Sajnos az én egyetlen életem (pláne a benti munkával együtt) ehhez kevés. Nem kell mondanom: ez számomra is csalódás, mert én komolyan azt gondolom, az életünk múlik rajta, és minden egyes nappal, amit egy álomvilágban élve, rossz kérdésekkel foglalkozva töltünk, távolabb kerülünk a megoldás esélyétől. Ez a méreg, nem a cián... :-S

Hát ez van. Köszönöm, hogy írtál.