Augmented Coding: Vibes से आगे
(stdy.blog)- Kent Beck ने हाल ही में Augmented Coding: Beyond the Vibes नाम से एक लेख लिखा
- यह कहानी है कि Kent Beck ने खुद AI की मदद से Rust और Python में उच्च-प्रदर्शन और production level के काफ़ी करीब एक B+ Tree लाइब्रेरी (BPlusTree3) लिखी
- इसमें खास तौर पर उपयोगी और अंतर्दृष्टिपूर्ण लगे 3 बिंदुओं का सार और अनुवाद प्रस्तुत है
Augmented Coding, vibe coding से कैसे अलग है?
- vibe coding में आप code पर ध्यान नहीं देते, सिर्फ system behavior पर ध्यान देते हैं. अगर error हो, तो आप बस कहते हैं कि 'ऐसी error है' और उम्मीद करते हैं कि वह उसे ठीक कर देगा
- Augmented Coding में आप code पर ध्यान देते हैं. code की complexity, test, और test coverage महत्वपूर्ण हैं.
- Augmented Coding में भी पारंपरिक coding की तरह "Tidy Code That Works", यानी 'चलने वाला साफ-सुथरा code' महत्वपूर्ण है. बस पहले की तरह बहुत ज़्यादा typing नहीं करनी पड़ती
3 संकेत कि AI ग़लत दिशा में जा रहा है
Augmented Coding में AI के बीच के परिणामों को देखते रहना और यह जाँचना महत्वपूर्ण है कि क्या ये 3 संकेत दिख रहे हैं, ताकि समय पर हस्तक्षेप किया जा सके
- समान behavior को बार-बार दोहराना (जैसे infinite loop)
- ऐसी functionality implement करना जो मैंने नहीं माँगी. भले ही वह तार्किक अगला कदम क्यों न लगे.
- test को delete या disable करना जैसी, या कोई भी दूसरी ऐसी निशानी जिससे लगे कि AI cheating कर रहा है.
TDD में मदद करने वाला system prompt
- मूल लेख का पूरा text कॉपी करना थोड़ा असुविधाजनक था, इसलिए उसे gist में रखा गया है
- अंत में सिर्फ Rust syntax को अपनी programming language/framework के मुताबिक बदल दें, तो यह हर जगह बहुत अच्छे से दोबारा इस्तेमाल किया जा सकने वाला prompt लगता है.
अंत में
> मुझे पता है कि इस बात का काफ़ी डर है कि हमारा प्रिय पेशा गायब हो जाएगा और code के साथ काम करने का आनंद खत्म हो जाएगा. चिंतित होना स्वाभाविक है. हाँ, 'genie' के साथ programming करना निश्चित रूप से बदलाव लाता है, लेकिन यह अब भी programming ही है. कुछ मायनों में यह कहीं बेहतर programming experience है. मैं प्रति घंटे जितने निर्णय लेता हूँ, उनकी संख्या और गुणवत्ता को देखें, तो उबाऊ और घिसे-पिटे निर्णय कम हुए हैं और अधिक महत्वपूर्ण programming निर्णय बढ़े हैं.
> तथाकथित 'yak shaving' कहलाने वाले, यानी मूल उद्देश्य से दूर छोटे-मोटे झंझट वाले ज़्यादातर काम गायब हो जाते हैं. मैंने 'genie' से coverage tester चलाने और code की विश्वसनीयता बढ़ाने वाले tests सुझाने को कहा. 'genie' के बिना यह काम बहुत कठिन लगता. क्योंकि पहले यह पता लगाना पड़ता कि tester चलाने के लिए किस library का कौन-सा version चाहिए. शायद मैं लगभग दो घंटे जूझता और फिर छोड़ देता. इसके बजाय, मुझे सिर्फ 'genie' से कहना होता है, और 'genie' खुद विवरण संभाल लेता है.
5 टिप्पणियां
हमेशा plan.md के निर्देशों का पालन करें। जब मैं "go" कहूँ, तो plan.md में अगला अनचिह्नित टेस्ट ढूँढें, उस टेस्ट को इम्प्लीमेंट करें, और फिर केवल उतना ही न्यूनतम कोड इम्प्लीमेंट करें जितना उस टेस्ट को पास कराने के लिए ज़रूरी हो।
भूमिका और विशेषज्ञता
आप Kent Beck के test-driven development (TDD) और Tidy First सिद्धांतों का पालन करने वाले एक सीनियर सॉफ़्टवेयर इंजीनियर हैं। आपका उद्देश्य इन मेथडोलॉजीज़ का ठीक-ठीक पालन करते हुए डेवलपमेंट को गाइड करना है।
मुख्य डेवलपमेंट सिद्धांत
TDD मेथडोलॉजी गाइड
TIDY FIRST approach
Commit अनुशासन
Code quality standards
Refactoring guidelines
उदाहरण workflow
नई functionality पर काम करते समय:
इस प्रक्रिया का सख्ती से पालन करें, और तेज़ implementation की बजाय हमेशा साफ़-सुथरे और अच्छी तरह tested code को प्राथमिकता दें।
हमेशा एक समय में एक ही test लिखें, उसे चलाएँ, फिर structure को बेहतर बनाएँ। हर बार सभी tests चलाएँ (लंबे समय तक चलने वाले tests को छोड़कर)।
Rust से संबंधित
Rust में imperative style की तुलना में functional programming style को प्राथमिकता दें। जहाँ संभव हो, if let या match के साथ pattern matching की बजाय Option और Result combinators (map, and_then, unwrap_or आदि) का उपयोग करें।
मुझे उम्मीद है कि prompt coding के बाद brainwave coding भी आएगा।
vibe coding ❌️
virtual coding ⭕️
मेटावर्स के बाद है हम्म.. माउथ-कोडिंग?
अब लगता है अगला नंबर metaverse coding का है।