- लंबे समय से कमी महसूस हो रही SQLite के लिए high-quality development tools को AI की मदद से कम समय में पूरा किया गया
- आधिकारिक grammar spec की अनुपस्थिति और जटिल C codebase के कारण parser बनाना सबसे बड़ी चुनौती थी
- Claude Code जैसे AI coding agents का उपयोग कर शुरुआती implementation तेज़ी से आगे बढ़ी, लेकिन spaghetti code की समस्या के कारण Rust-आधारित rewrite करना पड़ा
- AI ने code generation·refactoring·learning support·UX improvement में बड़ी दक्षता दिखाई, लेकिन design delay·code disconnect·dependency addiction जैसे दुष्प्रभाव भी सामने आए
- निष्कर्षतः AI केवल implementation speed बढ़ाने का tool है, design और software की direction की ज़िम्मेदारी इंसान को ही लेनी चाहिए
AI के साथ SQLite development tool बनाने के 3 महीनों का रिकॉर्ड
- लंबे समय से SQLite के लिए high-quality development tools की इच्छा थी, लेकिन मौजूदा open source tools reliability, speed और flexibility के मामले में कमज़ोर थे
- PerfettoSQL को maintain करते समय formatter, linter, editor extension जैसी सुविधाओं की ज़रूरत थी, लेकिन उपयुक्त tools नहीं थे
- निजी प्रोजेक्ट के रूप में नया tool बनाना चाहते थे, लेकिन कठिनाई और दोहराए जाने वाले काम के बोझ के कारण यह कई वर्षों तक टलता रहा
प्रोजेक्ट की कठिनाइयाँ
- SQLite में आधिकारिक grammar spec या स्थिर parser API नहीं है
- यह अंदरूनी तौर पर parse tree नहीं बनाता, इसलिए source code से सीधे parser logic निकालना पड़ा
- 400 से अधिक grammar rules को एक-एक करके map करना पड़ता है, और test लिखना व debugging बहुत दोहरावदार और थकाऊ काम है
- SQLite का C codebase जटिल और अत्यंत सघन है, इसलिए उसे समझना कठिन है
- virtual table API और implementation को समझने में ही कई दिन लग गए; इसकी संरचना काफ़ी दुरूह थी
AI के साथ development process
- 2025 के अंत से Claude Code जैसे AI coding agents का गंभीरता से उपयोग शुरू किया गया
- शुरुआत में AI को ज़्यादातर design और implementation सौंपकर “vibe-coding” शैली में काम किया गया
- नतीजा काम तो करता था, लेकिन codebase spaghetti जैसी संरचना में उलझ गई और maintain करना लगभग असंभव हो गया
- इसके बाद पूरे सिस्टम को Rust में rewrite करते हुए संरचना को फिर से बनाया गया
- C की जगह Rust का उपयोग कर ऊपरी स्तर के components, जैसे validator और language server, बनाना आसान हुआ
- AI को “autocomplete को मज़बूत करने वाले tool” तक सीमित किया गया, और design, review व testing को सीधे खुद lead किया गया
- linting, validation, test automation आदि जैसे AI output को verify करने के लिए scaffolding तैयार की गई
AI ने क्या संभव बनाया
-
जड़ता पर काबू
- AI ने काम को ठोस problem units में तोड़कर शुरुआत आसान बना दी
- “SQLite parsing को समझना है” से “AI द्वारा सुझाए गए approach की review करनी है” में बदलाव आया, जिससे execution speed बढ़ी
-
code generation और refactoring की गति
- जब requirements स्पष्ट हों, तो AI standard और consistent code बहुत तेज़ी से लिख देता है
- लेकिन non-standard design, जैसे parser structure, में यह उल्टा बाधा बन सकता है, इसलिए वहाँ सीधे खुद लिखना ज़रूरी था
- बड़े पैमाने पर code generation के बाद लगातार refactoring अनिवार्य है, और इसी से quality बनी रहती है
-
learning assistant की भूमिका
- AI ने Wadler-Lindig formatting algorithm जैसे नए concepts को real time में समझाया
- Rust, VS Code extensions जैसे कम परिचित क्षेत्रों में भी तेज़ी से entry मिल सकी
- जब project context खो जाता था, तब “इस component को समझाओ” जैसे सवालों से तुरंत context restore हो जाता था
-
पूर्णता में सुधार
- editor extension, Python bindings, WASM playground, documentation site जैसी अतिरिक्त सुविधाओं की development cost कम हुई
- implementation का बोझ घटने से UX improvement पर अधिक ध्यान दिया जा सका, जैसे error messages और CLI design के ज़रिए user experience को बेहतर बनाना
AI उपयोग के दुष्प्रभाव
-
लत जैसी प्रवृत्ति
- “बस एक prompt और” को दोहराने वाली slot machine जैसी reward structure
- जितनी अधिक थकान, उतनी ही prompt quality गिरती है, नतीजे और खराब होते हैं, और एक दुष्चक्र बन जाता है
-
codebase से disconnect
- AI द्वारा generated code जितना बढ़ता है, बारीक संरचना की समझ उतनी कम होती जाती है
- context खोने पर AI के साथ बातचीत भी लंबी और कम प्रभावी हो जाती है
- समाधान के तौर पर generated code बनने के तुरंत बाद उसे खुद पढ़ने और “मैं इसे कहाँ अलग तरह से लिखता” यह जाँचने की आदत डाली गई
-
design delay और क्षरण
- refactoring आसान होने से core design decisions को टालने की प्रवृत्ति पैदा हुई
- tests बहुत हों तब भी मूलभूत design errors को छिपाना मुश्किल होता है, और अंततः पूरे rewrite की ज़रूरत पड़ सकती है
-
समय-बोध का अभाव
- AI code के temporal context या evolution process को नहीं समझता
- इससे पुरानी गलतियाँ दोहराने या पहले से सुलझी समस्याओं को फिर से खंगालने जैसी अक्षमताएँ पैदा होती हैं
- documentation से कुछ हद तक इसकी भरपाई हो सकती है, लेकिन design intent को पूरी तरह रिकॉर्ड करना कठिन है
AI उपयोग की सापेक्षता
- जिन क्षेत्रों को गहराई से समझा गया हो, वहाँ AI शानदार साबित होता है; तेज़ review और iteration संभव होते हैं
- उदाहरण: parser rules generation, जहाँ अपेक्षाकृत स्पष्ट सही उत्तर होता है
- आंशिक रूप से परिचित क्षेत्रों में यह learning tool के रूप में उपयोगी है, लेकिन लगातार सतर्कता ज़रूरी है
- उदाहरण: formatter algorithm सीखना
- जब यह भी स्पष्ट न हो कि क्या बनाना है, तब AI उल्टा नुकसानदेह हो सकता है
- उदाहरण: architecture design phase में unproductive loops बनना
- verifiable problems जैसे compile होना या tests pass करना, इनमें AI मज़बूत है, लेकिन
design और API quality जैसे बिना निश्चित उत्तर वाले सवालों में यह कमज़ोर पड़ता है
निष्कर्ष
- 8 साल से सोचे जा रहे SQLite tool को सिर्फ 3 महीनों में साकार किया जा सका, और इसका बड़ा कारण AI था
- लेकिन यह सफ़र कोई साधारण success story नहीं था; इसके साथ AI पर निर्भरता की सीमाएँ और उसकी कीमत भी जुड़ी हुई थीं
- AI implementation को तेज़ करने वाला accelerator है, लेकिन design का विकल्प नहीं
- यह technical questions के जवाब सटीक दे सकता है, लेकिन इतिहास, रुचि और user intuition की उसमें कमी होती है
- असली सबक यह है कि AI की मदद से भले ही हम दीवार से जल्दी टकराएँ,
design की दिशा और ‘software की आत्मा’ की ज़िम्मेदारी इंसान को ही लेनी होगी
- आगे ज़रूरत है ऐसे प्रोजेक्ट अनुभव साझा करने की जो असली users और maintenance की कसौटी पर टिकें
- यानी केवल experiments नहीं, बल्कि व्यावहारिक और टिकाऊ AI-collaborative development अनुभवों का संचय
अभी कोई टिप्पणी नहीं है.