В книжката си за екстремно програмиране, Кент Бек прави интересна аналогия между разработката на софтуер и шофирането. Тя касае спецификациите. Големият мит на софтуерното разработване гласи, че първо клиента пише спецификация, след това програмистите правят дизайн и накрая го кодят. Поставя се една посока и след това се върви по нея. Кент Бек твърди, че по-скоро прилича на шофирането – дори на най-правото шосе, ако насочите колата право напред и пуснете волана, след най-много минута-две ще сте извън пътя. След като изберат посоката, шофьорите постоянно налагат малки корекции за да не напуснат платното. Така правят и софтуерните разработчици – в процеса на разработка постоянно да правят малки корекции по изискванията, кода и дизайна. Хрумна ми как тази метафора може да бъде доразвита. Често ми се налага да обяснявам как сме завършили едноседмична работа за два дена и защо не работим така постоянно. Разстоянието между Ботегврад са взема за един час. Но ако се понаберете здраво на светофарите преди да излезете от София, профучите покрай КАТ, карате със 160км/ч на магистрала и около Зелин вземете един кратък треторазряден разбит път преди една бензиностанция, можете да намалите времето до 30 минути. Недостатъците обаче, са:
- Може да катастрофирате
- Може да ви спре КАТ
- Може да почупите амортисьори по гадни пътища
- Ще изхабите повече бензин
- Пътят ще ви изтощи – после ще ви трябва почивка
Така и ние смогваме да вкараме седмица работа в два дена – рискуваме качество, feature-и, нерви, здраве и дори шанса тотално да омажем проекта и после седмица да ни е недостатъчна да го оправим. И по тази причина караме спокойно, когато няма нужда да бързаме.
Това, което ми направи огромно впечатление в книгата е принципа You Ain’t Gonna Need It. Никога не може да предвидиш какво ще е небходимо за в бъдеще. Доста често съм срещал грандозна супер-гъвкаво-разширяема-конфигорируема система…, в която се използат 5% от възможностите и. Ако продължа в духа на шофирането, никой не си носи вериги за сняг през лятото в багажника.