Skip to content

A fokozatok

A Clean Code fejlesztők fokozatai

Az ember nem egyszerűen csak Clean Code fejlesztő, hanem azzá válik. Ugyanis nem arról van szó, hogy be kell magolni néhány szabályt, hanem arról, hogy a CCD-értékrendszert valóban magunkévá tegyük. Ehhez időre és gyakorlásra van szükség. Ezért osztottuk a CCD-értékrendszert fokozatokra, amelyeket fejlesztőként egymás után megmászhatsz. Azonban az egész folyamatot ciklusnak tekintjük: aki minden fokozatot végigjárt, az kezdi előlről.

Minden fejlődési fokozathoz egy színt rendeltünk. És aki saját magán, mint Clean Code fejlesztőn dolgozik az egyes fokozatokon, egy CCD karkötőt hord annak jeléül, hogy meg akar birkózni vele. Nem úgy mint a budo sportokban, a szín nem az elért fokozatot mutatja, hanem azt, amelyiken dolgozunk.

Fekete 0. fokozat

Mindenkinek megvan a fekete fokozat, aki még nem indult el az úton. Egy fekete karkötő tehát csak azt jelzi, hogy érdeklődünk a Clean Code fejlesztés iránt. Akkor lehet ezt hordani, amikor az első rendes fokozathoz még nem adott az összes feltétel.

Piros 1. fokozat

A Clean Code fejlesztőhöz vezető igazi út a piros fokozattal kezdődik. A piros fokozattal kezdődik meg a gyakorlás. Ezért az csak olyan elemeit tartalmazza a CCD-értékrendszernek, melyekről egyáltalán nem lehet lemondani. A kezdést a lehető legegyszerűbbé akartuk tenni. Ezen a fokozaton tehát még nem annyira a szoftverfejlesztési elvekről van szó, hanem sokkal inkább egy a szoftverfejlesztéssel és a Clean Code fejlesztőséggel szembeni tartás felépítéséről.

Narancs 2. fokozat

Miután a piros fokozaton megteremtettük a folyamatos javulás folyamatának alapjait, a narancs fokozaton a legalapvetőbb elvek használatára kerül sor a kódolásban, és arra, hogy megszerezzük az első tapasztalatokat a produktivitásnövelés legfontosabb eszközével: az automatizált folyamatokkal. Mivel csak a helyes kód jó kód, ezért az automatizálás a helyesség ellenőrzését szolgálja. Tehát a kódnak nem egy nice to have tulajdonságáról van szó, hanem az esszenciájáról.

Sárga 3. fokozat

A sárga fokozat az automatizált teszteket vezeti be. A narancs fokozaton még a kívülről megkezdhető integrációs tesztekről van szó. Ehhez nem volt igazán szükség arra, hogy belenyúljunk a kódba. A sárga fokozattól azonban már nem leszünk meg a felület alatti tesztek nélkül. És nem csak erről van szó: a lehető legkisebb egységeket kell tesztelni, nem csak funkcionális keresztmetszeteket. Ez a kódolási gyakorlat megváltoztatását jelenti, mert különben az egyes osztályokat nem lehet elkülöníteni, tehát a használt szolgáltatások nélkül ellenőrizni. Ezért a sárga fokozathoz objektumorientált elvek is tartoznak, mert csak ezek segítségével lehetséges a tesztelendő kód leválasztása az „aljnövényzetről”.

Zöld 4. fokozat

A zöld fokozaton folytatódik az automatizálás. Ez ugyanis a kulcsa a produktivitásnak és a reakciókészségnek. A Clean Code fejlesztő csak a szoftverfejlesztés tevékenységeinek automatizálása után tud a lényegre koncentrálni: a megrendelői igények megvalósítására. Az automatizálás nélkül a fejlesztés gyakran apróságokon akad meg – ez időbe kerül. A helyességellenőrzés és a release-ek sora ilyenkor inkább büntetés, mint siker. A tesztek automatizálása után persze a gyártás van tervben. A kódot a fejlesztői környezetben tesztelni az egyik dolog. A kódot egy független gépen sikeresen fordítani és tesztelni pedig egy másik dolog. Csak így lehet megtalálni a többé-kevésbé finom függőségeket az egyes fejlesztői környezetek között. Ezt a gyakorlatot a kód strukturálásának további elvei és egy a jobb architektúrához való eszköz fűszerezi.

Kék 5. fokozat

A kék fokozattal a CCD-értékrendszer célegyenesébe kerülünk. Az automatizálást még egy lépéssel kell fokozni. A fordítás és a tesztelés után most a kiszállítás van napirenden. A kék fokozaton legfőképpen a szoftverfejlesztés olyan aspektusairól van szó, melyek túl vannak a kódon és az eszközökön: A Clean Code fejlesztők nem csak kicsiben gondoskodnak a jó struktúráról, hanem elejétől fogva nagyban is tervezik. Tehát architektúráról van szó: Mivel azonban tudatunkban van, hogy semmilyen tervezés sem tud perfekt megoldást meghatározni, ezért nem csak az architektúrához, hanem a szoftverfejlesztéshez összességében is hozzá tartozik egy megfelelő eljárási modell. Ez iteratív, és a kék fokozaton végzett munka közben ezt is be kell gyakorolni.

