Korábbi munkahelyemen abban a szerencsés helyzetben lehetett részem, hogy egyazon terméket fejleszthettem a kezdetektől 3 éven keresztül. A termék “vállalati” alkalmazás, ami nagymegrendelőknek (több tízezres felhasználószámnak) készült. Talán másoknak ez egy csapásnak tűnhet, hogy miért kell évekig ugyanazt a szoftvert túrni, én azonban ezen a projekten tanultam eddig a legtöbbet. Egy kisebb méretű (6-7 fős) szoftverfejlesztői csapattal dolgoztunk, a feladatom a bitfaragás mellett az ügyfélelvárások és az üzleti folyamatok megértése is volt, tehát üzleti elemzőként is funkcionáltam.
Pár év fejlesztés során a rendszerbe folyamatosan kerültek be az újabbnál újabb funkciók, amely egy iszonyúan komplex (vagy bonyolult?) rendszert eredményezett. Nagyon jól értettem az üzleti elvárásokat, azt is értettem, hogy ezek hátterében mi húzódik meg, és nagyon jól értettem a kódot, mert magam is aktívan fejlesztettem. Egy idő után az ügyfél által elvárt újabb funkciók komoly dilemmát jelentettek a szoftver továbbfejlesztésében. Ha lefejlesztjük az újabb funkciót, akkor az még bonyolultabbá teszi az eddigi modellt, amellyel az üzleti környezetet próbáltuk leképezni.
Legtöbbször ilyenkor egy fejlesztő cég próbálja lepattintja magáról a továbbfejlesztési (változáskezelési) igényeket, mert már nem képes kezelni a kódban fellépő komplexitást. Természetszerűleg mi is törekedtünk arra, hogy minél egyszerűbb megoldást vállaljunk be, de még így is sokszor nehézségekbe ütköztünk. Ekkor vetődött fel a gondolat:
Miért ne töröljünk régi kódokat, kódrészleteket, miért ne egyszerűsítsük őket, ha tudjuk, hogy nincs rájuk szükség?
Ha ezt nem tesszük, egyre csak lassítjuk a munkánkat, mert az új funkciók implementálása és a jelentkező hibák javítása egyre tovább tart.
Continue reading »