Spec Debt-ஐ நீங்கள் சரிசெய்தால் அது மறைந்துவிடாது. அது இடமாற்றம் செய்யப்படுகிறது.
ஒரு பிரச்சனையைச் சரிசெய்வது எப்போதும் அதைத் தீர்த்துவிடாது. சில நேரங்களில், நீங்கள் அதை வேறு இடத்திற்குத் தள்ளுகிறீர்கள் அவ்வளவுதான்.
சமீபத்தில், Spec Debt-ஐக் கண்டறிய ஒரு திட்டத்தை (project) நான் ஆய்வு செய்தேன். அறிவுறுத்தல்களில் உள்ள இடைவெளிகளே Spec Debt ஆகும்; இவை பிழைகளுக்கோ (bugs) அல்லது தவறான AI செயல்பாடுகளுக்கோ வழிவகுக்கும். நான் ஏழு குறிப்பிட்ட விஷயங்களைச் சரிசெய்தேன். சரிசெய்த பிறகு, சோதனைகள் (tests) வெற்றிகரமாக முடிந்தன. அனைத்தும் சரியாகத் தெரிந்தன.
ஆனால் அந்தத் கடன் மறைந்துவிடவில்லை. அது feature files-லிருந்து step definitions-க்கு இடமாற்றம் செய்யப்பட்டது.
இந்த விஷயங்களைச் சரிசெய்ததன் மூலம் நான் கற்றுக்கொண்டவை:
- துல்லியம் முக்கியம். "பதில் விரைவாக உள்ளது" என்று சொல்வதற்குப் பதிலாக, "ஆர்டர் சமர்ப்பிக்கப்பட்ட 12 வினாடிகளுக்குள் பதில் கிடைக்கிறது" என்று சொல்லுங்கள். இது நேரத்தைக் கணக்கிட ஒரு அடிப்படையை வழங்குகிறது.
- தெளிவற்ற தன்மையைத் தவிர்க்கவும். "2 முறை மீண்டும் முயற்சிக்கப்பட்டது" என்பது தெளிவற்றது. அதற்கு மொத்தம் 2 முயற்சிகளா அல்லது 3 முயற்சிகளா? உறுதியாக இருக்க, "மொத்தம் 2-க்கும் அதிகப்படியான கட்டணக் கோரிக்கைகள் இல்லை" என்று பயன்படுத்துங்கள்.
- செயல்படும் முறையைக் குறிப்பிடவும். "சரக்கு விடுவிக்கப்படுகிறது" (the inventory is released) என்று சொல்வது மழுப்பலானது. "inventory service ஆனது item X-க்கான release request-ஐப் பெறுகிறது" என்று தெளிவாகக் குறிப்பிடவும்.
- தவறான உத்தரவாதங்களை நீக்கவும். ஒரு அம்சம் (feature) இன்னும் உருவாக்கப்படாததால் ஒரு படி (step) வெற்றிகரமாக முடிவடைகிறது என்றால், அந்தப் படியை நீக்கிவிடவும். இல்லாத ஒரு செயல்பாட்டிற்காக (flow) சோதனை வெற்றி பெறுவது ஒரு பொய்யாகும்.
- "சரியானது" என்பதை வரையறுக்கவும். உறுதியான மதிப்புகள் (hard values) இல்லாமல் "சரியானது" (correct) அல்லது "முறையானது" (proper) போன்ற வார்த்தைகளைப் பயன்படுத்தாதீர்கள். "சரியான id உள்ளது" என்பதற்குப் பதிலாக "contains order_id 123" என்று பயன்படுத்துங்கள்.
இந்த சிக்கல்களைக் கண்டறிய நான் ஒரு கட்டமைப்பை (framework) உருவாக்கினேன். ஒவ்வொரு சூழலுக்கும் (scenario) இந்த ஐந்து கேள்விகளைக் கேளுங்கள்:
- இந்தச் சூழலுக்குப் பொறுப்பாளர் யார்?
- இது எந்த முடிவுகளைத் திறந்த நிலையில் விடுகிறது?
- இங்குள்ள அனைத்துச் சொற்களும் வரையறுக்கப்பட்டுள்ளனவா?
- இது செயல்பாட்டை விவரிக்கிறதா அல்லது செயல்படுத்துதலை (implementation) விவரிக்கிறதா?
- இந்த விளக்கத்தில் விடுபட்டது என்ன?
உரைக்கும் (text) குறியீட்டிற்கும் (code) இடையிலான இடைவெளியே மிகப்பெரிய பொறி. உங்கள் விவரக்குறிப்பில் (spec) நீங்கள் ஒரு சரியான, துல்லியமான அறிவுறுத்தலை எழுதலாம். ஆனால், உங்கள் அடிப்படை குறியீடு அந்தச் சோதனையைச் சரிபார்க்க ஒரு குறுக்குவழியைப் பயன்படுத்தினால், உங்களிடம் இன்னும் கடன் (debt) உள்ளது என்றுதான் அர்த்தம்.
Spec "API மூலம் ஒரு ஆர்டரை உருவாக்குங்கள்" என்று கூறுகிறது. ஆனால் குறியீடு உண்மையில் நேரத்தைச் சேமிக்க ஒரு ஆர்டரை நேரடியாகத் தரவுத்தளத்தில் (database) சேர்க்கிறது. சோதனை வெற்றி பெறுகிறது, ஆனால் கடன் தேவையிலிருந்து (requirement) செயல்படுத்துதலுக்கு (implementation) மாற்றப்பட்டுள்ளது.
முதல் முறையிலேயே சரியான விவரக்குறிப்புகளை எழுத முயற்சிக்காதீர்கள். அவற்றை எழுதுங்கள், ஆய்வு செய்யுங்கள், மற்றும் சரிசெய்யுங்கள்.
Source: https://dev.to/diyaburman/spec-debt-doesnt-disappear-when-you-fix-it-it-migrates-d25
Optional learning community: https://t.me/GyaanSetuAi
