എന്റെ README 80 ടൂളുകൾ എന്ന് പറഞ്ഞു. എന്റെ കോഡിൽ 96 ഉണ്ടായിരുന്നു. ആഴ്ചകളോളം ആരും ഇത് ശ്രദ്ധിച്ചില്ല.
ഞാൻ ഒരു ഓപ്പൺ സോഴ്സ് പ്രോജക്റ്റ് നടത്തുന്നുണ്ട്. AI ഏജന്റുകൾക്കായി ഇത് ബ്രൗസർ ഓട്ടോമേഷൻ ഉപയോഗിക്കുന്നു.
എന്റെ README പ്രോജക്റ്റിൽ 80 ടൂളുകൾ ഉണ്ടെന്നാണ് പറഞ്ഞിരുന്നത്. ആ നമ്പർ ഞാൻ ടാഗ്ലൈനിലും, നാവിഗേഷനിലും, സോഷ്യൽ മീഡിയ ടെക്സ്റ്റിലും ഉൾപ്പെടുത്തിയിരുന്നു.
കഴിഞ്ഞ ആഴ്ച ഞാൻ ഒരു ഓഡിറ്റ് നടത്തി. എന്റെ README-യും യഥാർത്ഥ കോഡും തമ്മിൽ ഞാൻ താരതമ്യം ചെയ്തു.
കോഡിൽ 96 ടൂളുകൾ രേഖപ്പെടുത്തിയിട്ടുണ്ടായിരുന്നു.
ഒരു ഫയലിൽ തന്നെ മൂന്ന് വ്യത്യസ്ത സത്യങ്ങൾ ഉണ്ടായിരുന്നു:
- മാർക്കറ്റിംഗ് നമ്പർ: 80
- ഡോക്യുമെന്റേഷനിലുള്ള ലിസ്റ്റ്: 83
- യഥാർത്ഥ കോഡ്: 96
പതിമൂന്ന് ടൂളുകളെക്കുറിച്ച് ഒരിടത്തും രേഖപ്പെടുത്തിയിട്ടുണ്ടായിരുന്നില്ല. അവ നിലവിലുണ്ടെന്ന് ഉപയോക്താക്കൾ അറിഞ്ഞതേയില്ല.
ഏറ്റവും അപകടകരമായ കാര്യം ആ വ്യത്യാസമായിരുന്നു. രേഖപ്പെടുത്താത്ത ആ ടൂളുകളിൽ നാലെണ്ണം ഹൈ-ലെവൽ സിസ്റ്റം ടൂളുകളായിരുന്നു. കീബോർഡും മൗസും നിയന്ത്രിക്കാൻ അവ OS-ലെ ഇവന്റുകൾ ഉപയോഗിച്ചിരുന്നു. എന്റെ പ്രോജക്റ്റിലെ ഏറ്റവും ശക്തവും സെൻസിറ്റീവുമായ ഭാഗമാണിത്.
ഡോക്യുമെന്റേഷൻ ഡ്രിഫ്റ്റിനെ (documentation drift) കുറിച്ച് ഇത് എനിക്ക് കഠിനമായ ഒരു പാഠം നൽകി.
ഡ്രിഫ്റ്റ് എന്നത് യാദൃശ്ചികമായി സംഭവിക്കുന്ന ഒന്നല്ല. അതിൽ ഒരു പക്ഷപാതമുണ്ട്. എളുപ്പമുള്ളതും വിരസവുമായ കാര്യങ്ങൾ നിങ്ങൾ ഡോക്യുമെന്റ് ചെയ്യുന്നു. എന്നാൽ തിരക്കിട്ട് പുറത്തിറക്കുന്ന പുതിയതോ, ശക്തമോ, അല്ലെങ്കിൽ സെൻസിറ്റീവോ ആയ ടൂളുകൾ ഡോക്യുമെന്റ് ചെയ്യാൻ നിങ്ങൾ മറന്നുപോകുന്നു.
ഒരു പ്രോജക്റ്റിലെ ഏറ്റവും അപകടകരമായ ഭാഗം കണ്ടെത്തണമെന്നുണ്ടെങ്കിൽ, ഡോക്യുമെന്റേഷൻ വായിക്കരുത്. ഡോക്യുമെന്റേഷനും കോഡും തമ്മിലുള്ള വ്യത്യാസം നോക്കുക.
ഞാൻ ആ നമ്പർ ശരിയാക്കാൻ ശ്രമിച്ചു. അത് ഒരു തെറ്റായിരുന്നു. നമ്പർ ശരിയാക്കുന്നത് രോഗലക്ഷണങ്ങളെ മാത്രം ചികിത്സിക്കുന്നതിന് തുല്യമാണ്.
പ്രശ്നം മാനുവൽ മെയിന്റനൻസ് ആണ്. ഒരു മനുഷ്യൻ ഒരു വസ്തുത ടൈപ്പ് ചെയ്യുകയാണെങ്കിൽ, ആ വസ്തുത കാലക്രമേണ തെറ്റായി മാറും.
നമ്പർ തെറ്റാകുന്നത് അസാധ്യമാക്കുക എന്നതാണ് ഏക യഥാർത്ഥ പരിഹാരം.
നിങ്ങൾ വസ്തുതകൾ 'സോഴ്സ് ഓഫ് ട്രൂത്ത്' (source of truth) എന്ന യഥാർത്ഥ ഉറവിടത്തിൽ നിന്ന് തന്നെ എടുക്കണം.
എന്റെ പ്രോജക്റ്റിൽ ഇതിനൊരു പരിഹാരം നേരത്തെ തന്നെ ഉണ്ടായിരുന്നു: സ്മോക്ക് ടെസ്റ്റ് (smoke test). എത്ര ടൂളുകൾ ഉണ്ടെന്ന് സെർവറോട് ചോദിച്ചറിയുകയും ആ എണ്ണം പരിശോധിക്കുകയും ചെയ്യുന്ന രീതിയാണിത്. ഇത് ഒരു ഹാർഡ്കോഡഡ് (hardcoded) നമ്പർ ഉപയോഗിക്കുന്നില്ല. ഈ ടെസ്റ്റ് ഒരിക്കലും ഡ്രിഫ്റ്റ് ആകില്ല, കാരണം ഇത് ഒരു സ്റ്റാറ്റിക് നമ്പർ സൂക്ഷിക്കുന്നില്ല.
എഴുത്തിൽ കൂടുതൽ അച്ചടക്കം പാലിക്കാൻ ശ്രമിക്കുന്നത് നിർത്തുക. അച്ചടക്കം പരാജയപ്പെടും. പകരം, നിങ്ങളുടെ വസ്തുതകൾ ഓട്ടോമേറ്റ് ചെയ്യുക:
- ബിൽഡ് സമയത്ത് ഒരു സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് എണ്ണങ്ങൾ (counts) നിർമ്മിക്കുക.
- നിങ്ങളുടെ കോഡ് രജിസ്ട്രിയിൽ നിന്ന് നേരിട്ട് ടൂൾ ലിസ്റ്റുകൾ നിർമ്മിക്കുക.
- വിവരണങ്ങൾക്കും വിശദീകരണങ്ങൾക്കുമായി മാത്രം മനുഷ്യരെ ഉപയോഗിക്കുക.
ഒരു വസ്തുത കണ്ടെത്താൻ സാധിക്കുമെങ്കിൽ, അത് കൈകൊണ്ട് ടൈപ്പ് ചെയ്യരുത്. അത് ഭാവിയിൽ ഡ്രിഫ്റ്റ് ആകാൻ കാത്തിരിക്കുന്ന ഒന്നാണ്.
ഇന്ന് തന്നെ നിങ്ങളുടെ പ്രോജക്റ്റിലും ഈ ഓഡിറ്റ് നടത്തുക:
- നിങ്ങളുടെ കോഡിലുള്ള യഥാർത്ഥ ഐറ്റങ്ങൾ എണ്ണുക.
- നിങ്ങളുടെ ഡോക്യുമെന്റേഷൻ അവകാശപ്പെടുന്ന കാര്യങ്ങൾ എണ്ണുക.
- അവ തമ്മിൽ വ്യത്യാസമുണ്ടെങ്കിൽ, ആ വ്യത്യാസത്തിൽ എന്താണെന്ന് കണ്ടെത്തുക.
ആ വ്യത്യാസത്തിലുള്ള കാര്യങ്ങളാണ് സാധാരണയായി നിങ്ങളുടെ പ്രോജക്റ്റിലെ ഏറ്റവും പ്രധാനപ്പെട്ട ഭാഗങ്ങൾ.
Optional learning community: https://t.me/GyaanSetuAi