𝗦𝗽𝗲𝗰 𝗗𝗲𝗯𝘁 𝗗𝗼𝗲𝘀𝗻'𝘁 𝗗𝗶𝘀𝗮𝗽𝗽𝗲𝗮𝗿 𝗪𝗵𝗲𝗻 𝗬𝗼𝘂 𝗙𝗶𝘅 𝗜𝘁. 𝗜𝘁 𝗠𝗶𝗴𝗿𝗮𝘁𝗲𝘀.

स्पेक डेट (Spec Debt) तुम्ही तो दुरुस्त केल्यावर नाहीसा होत नाही. तो फक्त स्थलांतरित होतो.

एखादी समस्या सोडवणे म्हणजे ती कायमची नष्ट करणे असे नेहमीच नसते. कधीकधी, तुम्ही ती फक्त दुसऱ्या ठिकाणी हलवता.

मी अलीकडेच स्पेक डेट (spec debt) शोधण्यासाठी एका प्रोजेक्टचे ऑडिट केले. सूचनांमधील अशा त्रुटींमुळे बग्स (bugs) किंवा एआयचे (AI) चुकीचे वर्तन दिसून येते. मी सात विशिष्ट बाबी सुधारल्या. सुधारणांनंतर, सर्व टेस्ट्स पास झाल्या. सर्व काही व्यवस्थित (green) दिसत होते.

पण तो 'डेट' नाहीसा झाला नाही. तो फीचर फाइल्समधून (feature files) स्टेप डेफिनिशन्समध्ये (step definitions) स्थलांतरित झाला.

या बाबी सुधारताना मी काय शिकलो ते खालीलप्रमाणे आहे:

  • अचूकता महत्त्वाची आहे. "प्रतिसाद जलद आहे" असे म्हणण्याऐवजी, "ऑर्डर सबमिट केल्यापासून १२ सेकंदांच्या आत प्रतिसाद मिळतो" असे म्हणा. यामुळे वेळेचे मोजमाप निश्चित होते.
  • संदिग्धता टाळा. "२ वेळा पुन्हा प्रयत्न केला" (Retried 2 times) हे अस्पष्ट आहे. याचा अर्थ एकूण २ प्रयत्न की ३? खात्री करण्यासाठी "एकूण २ पेक्षा जास्त चार्ज विनंत्या नकोत" (no more than 2 charge requests total) असे वापरा.
  • यंत्रणा किंवा मेकॅनिझमचे नाव द्या. "इन्व्हेंटरी रिलीज झाली आहे" असे म्हणणे संदिग्ध आहे. त्याऐवजी "इन्व्हेंटरी सर्व्हिसला आयटम X साठी रिलीज विनंती प्राप्त झाली आहे" असे स्पष्ट करा.
  • खोट्या आश्वासनांना काढून टाका. जर एखादी फीचर अजून अस्तित्वात नसल्यामुळे एखादी स्टेप पास होत असेल, तर ती स्टेप काढून टाका. अस्तित्वात नसलेल्या फ्लोसाठी (flow) पास होणारी टेस्ट म्हणजे एक खोटेपणा आहे.
  • "योग्य" (correct) म्हणजे काय ते परिभाषित करा. ठोस मूल्ये (hard values) न वापरता "योग्य" किंवा "उचित" असे शब्द कधीही वापरू नका. "योग्य आयडी समाविष्ट आहे" म्हणण्याऐवजी "contains order_id 123" असे वापरा.

मी या समस्या शोधण्यासाठी एक फ्रेमवर्क तयार केले आहे. प्रत्येक सिनेरिओसाठी (scenario) हे पाच प्रश्न विचारा:

  • या सिनेरिओची जबाबदारी कोणाची आहे?
  • यामुळे कोणत्या निर्णयांवर अनिश्चितता राहते?
  • येथे सर्व संज्ञा (terms) परिभाषित केल्या आहेत का?
  • हे वर्तन (behavior) सांगते की अंमलबजावणी (implementation)?
  • या वर्णनातून काय सुटले आहे?

मजकूर (text) आणि कोड (code) मधील अंतर हा सर्वात मोठा सापळा आहे. तुम्ही तुमच्या स्पेकमध्ये (spec) एक परिपूर्ण आणि अचूक सूचना लिहू शकता. परंतु, जर तुमचा मूळ कोड ती टेस्ट पास करण्यासाठी शॉर्टकट वापरत असेल, तर तुमच्याकडे अजूनही 'डेट' आहे.

स्पेक सांगते "API द्वारे ऑर्डर तयार करा." प्रत्यक्षात कोड वेळ वाचवण्यासाठी थेट डेटाबेसमध्ये ऑर्डर इंजेक्ट करतो. टेस्ट पास होते, पण तो 'डेट' गरजेकडून (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