Fehér 6. fokozat

A fehér fokozatban folyik össze az összes elv, szabály és praktika. Ahogyan a fehér fényben minden szín benne van, úgy tartalmazza a fehér fokozat az összes többi fokozatot. A fehér fokozat szintjén egy Clean Code fejlesztő csak akkor dolgozik, ha folyamatosan az egész CCD-értékrendszert figyelembe veszi. Ez nyilvánvalóvá teszi azt is, hogy csak valóban haladó, többéves tapasztalattal rendelkező szoftverfejlesztők tudnak a fehér fokozattal dolgozni egy alkalmas környezetben.

A fokozatok jelentősége

A fokozatok nem fejeznek ki értéket. Aki a kék fokozaton dolgozik, az nem „jobb” vagy nincsen „előrébb” annál, mint aki a narancs fokozaton dolgozik. A fokozatok csak didaktikai segítőeszközök ahhoz, hogy az értékrendszer „könnyebben emészthető” legyen. Sok építőelemet egyszerűen könnyebb kis falatokban megtanulni, mint egy nagy nekifutásban.

Ezért fontos nekünk, hogy minden érdeklődő a piros fokozaton kezdjen. Didaktikai okokból ez a legjobb belépő – akkor is, ha az ember azt gondolja, hogy a napi munkában már más értékeket valósít meg. Mert a mai projektgyakorlattól függetlenül biztosan újdonságnak számít az, hogy ennyire tudatosan foglalkozzon az ember elvekkel és praktikákkal. Különösen a napi reflektálás az, ami valószínűleg még nem szokás. Jól megfelel a piros fokozat ahhoz, hogy ezt „egyszerűbb” építőelemek kontextusában gyakoroljuk.

Akkor is, ha megértjük, hogy mindenki, aki először találkozik az értékrendszerrel, ki akarja azt pipálni, amit már használ, de ez valójában jelentéktelen. A tudatos gyakorlás az értékrendszer keretei között mindig új, és még az is, aki úgy érzi, hogy „megérdemli” a fehér fokozatot, jobb, ha a piros fokozaton kezd. Éppen hogy nem „érdemről” van szó, hanem iterációkról és kis falatokról. A fokozatok kukucskáló lyukak az egészre.

Először tehát mindenki piros karkötőt rendeljen.

Továbbképzés

Az értékrendszer és az építőelemek lehet, hogy merevnek tűnnek, olyannak, mintha kőbe lennének vésve. De nem azok. Ez csak ideiglenes, addig amíg úgy gondoljuk, úgy gondolja a közösség, hogy valamit meg kell változtatni. Az eszközök és anyagok világa még sokkal inkább változásban van, melyekre az értékrendszert alkalmazni kell. Programozási nyelvek, IDE-k, framework-ök, platformok, szervertermékek változnak folyamatosan, újak kerülnek hozzájuk, régiek esnek ki. A tendencia azt mutatja, hogy egyre több és több olyan dolog lesz, amit potenciálisan ismerni, tudni kellene. Korábban elegendő volt ismerni egy programozási nyelvet és annak a standard könyvtárait. Ma ez már régen nem elegendő.

Mivel a professzionalitás azt jelenti, hogy informált döntéseket kell tudni hozni, a Clean Code fejlesztő nem ússza meg, hogy folyamatosan fejlessze magát. A szoftverfejlesztés valószínűleg az az ágazat, amelyikben a legnagyobb szükség van erre. A továbbképzés aspektusai ezért több fokozaton is megjelennek (narancs, sárga, zöld). Ezzel akarjuk világossá tenni, hogy a továbbképzés mindig téma, de szintén egy fejlődést kell követnie. 0-ról 100-ra való továbbképzés egy fokozaton belül nem lehetséges. Nem csak a szoftverfejlesztésnek van szüksége gyakorlásra, hanem a továbbképzést is meg kell tanulni.

A fokozatokon azonban különböző továbbképzési formákról van szó (olvasás, networking, publikálás). Hogy egy Clean Code fejlesztőnek mennyi időt kellene ezekre szánnia, azt nem mondják meg. Ennek az az oka, hogy ez a mi szemszögünkből nem formaspecifikus. A továbbképzés, annak formájától függetlenül, legalább a munkaidő 20%-át tehetné ki.

Igen, ezt komolyan gondoljuk. A munkaidő 20%-át tehetné ki a továbbképzés. Egy 5 napos munkahéten tehát 1 nap csak a továbbképzésé. Nem kevesebb. A Google mutatja meg, hogy ez működik: „Ez azt jelenti, hogy minden munkatársunk a munkaidejének 20 százalékát olyan projektekkel tölti, aminek nincsen közvetlen köze a feladataihoz. Ezt nem ellenőrizzük.” (Forrás (német nyelven): Interjú a Google Észak-Európáért felelős vezetőjével a Hamburger Abendblatt 2007.11.7. számában)

