എന്റെ AI കോഡിംഗ് ഏജന്റ് ഇടയ്ക്കിടെ തകരാറിലാകുന്നുണ്ടായിരുന്നു — ഞാൻ എന്താണ് മാറ്റിയത്

ആറ് ആഴ്ചകൾക്ക് മുമ്പ്, എന്റെ AI കോഡിംഗ് ഏജന്റ് ഉപയോഗശൂന്യമായ ഫലങ്ങളാണ് നൽകിയിരുന്നത്.

അത് കംപൈൽ ചെയ്യുമെങ്കിലും ഒന്നും ചെയ്യാത്ത ഫംഗ്ഷനുകളാണ് എഴുതിയിരുന്നത്. തെറ്റായ കാരണങ്ങളാൽ അത് ടെസ്റ്റുകൾ പാസ്സാക്കി. ഒരു ബഗ് പരിഹരിക്കുമ്പോൾ അത് മൂന്ന് പുതിയ ബഗുകൾ ഉണ്ടാക്കിയിരുന്നു.

പ്രശ്നം ഏജന്റാണെന്നാണ് ഞാൻ കരുതിയത്. എന്നാൽ ഞാൻ തെറ്റിദ്ധരിച്ചു. എന്റെ അച്ചടക്കമില്ലായ്മയായിരുന്നു യഥാർത്ഥ പ്രശ്നം.

എന്റെ എഞ്ചിനീയറിംഗ് ജോലിയുടെ 40% എനിക്കും AI ഏജന്റാണ് ചെയ്യുന്നത്. റീഫാക്ടറിംഗ് (refactors), ടെസ്റ്റ് ജനറേഷൻ, ബഗ് അന്വേഷണങ്ങൾ എന്നിവ അത് കൈകാര്യം ചെയ്യുന്നു. എന്റെ കോഡ്ബേസ് (codebase) അലങ്കോലമായിരുന്നപ്പോൾ, AI ആ പ്രശ്നം മൂന്നിരട്ടി വർദ്ധിപ്പിച്ചു.

AI അച്ചടക്കത്തിന് പകരമാവില്ല. നിങ്ങളുടെ പക്കൽ നിലവിലുള്ള കാര്യങ്ങളെ അത് വർദ്ധിപ്പിക്കുക മാത്രമേ ചെയ്യുന്നുള്ളൂ.

ഫലങ്ങൾ മെച്ചപ്പെടുത്തുന്നതിനായി ഞാൻ എന്റെ വർക്ക്ഫ്ലോയിൽ വരുത്തിയ മാറ്റങ്ങൾ ഇതാ:

  • ടെസ്റ്റുകൾ പെരുമാറ്റത്തെ (behavior) ആണ് പരിശോധിക്കേണ്ടത്, അവസ്ഥയെയല്ല (state). "assert user is not None" എന്ന രീതിയിൽ ടെസ്റ്റുകൾ എഴുതുന്നത് നിർത്തുക. അത് ഒരു കള്ളമാണ്. "assert user.email == expected_email" എന്നതുപോലെ കൃത്യമായ ഡാറ്റയാണ് ഒരു ടെസ്റ്റ് പരിശോധിക്കേണ്ടത്. ടെസ്റ്റ് ദുർബലമാണെങ്കിൽ, AI അതിനെ ചൂഷണം ചെയ്യും.

  • ഓരോ 'diff'-ഉം വായിക്കുക. കോഡ് പരിശോധിക്കാതെ തന്നെ ഞാൻ റീഫാക്ടറുകൾ സ്വീകരിക്കാറുണ്ടായിരുന്നു. ഇത് സർക്കുലർ ഡിപെൻഡൻസികൾക്കും (circular dependencies) അലങ്കോലമായ ആർക്കിടെക്ചറിനും കാരണമായി. ഒരു മാറ്റം എന്തുകൊണ്ട് മികച്ചതാണെന്ന് നിങ്ങൾക്ക് വിശദീകരിക്കാൻ കഴിയില്ലെങ്കിൽ, അത് നിരസിക്കുക.

  • സ്റ്റേറ്റ് (state) വ്യക്തമാക്കുക. കാഷെകളോ (caches) സെഷനുകളോ (sessions) എങ്ങനെ കൈകാര്യം ചെയ്യണമെന്ന് AI തനിയെ "കണ്ടെത്താൻ" അനുവദിക്കരുത്. നിങ്ങളുടെ പ്രോംപ്റ്റുകളിലോ സ്കീമകളിലോ (schemas) ഇവ കൃത്യമായി നിർവചിക്കുക. അനുമാനിച്ച സ്റ്റേറ്റ് (inferred state) പ്രൊഡക്ഷനെ തകരാറിലാക്കുന്ന നിശബ്ദമായ ബഗുകൾക്ക് കാരണമാകും.

  • ഏജന്റ് വരുത്തുന്ന മാറ്റങ്ങൾക്കായി സ്വന്തമായി ടെസ്റ്റുകൾ എഴുതുക. ഏജന്റ് കോഡ് മാറ്റുമ്പോഴെല്ലാം, ഞാൻ ആദ്യം ഒരു മനുഷ്യൻ എഴുതിയ ടെസ്റ്റ് തയ്യാറാക്കുന്നു. ഇതിന് 15 മിനിറ്റ് എടുക്കുമെങ്കിലും മണിക്കൂറുകളോളം നീളുന്ന ഡീബഗ്ഗിംഗ് ഒഴിവാക്കാൻ ഇത് സഹായിക്കുന്നു.

  • പരാജയങ്ങൾ വ്യക്തമായി അറിയിക്കാൻ ആവശ്യപ്പെടുക. ഒരു മാറ്റം ടെസ്റ്റുകൾ പാസ്സാകുകയും എന്നാൽ ലോജിക് തെറ്റാവുകയും ചെയ്താൽ, സിസ്റ്റം അത് കൃത്യമായി ചൂണ്ടിക്കാണിക്കണം. "tests pass, ship it" എന്നത് ഒരു മാനദണ്ഡമായി ഒരിക്കലും സ്വീകരിക്കരുത്.

ഫലങ്ങൾ:

  • ആഴ്ചയിലെ ബഗുകളുടെ എണ്ണം 5-ൽ നിന്ന് 1-ൽ താഴെയായി കുറഞ്ഞു.
  • ഡീബഗ്ഗിംഗിനായുള്ള സമയം ആഴ്ചയിൽ 6 മണിക്കൂറിൽ നിന്ന് 1 മണിക്കൂറായി കുറഞ്ഞു.

ഏജന്റല്ല മാറിയത്, ഞാൻ ആണ് മാറിയത്.

നിങ്ങൾ AI ഏജന്റുകൾ ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ, ആദ്യം നിങ്ങളുടെ കോഡ്ബേസ് ശരിയാക്കുക. നിങ്ങളുടെ ടെസ്റ്റുകൾ മെച്ചപ്പെടുത്തുക, സ്റ്റേറ്റ് വ്യക്തമാക്കുക, റിവ്യൂകൾ കർശനമാക്കുക.

ഏജന്റ് ഒരു കണ്ണാടിയാണ്. വർദ്ധിപ്പിക്കാൻ യോഗ്യമായ എന്തെങ്കിലും നിങ്ങളുടെ പക്കലുണ്ടെന്ന് ഉറപ്പാക്കുക.

Source: https://dev.to/susiloharjo/my-ai-coding-agent-kept-breaking-what-i-changed-4l5f

Optional learning community: https://t.me/GyaanSetuAi