- यह मान्यता रही है कि क्योंकि AI कोड लिखने और उसे व्यवस्थित करने में मदद करता है, इसलिए technical debt कम महत्वपूर्ण हो जाएगा
- लेकिन वास्तव में AI, technical debt की लागत को और बढ़ा रहा है
- कम debt वाले codebase में AI tools से मिलने वाली speed-up सबसे ज़्यादा होती है, जबकि ज़्यादा debt वाले legacy codebase में AI tools की efficiency तेज़ी से गिर जाती है
- नतीजतन, जिन codebase में technical debt ज़्यादा है, उन्हें AI tools का उपयोग करने में और बड़ी कठिनाइयों का सामना करना पड़ रहा है
जटिल कोड के सामने कमज़ोर generative AI
- Cursor और Aider जैसे AI coding tools, code की complexity पर बहुत संवेदनशील तरीके से प्रतिक्रिया करते हैं
- जहाँ existing patterns या interfaces अच्छी तरह परिभाषित हों, वहाँ speed-up बड़ा होता है, लेकिन जटिल control flow और बहुत सारी dependencies वाले code में वैध responses बनाना इनके लिए मुश्किल हो जाता है
- जटिल codebase सिर्फ AI models के लिए ही नहीं, बल्कि developers के लिए भी requests को स्पष्ट रूप से तैयार करना कठिन बना देते हैं
- इसी वजह से कई developers यह इंतज़ार करने की ओर झुकते हैं कि AI tools कब ‘production-level’ complexity को संभाल पाएँगे
AI tools का सही इस्तेमाल
- legacy codebase में AI tools को ज़बरदस्ती लागू करने के बजाय, मानव विशेषज्ञों द्वारा refactoring के ज़रिए ऐसा वातावरण बनाना ज़रूरी है जिसमें AI सहज रूप से काम कर सके
- अगर सीधे refactoring करना जोखिमभरा हो, तो Strangler Fig pattern जैसे तरीकों से नए modules विकसित किए जा सकते हैं और उनके माध्यम से AI tools के फ़ायदे तुरंत लिए जा सकते हैं
- इससे development teams, code की सूक्ष्म implementation details के बजाय architecture design और abstraction के ऊँचे स्तर पर ज़्यादा ध्यान दे सकती हैं
AI-friendly approach
- यह ज़रूरी है कि AI tools के सही ढंग से काम करने के लिए system को modular बनाया जाए और स्पष्ट interfaces के ज़रिए modules के बीच interaction को परिभाषित किया जाए
- ऐसी module structure बनाए रखना एक उपयोगी मानदंड है जिसमें core functionality और data flow को natural language में समझाया जा सके
- Gauge Tach जैसे tools की मदद से visibility और architecture rules स्थापित किए जाएँ, तो system को modular architecture की दिशा में विकसित किया जा सकता है
गुणवत्ता ही गति तय करती है
- high-quality codebase को बनाए रखना अब पहले से कहीं ज़्यादा महत्वपूर्ण हो गया है
- अगर modular architecture में निवेश किया जाए, तो teams AI tools का अधिकतम लाभ उठा सकती हैं और तेज़ feature development के साथ high-quality software भी बना सकती हैं
4 टिप्पणियां
ऐसा लगता है कि software bloat एक अपरिहार्य नियति है।
लगता है कहीं कुछ देखकर मैनेजर वगैरह लोगों में यह सोच बन गई है कि AI सब कुछ हल कर देगा। ChatGPT ने इस बारे में बहुत ज़्यादा भ्रम पैदा कर दिया है। शायद इस बात पर ज़ोर देने की ज़रूरत है कि यह अभी भी शुरुआती स्तर पर है। यह बताने की भी ज़रूरत है कि यह बस एक सहायक टूल के रूप में थोड़ा-बहुत मदद करता है। और ऊपर वाली स्थिति से मैं इसलिए भी सहमत हूँ कि चीज़ें जटिल होते ही यह सही समझ नहीं पाता। लगता है कि यह पूरे प्रोजेक्ट के समग्र flow को पकड़ नहीं पाता।
garbage in garbage outसे बचा नहीं जा सकता, लगता है।Hacker News राय
युवा और उच्च-गुणवत्ता वाले codebase वाली कंपनियों को generative AI tools से सबसे ज़्यादा फ़ायदा मिलता है। वहीं, जटिल legacy codebase वाली कंपनियों को इसे अपनाने में कठिनाई होती है। व्यक्तिगत प्रोजेक्ट्स में LLM का उपयोग करते समय भी ऐसा ही अनुभव हुआ। जैसे ही codebase थोड़ा भी अनोखा हो जाता है, model ग़लतियाँ करने लगता है और काम और मुश्किल हो जाता है
LLM आसान कामों को और आसान बना देते हैं, लेकिन कठिन कामों में ग़लतियाँ करते हैं। यह अंतर कम नहीं हो रहा, बल्कि और बढ़ रहा है
'उच्च-ऋण' वाले माहौल में सूक्ष्म control flow, long-term dependencies, और अप्रत्याशित patterns की वजह से उपयोगी उत्तर बनाना कठिन हो जाता है। कई मामलों में यह 'technical debt' नहीं, बल्कि codebase की परिपक्वता का संकेत होता है
generative AI tools को legacy codebase की जटिल समस्याएँ हल करने के लिए मजबूर करने के बजाय, मानव विशेषज्ञों को legacy code को refactor करना चाहिए ताकि generative AI उस पर सुचारु रूप से काम कर सके
यह मान्यता उभर रही है कि AI technical debt को कम महत्वपूर्ण बना देगा। लेकिन AI द्वारा बनाया गया code अनियमित और असंगत होता है, और specific prompt व context input के प्रति बहुत संवेदनशील होता है
AI-generated code वास्तव में मूल्यवान हो सकता है, लेकिन इस लेख का framing अवास्तविक है
machine learning technical debt के लिए ऊँची ब्याज दर वाले credit card की तरह है। जैसे-जैसे code generation आसान होती जाती है, वैसे-वैसे और अधिक code बनता है, और maintenance cost बढ़ती है
LLM की code generation क्षमता प्रभावशाली है, लेकिन लक्ष्य code की मात्रा कम करना होना चाहिए
AI साधारण काम संभाल सकता है और अधिक code बना सकता है, लेकिन यह ऐसे bugs भी पैदा करता है जिन्हें ढूँढ़ना मुश्किल होता है। इन tools के साथ आप तेज़ी से आगे बढ़ सकते हैं, लेकिन आपको अलग तरीके से काम करने की ज़रूरत होती है
AI code को समझने और संशोधित करने में मदद कर सकता है, लेकिन अंधाधुंध copy-paste करना अच्छा नहीं है। code review, explanation माँगना, और iterative काम अब भी ज़रूरी हैं