HTML

asdf

A kódolás szintjei

2018.05.11. 16:52 tvk

Egy futó projektünkkel kapcsolatban elgondolkodtam rajta, hogy a programozásnak milyen szintjei vannak. Szerintem ilyenek:

level 1
Amikor nagyjából értjük a használt eszközöket. pl. a programozási nyelv elemeit. Ha a kódot egyszer láttuk jól működni akkor megoldottnak látjuk a feladatot, eldobjuk az egeret és a billentyűzetet. Automatizált tesztelés nincs, meg kézi tesztelés sem nagyon. Nincs ezzel semmi baj. Nagyházikat kettesért, hobbiprojekteket kezdetben össze lehet így dobni. Igazi gyárban még talán prototípus projekteknek is neki lehet így indulni azzal a felkiáltással, hogy majd közben megtanuljuk a dolgokat. Viszont helyén kell kezelni az elvárásokat a prototípussal szemben, és nem szabad elfelejteni tényleg tanulni. Ha tényleg ez történik, magától eljön a második szint.

level 2
Amikor már tényleg értjük a használt eszközöket. Nem elégszünk meg vele, ha a kódot egyszer láttuk jól működni, hanem tudni akarjuk, hogy az alapkoncepciók amiket használunk helyesek. Pl. a működés valóban tranzakcionális, egy számítás más értékekkel is helyes, hibakezelés rendben van, stb stb. Ehhez nem feltétlenül kell unit teszteket írni, de esetleg kód review (már ha megvan hozzá a kultúra meg a hajlandóság) segíthet. A kódnak sem kell túlzottan letisztultnak lennie, de azért jó ha úgy nagyjából rendben van. Beadandókhoz jó jegyért, rövid egyszemélyes projektekhez amiknek már tétje is van megfelelő lehet ez a szint.

Ha valakivel pair programozok és háromszor egymás után nem az történik amire számítunk ("nem azt csinálja a program amit kéne"), akkor tudom hogy valószínűleg nem értjük a használt eszközöket, nem vagyunk a második szinten. Ilyenkor már általában nem megyek bele egy következő próbálkozásba, hanem azt javaslom hogy fékezzünk, lapozzuk fel a könyvet (vagy a Google-t), gondolkodjunk.

level 3
Amikor már előre gondolkodunk arról, hogy ezt a kódot később is használni fogjuk, a kód nemcsak működik, hanem karbantartható is. Az az alap hogy értjük az eszközöket és biztosak vagyunk benne hogy a koncepcióink működnek. De itt már arra is számítani kell, hogy a kódot valami olyan ember fogja módosítani olyan módon ahogy nem kéne. Itt már a nyelvi elemek és a kommentek nem mindig segítenek, de a unit tesztek jól jönnek. A kódnak is tisztának és érthetőnek kell lenni. A hibakeresés szerintem kb kétszer annyi okosságot igényel mint magának a kódnak a megírása, tehát ha valaki mindent belead a kód megírásakor és valami über komplexet alkot, az bajban lesz amikor egy hibát kell megkeresnie és javítania, feltehetőleg nyomás alatt. Tehát ezen a szinten egyszerűségre kell törekedni.

Az előző szinthez hasonlóan, ha egy módosításhoz túl sokat kell tökölni, háromszor nem jön be a változtatás amit csinálunk, akkor ismét a fékezést javaslom. Nézzük meg mit csinál a kód, mire gondolt a szerző. Esetleg refaktoroljunk, írjunk új unit teszteket. Ha nem lehet unit teszteket csinálni, tegyük a kódot tesztelhetővé.

Szóval ezek a szintek vannak az én önkényes értelmezésemben.

Nincs olyan, hogy egy szoftverfejlesztő általánosan ezen meg azon a szinten van, mert ez projektenként változik. Egyes hobbiprojektjeimen -ahol éppen egy olyan nyelvet tanulok amit eddig nem ismertem- én is az 1-es szinten mozgok.
Viszont egy projekten belül nem árt ha minden fejlesztő ugyanazon a szinten van. Tehát egy éles gyári projekten nem jó, ha bizonyos fejlesztők a 3-as szintre törekednek valaki pedig az 1-es szinten gányol. Ilyenkor ki kell kényszeríteni kód review-ekkel, pair programozással, tudásmegosztással az azonos szintet.

 

Kódoljatok, csá!

Szólj hozzá!

Címkék: architect agile

A bejegyzés trackback címe:

https://kodzaj.blog.hu/api/trackback/id/tr3713908364

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.

Nincsenek hozzászólások.