Erre a kérdésre több tipikus választ is szoktunk kapni:
- A fejlesztő már eleve jól kódol, illetve az ő kötelessége a fejlesztések tesztelése
- A tesztelő feladata a minőség előállítása
- Az agilis működés önmagában biztosítja a jó minőségű fejlesztést
A fenti válaszok a valóságban is előfordulnak, nem a képzelet szülte. Mindegyiknek van igazságtartalma, azért nézzünk ezek mélyére is:
"A fejlesztő már eleve jól kódol, illetve az ő kötelessége a fejlesztések tesztelése"
A kijelentés tartalma tetszetős és kívánatos. Néhány bökkenő az állítással kapcsolatban:
- A fejlesztő teszi bele a kódba a hibát, nem szándékosan, hanem tipikusan félreértések miatt, nem megfelelő specifikáció miatt illetve a természetes hibázást se hagyjuk ki
"A tesztelő feladata a minőség előállítása"
Van aki úgy gondolja, hogy a tesztelő majd úgy is kijavítja a hibás kódot, arra kevésbé kell figyelni, sokkal fontosabb, hogy működjön valami határidőre. Továbbá jó esetben a tesztelő csak megtalálja a hibás részt, attól a kód még nem feltétlenül lesz jó minőségű csak kevesebb hibát tartalmaz (kevés hiba ≠ jó minőségű szoftver).
"Az agilis működés önmagában biztosítja a jó minőségű fejlesztést"
Talán ez az egyik legnagyobb tévhit az agilis működéssel kapcsolatban. Az én értelmezésemben az agilis működés az eszköztárával segíti a jobb minőség elérését, de azokat az adott környezetre illesztev szükséges implementálni (na ez az igazi kihívás).
Akkor mégis ki biztosítja a kód minőségét?
A válaszhoz nézzük meg, hogy hogyan csinálják a nagyok a jó minőségű fejlesztést (ők sem csinálnak sokszor jó minőségét, csak hatékony a kódkészítésük sicc.)
A legnagyobb fejlesztő cégek - úgy, mint pl. Google, Microsoft, Spotify, Amazon, Facebook - egyben közösek: tudatos és hangsúlyos a quality menedzsmentjük. Önálló (és független), magasan képzett munkatársakat (és folyamatosan képzik) alkalmaznak, tudatosan alakítják ki a módszertanukat, eszközök garmadáját használják.
Ahhoz hogy valóban jó legyen a kódminőség, az alábbiakra van szükség tapasztalataim szerint:
- Valódi QA szakértelem (ez is komoly szakma, legalább annyira összetett, mint a többi IT szakma)
- Integráltan használjuk az eszközöket
- Minden egyes, a fejlesztésben résztvevő kolléga tudja, hogy mi az ő felelőssége a minőséget tekintve
- A cég fejlesztési kultúrája minőség orientált
- Folyamatosan nyomon követett, visszamért és továbbfejlesztett a QA módszertan
- Független a QA, nem a fejlesztés által vezérelt (vigyázat, érdekütközés)
Azaz tudatos építkezés és tanulás örökös körforgása.