TL;DR;
- AI का अच्छा इस्तेमाल करने की सबसे अहम क्षमता आउटपुट की quality को परखने और उसे सुधारने की क्षमता है, और AI पर निर्भरता बढ़ने के साथ यही क्षमता उलटे कमजोर हो जाती है
- Bjork के "desirable difficulties" सिद्धांत के अनुसार, जिस जानकारी को बहुत आसानी से प्रोसेस किया जाता है वह long-term memory में नहीं टिकती
- Roediger & Karpicke(2006) के अध्ययन में retrieval practice वाले समूह की एक हफ्ते बाद memory retention, repeated reading वाले समूह से लगभग 50% अधिक थी
- जब AI कोड की जगह खुद लिख देता है, तो वह germane load जैसी intrinsic cognitive प्रक्रिया भी हटा देता है, जिससे schema formation का अवसर ही गायब हो जाता है
- जितना अधिक कोई डेवलपर अनुभवी होता है, neural efficiency के कारण केवल AI output पढ़ने से उसके दिमाग पर लगभग कोई cognitive load नहीं पड़ता
- AI से पहले भी growth रुकने के रास्ते मौजूद थे, लेकिन AI ने उस रास्ते की friction को नाटकीय रूप से कम कर दिया है
विस्तृत सारांश
AI का अच्छा उपयोग करने के लिए कोड जानना क्यों जरूरी है — यही विरोधाभास
- "इसे बना दो" कहने वाले लोग बहुत हैं, लेकिन AI के नतीजे को देखकर यह ठोस रूप से बताने वाले लोग बहुत कम हैं कि "यह structure बदलाव के प्रति कमजोर है" या "इस interface पर दो जिम्मेदारियां हैं"
- यह क्षमता असंख्य failures, debugging और refactoring के अनुभव से बनी लगभग एक instinct जैसी चीज है
- AI का उपयोग सीखना और code patterns सीखना, दोनों में से एक चुनने का मामला नहीं है; बल्कि दूसरा, पहले की बुनियाद है
- "जो डेवलपर AI का सबसे अच्छा उपयोग कर सकता है, वह वही है जो AI के बिना भी कोड का आकलन कर सके"
दिमाग आराम में हो तो याद नहीं रखता
- Bjork की "desirable difficulties": जब learning process में उचित स्तर की कठिनाई और resistance मौजूद होती है, तब short-term performance धीमी हो सकती है, लेकिन long-term retention और transfer बेहतर होते हैं
- Roediger & Karpicke(2006): repeated reading vs retrieval practice experiment
- 5 मिनट बाद टेस्ट: repeated reading समूह के अंक अधिक थे
- 1 हफ्ते बाद retest: retrieval practice समूह की memory retention लगभग 50% अधिक थी
- active retrieval समूह में hippocampus–prefrontal cortex connectivity मजबूत हुई और sensorimotor network activation भी बढ़ा
- passive learning की स्थिति में दिमाग में केवल hippocampus–fusiform gyrus connectivity सक्रिय होती है — यानी "जानकारी को सिर्फ देखना, उसे वास्तव में प्रोसेस न करना"
- generation effect (Slamecka & Graf, 1978): "गरम-ठं___" जैसे जोड़े को खुद पूरा करने वाले समूह की memory retention, तैयार जोड़े पढ़ने वाले समूह की तुलना में स्पष्ट रूप से अधिक थी
- fluency illusion: जानकारी को आसानी से प्रोसेस कर पाने का एहसास इस भ्रम में बदल जाता है कि वह अच्छी तरह याद भी रहेगी
coding skill दरअसल procedural memory है
- coding skill का बड़ा हिस्सा procedural memory है — साइकिल चलाने की तरह, एक बार शरीर और दिमाग में बस जाए तो बिना सचेत प्रयास के अपने-आप चलने लगता है
- Anderson का Adaptive Control of Thought (ACT) model: procedural memory बनने के 3 चरण
- cognitive stage: हर चीज को सचेत रूप से step-by-step करना पड़ता है, और working memory का अधिकांश हिस्सा इसमें खर्च होता है
- associative stage: अलग-अलग procedures जुड़कर एक flow की तरह चलने लगते हैं
- autonomous stage: working memory लगभग इस्तेमाल नहीं होती और execution अपने-आप होता है — बची हुई capacity design judgment में लगाई जा सकती है
- इन चरणों के बीच बदलाव केवल बार-बार खुद करके ही आता है
- chunking (Chase & Simon chess study): expert और beginner का अंतर working memory slots की संख्या में नहीं, बल्कि एक chunk में समा सकने वाली जानकारी की मात्रा में है
- chess expert मोहरों की अलग-अलग जगहें नहीं, बल्कि "Sicilian Defense की typical middlegame setup" जैसे meaningful patterns को एक chunk के रूप में पहचानते हैं
- random arrangement experiment में experts और beginners के बीच का अंतर गायब हो जाने से यह बात सिद्ध हुई
AI इस प्रक्रिया में बाधा डालता है
- जब implementation AI को दे दी जाती है, तो AI germane load तक को संभाल लेता है — schema बनाने का मौका ही खत्म हो जाता है
- procedural memory के नजरिये से देखें तो cognitive stage में जूझने का समय घट जाता है, associative stage में जाने में देरी होती है, और automation stage तक पहुंचना कठिन हो जाता है
- AI output code पढ़ना, generation effect experiment में "पूरा किया हुआ word pair पढ़ने" जैसा है — लगता है जैसे समझ लिया, लेकिन बात गहराई से दर्ज नहीं होती
- अनुभवी डेवलपर neural efficiency के कारण code को कम संसाधनों में प्रोसेस करते हैं, इसलिए AI output पढ़ना दिमाग पर अपेक्षा से भी कम load डालता है
- जब आप खुद कोड लिखते हैं, तो prediction–feedback loop के जरिए synapses बदलते हैं; लेकिन तैयार AI code पढ़ना केवल बाद की interpretation है, जिसमें prediction प्रक्रिया ही गायब होती है
- junior डेवलपर्स के लिए यह खास तौर पर गंभीर है: जब उनके पास बहुत से patterns अभी cognitive stage में होते हैं, तब AI अगर वह चरण ही पार करा दे, तो procedural memory बने बिना सिर्फ career आगे बढ़ता रहता है
दिमाग पर load डालने के तरीके
- AI को देने से पहले पहले अपना design draft बनाएं: generation effect का जानबूझकर उपयोग करें — AI output से तुलना और उसका मूल्यांकन करने की प्रक्रिया में दिमाग के semantic processing और executive control क्षेत्र एक साथ सक्रिय होते हैं
- गंभीर code review करें: "यह structure ऐसा क्यों है?" और "अगर इसे 6 महीने बाद बदलना पड़े तो समस्या कहाँ होगी?" जैसे सवाल जानबूझकर पूछें — यही झुंझलाहट desirable difficulty है
- खुद कोड लिखने के लिए समय सुरक्षित रखें: procedural memory बनाने का इसका कोई विकल्प नहीं है — अगर अटकें, तो AI से पूरा जवाब नहीं बल्कि सिर्फ न्यूनतम hint मांगें
- production और learning के लिए सबसे अच्छी रणनीति अलग-अलग होती है: AI production tool के रूप में शानदार है, लेकिन learning tool के रूप में इसकी सीमाएं हैं
- आखिरकार दिमाग में जो बचता है, वही code review की quality, design judgment की accuracy, और विडंबना यह कि AI उपयोग की क्षमता तक तय करता है
20 टिप्पणियां
व्यक्तिगत रूप से मुझे गहराई से महसूस हो रहा है कि मेरे विशेषज्ञता वाले क्षेत्र में AI बेहद कमजोर है। मेरा अनुमान है कि दूसरे क्षेत्रों के विशेषज्ञों के साथ भी शायद यही बात लागू होती होगी। बेशक, यह बहुत मददगार है। भले ही मुझे पूरे दिन झंझटभरे दस्तावेज़ लिखने पड़ते हों, फिर भी इसकी तुलना पहले की productivity से नहीं की जा सकती।
attention बहुमत से बनता है।
verification agent को सिर्फ evaluation function पास करना होता है।
बेहतरीन industrial code का अधिकांश हिस्सा सार्वजनिक नहीं होता।
open source दिखाने के लिए बना code है।
इसे इस्तेमाल करते समय इस बात को हमेशा याद रखना चाहिए।
सहमत। एयरोस्पेस, मेडिकल, प्रिसिशन कंट्रोल जैसे अत्यधिक उन्नत डोमेन के मुख्य डेटा पूरी तरह बंद internal networks में होते हैं, और उन तक पहुंचने के लिए या तो आप core insider हों, या बाहरी होने पर भारी लागत और NDA साइन करने के बाद ही मुश्किल से access मिलता है। AI जिन डेटा पर सीखता है, उनका ज़्यादातर हिस्सा इंटरनेट पर सार्वजनिक रूप से उपलब्ध होता है, और अगर बात Python, JavaScript आधारित web/app services की हो, तो कुछ हद तक Full Automation संभव है.
लेकिन उन्नत डोमेन में इस्तेमाल होने वाले 3D graphics, CAD आधारित algorithms इंटरनेट पर या तो बिखरे हुए मिलते हैं या बिल्कुल मिलते ही नहीं, इसलिए AI भी vibe coding के ज़रिए बस सतही नतीजे ही दे सकता है। मेरा मानना है कि एक main agent रखकर, उसमें domain context को micro-managing स्तर पर लगातार inject करते हुए, Planning → Redirection → Review cycle के साथ, developer द्वारा सीधे lead किया गया यह तरीका — पूरी automation नहीं बल्कि continuous amplification के रूप में development करना — ज़्यादा सुरक्षित और व्यावहारिक approach है।
मुझे भी अभी अपने विशेषज्ञता वाले क्षेत्र में कमी महसूस होती है, इसलिए मैं सावधान रहता हूँ और मानता हूँ कि जिन क्षेत्रों में मैं मदद लेता हूँ वहाँ भी उसका स्तर लगभग उतना ही होगा। लेकिन विकास की गति काफ़ी तेज़ है, इसलिए जिन कामों में लगातार बस उसी स्तर की क्वालिटी पर्याप्त हो, उनमें मैं इसे आज़माने की सोचता हूँ।
क्या सिर्फ़ मुझे ही ऐसा लग रहा है, या यहाँ भी AI से लिखी गई टिप्पणियाँ काफ़ी ज़्यादा दिख रही हैं?
ऐसा लगता है जैसे हम किसी dystopia में पहुँच गए हों
ऐसी बातें पुराने काम करने के तरीके से चिपके रहने जैसी लगती हैं। वैसे भी ऐसे हिस्सों में AI आगे चलकर और बेहतर हो जाएगा। अभी महत्वपूर्ण यह है कि AI का इस्तेमाल करते हुए जो हिस्से अच्छी तरह काम नहीं करते, उन्हें बेहतर बनाने का अनुभव हासिल किया जाए। लेकिन मुझे लगता है कि यह भी अस्थायी है।
इसे सिर्फ़ coding तक सीमित नहीं किया जा सकता। वांछनीय कठिनाई महज़ एक घिसा-पिटा नारा नहीं है, बल्कि यह कई वैज्ञानिक आधारों पर टिकी हुई है।
कैलकुलेटर होने पर पहाड़े याद करना अब पुराने काम करने के तरीके से चिपके रहने जैसा लगता है। वैसे भी ऐसे हिस्से कैलकुलेटर ही बेहतर तरीके से करने लगेंगे। अभी महत्वपूर्ण यह है कि कैलकुलेटर का इस्तेमाल करते हुए जो हिस्से ठीक से नहीं चलते, उन्हें सुधारने का अनुभव हासिल किया जाए। लेकिन मुझे लगता है कि यह भी अस्थायी है।
लगता है आप हमेशा इसी तरह की लॉजिक से पलटवार करते हैं.. calculator गणना में गलती नहीं करता। अपना काम ठीक से करता है।
कभी-कभी चिंता होती है कि अगर एक दिन calculator खराब हो जाए और 3 X 3 = 10 बता दे, तो कहीं किसी को यह गलत है, यह पता ही न चले... और अगर ऐसा मेरे bank account को संभालने वाले programmer के computer पर हो रहा हो... सावधान रहने में कोई बुराई नहीं लगती।
आखिरकार इंसान आसान विकल्प ही चुनता है। इसी वजह से, short-form content के खराब होने की बात जानते हुए भी आज लगभग हर कोई short-form content का आनंद ले रहा है। आगे चलकर AI भी विकल्प नहीं बल्कि अनिवार्यता बन जाएगा, और वास्तव में इसका उपयोग करने और न करने वालों की उत्पादकता में बड़ा अंतर होगा। यह डेवलपर और non-developer दोनों पर समान रूप से लागू होता है। बस तरीका और रूप अलग होगा। नीचे आपने फ़ोन का उदाहरण देकर कहा कि अब फ़ोन नंबर याद रखने की ज़रूरत नहीं रही; उसी तरह आज के लोग navigation के बिना अब सिर्फ़ नक्शा देखकर गाड़ी नहीं चला पाते, और रोज़ जाने वाले रास्ते भी जानबूझकर याद नहीं रखते।
तो क्या इससे driving ability, spatial awareness या memory कमज़ोर हो गई है? नहीं, navigation के विकास की वजह से अब हमारे पास navigation हो तो हम कहीं भी जा सकते हैं.
इसके अलावा, AI के इस्तेमाल से इंसानी cognitive ability के क्षीण होने की बात भी की जाती है, लेकिन मुझे लगता है कि यह क्षीण होना नहीं बल्कि cognitive ability का किसी दूसरे रूप में बदलना है।
हाल में hand-coding की भी बात हो रही है। अपनी legacy skills के पीछे छूट जाने के डर को शौक़ के दायरे में हल करना समझ में आता है, लेकिन मैं नहीं चाहता कि यह ऐसे दिशा में जाए जैसे यही कोई एकमात्र सही जवाब हो — कि डेवलपर को अपनी बुनियादी क्षमता बढ़ाने के लिए hand-coding ज़रूर करनी चाहिए!
प्रोग्रामिंग भाषाओं का विकास भी अंततः धीरे-धीरे इंसान के लिए परिचित natural language के और क़रीब जाने की दिशा में हुआ है। लेकिन लगता है कि अभी का समय उस अंतिम लक्ष्य की ओर जाने वाला एक transitional phase है.
"कोडिंग स्किल का एक बड़ा हिस्सा procedural memory है" — यह बात बहुत गहराई से महसूस होती है
गणित के सवाल हल करना भी procedures को याद रखना और उसी तरह का output निकालने की practice करना ही है।
AI से coding करना ठीक है, लेकिन लगता है कि दिमाग पर इतना load डालना ज़रूरी है कि हम उसी स्तर या उससे बेहतर नतीजे बार-बार निकाल सकें।
यह छोटा-सा विचार है, लेकिन आजकल मैं अक्सर ऐसा सोचता हूँ। पहले कहा जाता था कि assembly language के विशेषज्ञ C भाषा के डेवलपर्स को देखकर कहते थे, "इन्हें memory की कद्र नहीं है", "इन्हें hardware की समझ नहीं है" वगैरह-वगैरह; और आज भी देखें तो क्या यह उसी संदर्भ में की जा रही मिलती-जुलती आलोचना नहीं है? आखिरकार, software development के नज़रिए से हम बस पहले की programming languages की तुलना में और अधिक abstract भाषा (AI) के साथ development कर रहे हैं, ऐसा ही तो है। इसलिए पहले जिन भाषाओं का इस्तेमाल होता था, उनमें विशेषज्ञता का कम होना स्वाभाविक है। लेकिन जैसे कुछ समय पहले तक जो लोग आज से भी अधिक low-level भाषाओं में development करते थे, उन्हें "राक्षस" कहा जाता था, वैसे ही अब अगर कोई vibe से development करता हो लेकिन फिर भी पारंपरिक भाषाओं के सिद्धांतों को समझकर काम करता हो, तो शायद उसे अलग ही दर्जे का व्यक्ति माना जा सकता है।
“अगर तुम सूट के बिना कुछ भी नहीं हो, तो तुम्हें वह नहीं होना चाहिए।” - Tony Stark
लगता है कि हमें जानबूझकर ही सही, उस झुंझलाहट से गुजरने की प्रक्रिया अपनानी होगी।
जो डेवलपर बिना दिमाग लगाए vibe coding करते हैं, उन्हें देखकर बहुत गुस्सा आता है। अपने नतीजों की क्वालिटी पूरी तरह खराब हो और फिर यह कहकर बहाना बनाओ कि AI ने लिखा था। ज़िम्मेदारी तो खुद तुम्हें ही लेनी होगी।
AI का उपयोग करना electric drill, chainsaw, और excavator इस्तेमाल करने जैसा लगता है। मोबाइल फोन इस्तेमाल होने के बाद से बहुत से लोग अपना खुद का फोन नंबर भी याद नहीं रख पाते हैं।
...इन्हें गिरावट के रूप में भी देखा जा सकता है, लेकिन मैं इसे efficiency मानता हूँ। डेवलपर और कई तरह की भूमिकाएँ निभाने के अपने अनुभव के आधार पर, मुझे लगता है कि AI tools सिर्फ डेवलपर्स की दुनिया तक सीमित नहीं हैं, बल्कि वे हमें और व्यापक नज़रिया रखने का मौका और मदद देने वाले tools भी हैं। किसी एक हिस्से में गिरावट हो सकती है, लेकिन उस जगह को किसी और चीज़ से भर दिया जाता है।
मैं भी इस राय से सहमत हूँ.
आखिरकार, मैं इसे साफ़ तौर पर trade-off वाला tool मानता हूँ.
AI का जितना ज़्यादा इस्तेमाल करते हैं, उतनी ही coding skills कम हो जाने की चिंता भी होती है, लेकिन यह भी तय है कि हम उन दूसरी बातों पर सोचने लगते हैं जो पहले नहीं कर पाते थे (या कर ही नहीं सकते थे).
कम-से-कम AI को निर्देश देते समय उस पर बस दो-चार छोटे शब्द न फेंकें, बल्कि अपनी सोच और तर्क की पूरी रूपरेखा जितना संभव हो उतनी स्पष्टता से बताएं, और उसके बाद काम शुरू करने से पहले अगर कुछ और पुष्टि करनी हो तो वह ज़रूर पूछकर आगे बढ़े—यह मददगार लगता है।
यह लेख पढ़कर "digital dementia" शब्द याद आ जाता है।