A roppant hangzatos cím után, miről is fogok beszélni? A programozás a legtöbb embertől olyannnyira távol helyezkedik el, amennyire csak lehet. Ha azt mondom valakinek mitől lesz valaki jó szervizes, vagy festő, vannak ötleteik, de hogyan lehetne megjósolni, hogy a kiből lehet jó programozó? Erről fogok egy kicsit elmélkedni.
A szoftver, mint termék
Az igazság az, hogy már maga a szoftver is számos kérdést felvet. Ha megvettem egy fűnyírót, a pénz nagy részét azért fizetem, mert van egy előállítási költsége, ami kis részben humán erőforrás (bérköltség), nagy részben viszont az alapanyag. Mikor azt mondjuk, hogy “a márkát fizetem meg”, akkor többnyire arra gondolunk, hogy fűnyírót gyártani elég sokan tudnak, olyat viszont, ami jól működik és nem megy tönkre 1 éven belül kevesen. Ezért olyan márkát próbálunk választani, amibe még nem rendült meg a bizalmunk. Na de mi van a szoftverrel?
A szoftver teljesen más tészta. Először is alapanyag költsége nincs (de legalábbis elenyésző). Az előállíási költségének legnagyobb része igazából a bérköltség. Ráadásul mivel nem kellenek hozzá speciális szerszámok, elméletben bárki tudna szoftvert fejleszteni. Tehát itt szinte minden esetben “a márkát fizetem” eset áll fenn. Szóval elmondható, hogy a szoftvernél a minőség kulcskérdés. Az ára pedig abszolút relatív, nagyon nehezen becsülhető, vagy felmérhető.
A szoftverfejlesztő szakma
A fent felvázoltaknak számos következménye van. Az egyik, hogy a programozó szakma is gyökeresen különbözik az átlag szakmáktól. Többnyire az olyan szakmáknál, ahol előállítanak valamit nagy felelősség van a szakembereken. Gyakran méreg drága alapanyagokkal dolgoznak, amit ha tönkre tesznek irdatlan kár keletkezik. A programozóknál viszont ott a mágikus “undo button”. Ha valamit nagyon elrontottak, visszavonás. Esetleg kárba ment pár napi munkája, de optimális esetben ennél sokkal nagyobb kárt nem okoz.
Minél régebb óta készítek szoftvereket, annál jobban értékelem a visszavonás lehetőségét. Ugyanis ez nem kényszerít arra, hogy hiba nélkül dolgozzak. Ha elkezdenék egy képet festeni, elrontanám, kezdhetném előlről. És ha azon a képen annyit dolgoznék, mint egy átlagos szoftveren, akkor ez igencsak lélekromboló volna. Tehát itt lehet hibázni, akkor mégis miért a maximalizmus?
Miért a maximalizmus?
A maximalizmus a való életben nem éppen a legpozitívabb tulajdonság. Rengeteg csalódással jár. Lehetünk mi akármilyen precízek, az élet nem így működik. Bizony mindig is lesznek olyan esetek, mikor egyszerűen csak el kell fogadjuk, hogy valami nem sikerült úgy, mint máskor (vagy másoknak). Kijavítani pedig nincs lehetőségünk. Viszont ahogy említettem, a szoftverfejlesztésben ez az állapot elég ritkán következik be.
Abból, hogy a hibák kijavítása többnyire csak humán erőforrást igényel, egy nagyon fontos következmény származik: a humánunkra van bízva minden. Persze itt nem azokra a hibákra gondolok, amik “végzetesek” lennének, mivel azt mindenki kijavítja, inkább az esztétikai hibákról. Tehát az, hogy egy feladatot tisztességesen végzünk el vagy csak elvégzünk, többnyire a saját lelkünkre van bízva.
Megpróbálom ezt is szemléltetni egy példával: tegyük fel, hogy építek egy házat. Miközben lelkesen falazok, az utolsó falnál rájövök, hogy egy technikával sokkal szebb és jobb eredményt érhetek el. A ház esetében többnyire nem áll módomban újra felhúzni a falakat, hanem annyiban hagyom a dolgot, azzal a tudattal, hogy “legközelebb majd az egészet így csinálom”. Egy szoftver esetében viszont többnyire módomban állna javítani a hibát, ha szeretném.
Összefoglalva
Persze számos tulajdonság segíthet abban, hogy jó programozóvá válhassunk. Azonban véleményem szerint a legfontosabb egy fajta lelkiismeretesség, igényesség a saját munkánkal szemben, amit akár maximalizmusnak is nevezhetünk. Nagyon könnyű valamit félbehagyni, vagy a trehány munkát elfedni, azonban végeredményben ez mindig minősíthetetlenül rossz szoftverekhez vezet, amik fabatkát sem érnek, hiszen ahogy a bevezetőben írtam: szoftvert bárki tudna fejleszteni.