Tarkvaaraarenduses on vana ja levinud arusaam, et suured probleemid või ülesanded on vaja lahutada väiksemateks ja hoomatavateks tükkideks. Enamasti on kõik sellega nõus, kuid selle põhimõtte rakendamine igapäevases töös on oluliselt raskem kui teoorias. Väljamõeldud näidisolukorras on lihtne eesmärk väiksemateks alamosadeks jagada. Kui aga vaadata päriselu probleeme, siis tihti on need isegi hoomamatult keerulised ning hõlmavad endas palju teadmatust. Seega muudatused puudutavad tihti paljusid erinevaid alamkomponente ning raske on otsustada, millised oleksid loogilised vahesammud, mille ajal süsteem saaks jätkata katkestusteta töötamist. Seega on mugav liikuda tagasi mõtte juurde, et korraga oleks mõistlik kõik vajalikud muudatused ära teha ja mitte kulutada aega vahepealsete stabiilsete sammude loomisele. Et kogu muudatus on ühe või mõne arendaja peas, ning see formuleerub lõpuks ilusaks lahenduseks tarkvarakoodis.
Suure ülesande korraga lahendamisel tekkib aga tegelikult palju lisaprobleeme. Kui kogu muudatus on üksikute inimeste peas, siis igasugused töökatkestused võivad mõjuda väga halvasti lõpptulemusele. Võidakse unustatakse planeeritud lahenduskäik ning jätkamine võib olla väga keeruline. Peale pikemat pausi on võimalik, et tuleb ka loobuda kogu varem tehtud tööst ja alustada täiesti algusest.
Kasutades pideva tarne tehnikat (Continuous Delivery) võib tekkida lisaprobleem, et kuidas suur ja keeruline lõpplahendus korraga toodangusse paigaldada nii, et erinevate moodulite vahel ei tekkiks paigalduse ajal versioonikonflikte. Muudatused võiksid alati olla küll tagasiühilduvad aga tihti on keeruliste muudatuste korral seda oluliselt raskem teha. Väiksemate stabiilsete vahesammude korral tekivad ka loogilised pausid, mille ajal saab tarkvara ohutult toodangusse paigaldada.
Suure ülesande korraga lahendamisel on veel lisaks oht, et peale lõpliku lahendamist selgub väga põhimõtteline probleem, mille tõttu tuleb loobuda kogu lahendusest. Sama oht on ka alamprobleeme järjest lahendades, kuid tõenäosus on suurem, et protsessi varasemas faasis märkab ka keegi teine võimalikke probleeme, ning kogu lahenduskäigu saab ümber mõelda.
Kõike seda teades jätkavad ilmselt kõik arendajad aegajalt liiga suurte probleemide korraga lahendamist.
- Arutelu samal teemal:
- - Software Engineering Radio. Episood 465