A 20% ennek ellenére is soknak tűnik. Csak semmi félelem, a továbbképzés nem is olyan rossz dolog annak, aki a számlát állja. Mert a továbbképzés egyáltalán nem az, mint amiket néha hisznek róla:

  • A továbbképzés nem szabadság.
  • A továbbképzés nem távollét a munkahelytől.
  • A továbbképzés nem azt jelenti, hogy a projektek számára nem áll elő haszon
  • A továbbképzés nem jelent feltétlen magas költségeket oktatások vagy szoftverek miatt

A továbbképzés legfőképp teret jelent a hibázásra. Másképpen megfogalmazva: Egy professzionális szoftverfejlesztőnek a munkaideje 20%-ban nem kellene félnie a hibáktól. Ez extrém esetben azt jelenti, hogy a projekt számára 20% közvetlen nyereség nélkül telik el. Hasonlítsuk össze a továbbképzést egy zenész gyakorlási idejével. A színpadon a művésznek elő kell adnia, lehetőleg hiba nélkül. Ahhoz, hogy a tudását szinten tartsa vagy akár javítsa, a zenésznek gyakorolnia kell. Eközben a hibák kimondottan engedélyezettek, mivel különben nem volna lehetséges a továbbfejlődés. Tehát két különböző „üzemmódra” van szükség.

Csak amikor a hibáknak szánt játéktér adott, csak akkor lehet elkezdeni azon gondolkodni, hogyan töltsük ki azt. A lehetséges tartalmakkal szemben támasztott egyetlen feltétel, hogy valami köze legyen a munkához. Aki a 20% játékterét a személyes ingatlankeresésre vagy sportra használja a cég konditermében, az nem képzi magát igazán tovább.

Példák a továbbképzés tartalmára:

  • Szakmai publikációk tanulmányozása (online/offline, blog/folyóirat/könyv/video)
  • olvasottak kipróbálása
    • technológiák
    • eljárások
    • eszközök
  • szakmai rendezvények látogatása (oktatás, konferencia, közösségi esemény)
  • saját szaktudás publikálása
    • a cég saját médiumaiban (pl. projekt-wiki)
    • nyilvános platformokon (blog, folyóirat, könyv, szakmai konferencia)

Hogy az olvasmány, kísérlet vagy publikáció közvetlen összefüggésben áll-e a projekttel, az másodrangú. Állhat, de nem kell állnia. Egy Clean Code fejlesztő képes egy technológiát a cég projektjének szempontjából evaulálni, vagy akár csak általános érdeklődésből. Ez mindkét(!) esetben hasznos a projekt számára. Egyszer közvetlenül és egyszer közvetve. Mert egy technolgiáról vagy eljárásról alkotott minden tudás, akkor is, ha a projektben nem látható a használata, szélesíti a horizontot, tapasztaltabbá tesz, és gyarapítja a lehetőségeket.

Figyelmeztetés döntéshozóknak: Az olyan fejlesztők, akik folyamatosan továbbképzik magukat értéket képviselnek. Tapasztaltabbak, innovatívabbak, rugalmasabbak. Ez az ön termékeit szolgálja.

Figyelmeztetés szoftverfejlesztőknek: Aki továbbképzi magát, értékesebbé válik. Tapasztalatra tesz szert, nincsen egy szegletbe leszegezve, nem ad támadási felületet a hype számára. Ez az „employability”-t szolgálja.

Gyakorlat

A Clean Code fejlesztővé váláshoz idő kell. Úgy gondoljuk, hogy fokozatonként legalább 21 napra van szükség. Mert 21 nap (vagy 3 hét) – ezt állítja a pszichológia – szükséges ahhoz, hogy az ember új dolgokat vagy általánosságban változásokat intergráljon az életébe.

Aki tehát az egyik Clean Code fejlesztő fokozaton dolgozik, annak a következőképpen kellene eljárnia: Minden munkanap végén a Clean Code fejlesztő reflektál arra, hogy a fokozatának elveit és az alatta lévő fokozatok elveit betartotta-e. Ha igen, akkor a karkötőt azon a karján tartja, amelyiken éppen van. Ha nem, akkor átteszi a másik karjára! Ez fontos, mert a fejlesztő a cserével tudatossá teszi, hogy jobban magáévá kell tennie az elveket, és azt is, hogy melyiket.

Amint egy fejlesztő a fokozaton 21 napot dolgozott anélkül, hogy a karkötőt áthelyezze, akkor úgy tekintheti, hogy megbirkózott ezzel a szinttel, a következőre léphet, és annak a karkötőjét veheti magára.

Természetesen nincsen formális ellenőrzés, hogy egy napon valóban minden elv betartásra került-e. Tehát minden fejlesztő saját magával és a Clean Code fejlesztői közöséggel szembeni őszinteségére bízzuk, hogy erről a legjobb tudása és lelkiismerete szerint ítélkezzen. Mivel egyik fokozat sem „jobb” vagy „rosszabb” mint a másik, így nem is érdemes csalni. Abból indulunk ki, hogy azok a fejlesztők, akik a fehér fokozattal megbirkóztak újra a piros fokozattal kezdenek. Így demonstrálják abbéli meggyőződésüket, hogy a szoftverfejlesztés folyamatos tanulás.