जिस प्लान को आप छोड़ देते हैं वही आउटेज बाद में डीबग करना पड़ता है
सॉफ्टवेयर इंजीनियरिंग का हर फ्रेमवर्क आपसे तेज़ चलने, जल्दी शिप करने, प्रोडक्शन में इटरेट करने को कहता है। AI-जनरेटेड वेबसाइट्स के लिए, यह उल्टा है। यहां का बिल्डर आपके प्रॉम्प्ट से सीधे कोड स्ट्रीम करने से इनकार करता है — यह रुकता है, एक प्लान लिखता है, और आपके देखने का इंतज़ार करता है — और यही एक इनकार है जिस पर इस पूरी पाइपलाइन की बाकी हर चीज़ बनी है। शुरुआत में धीमा, बाद में हर जगह सस्ता। मैं हर बार यह ट्रेड लूंगा, और मुझे लगता है कि इसके उलट तर्क देने वाले ज़्यादातर लोगों ने वाकई नहीं देखा कि एक गलत अंदाज़ा आगे चलकर कितना महंगा पड़ता है।
यहां है वह फेलियर मोड जिसे रोकने के लिए प्लान मौजूद है। आप टाइप करते हैं "मेरे स्टूडियो के लिए एक बुकिंग साइट" और गो दबा देते हैं। सिस्टम को अंदाज़ा लगाना पड़ता है कि "बुकिंग" का मतलब क्या है — एक कैलेंडर विजेट, एक थर्ड-पार्टी एम्बेड, कॉन्फ्लिक्ट चेकिंग वाला असली रिज़र्वेशन सिस्टम — और इसे कुछ भी लिखने से पहले अंदाज़ा लगाना पड़ता है, क्योंकि इसे करने का कोई और क्रम नहीं है। प्लान के अंदर गलत अंदाज़ा लगाओ तो फिक्स एक वाक्य है, पांच सेकंड, बस। जनरेट हो चुके कोड के अंदर गलत अंदाज़ा लगाओ तो अब आप एक वाक्य एडिट नहीं कर रहे, आप दस फाइलों को अनवाइंड कर रहे हैं जो पहले से ही गलत धारणा पर निर्भर हैं। मैंने दोनों वर्ज़न होते देखे हैं। प्लान-स्टेज करेक्शन एक एक्सचेंज है। जनरेशन के बाद वही अस्पष्टता पर पिवट करना डिस्कार्ड-एंड-रीबिल्ड है।
प्लान सिर्फ़ एक टू-डू लिस्ट भी नहीं है, और यही वह हिस्सा है जो लोग चूक जाते हैं। यह एक कॉन्ट्रैक्ट है, और सिस्टम खुद को इसका पाबंद रखता है: एक कॉन्फॉर्मेंस-चेक वेरिफायर, उन एजेंट्स में से एक जिसे बिल्ड शिप होने से पहले साइन ऑफ करना ज़रूरी है, तैयार साइट को आपके अप्रूव किए गए प्लान के साथ डिफ करता है। क्या हर प्लान किया गया पेज बना? क्या फीचर लिस्ट शिप हुई चीज़ से मेल खाती है? यहां "डन" कोई एहसास नहीं है — यह एक लिखित वादे के सापेक्ष है, लाइन दर लाइन जांचने योग्य। यह "कोड चलता है" से एक मज़बूत गारंटी है, और यह आपको तभी मिलती है जब जांचने के लिए कोई दस्तावेज़ हो। प्लान हटा दें और आप पैमाना ही हटा देते हैं।
यह असल में कहां फायदा देता है
बिल्ड चलाने वाले व्यक्ति के रूप में आपकी ताकत आगे ही रख दी गई है, चाहे आप इसका इस्तेमाल करें या न करें। अगर आप इंफॉर्मेशन आर्किटेक्चर, पेज स्ट्रक्चर, कौन से फीचर v1 बनाम v2 में जाएं, इस बारे में परवाह करते हैं — तो वह बारीकी प्लान रिव्यू के समय पहले जनरेशन पास के बाद से दस गुना ज़्यादा कीमती है। प्लान दोबारा पढ़ने में लगे चार अतिरिक्त मिनट पहले ही गड़बड़ हो चुके बिल्ड को ठीक करने के राउंड-ट्रिप से बेहतर हैं।
इसकी सबसे साफ़ मिसाल है प्रोडक्ट टाइप — प्लेन स्टैटिक साइट, इंस्टॉलेबल ऐप, फ्रेमवर्क बिल्ड, असली परसिस्टेंस वाला सर्वर-बैक्ड ऐप। यह एक ड्रॉपडाउन जैसा दिखता है। यह नहीं है। यह पूरी प्रक्रिया में सबसे संरचनात्मक निर्णय है, क्योंकि यह चुपचाप दर्जनों ऐसी चीज़ें तय कर देता है जिनका साइट के दिखने से कोई लेना-देना नहीं है।
| प्रोडक्ट टाइप | पूर्वावलोकन | पब्लिश करें | अकाउंट्स / डेटाबेस |
|---|---|---|---|
| प्लेन स्टैटिक साइट | तुरंत, क्योंकि यह सिर्फ़ स्टैटिक फाइलें हैं | स्टैटिक आउटपुट साफ़-सुथरे तरीके से कॉपी हो जाता है | संभव नहीं — लॉगिन मांगना उस चीज़ की मांग है जो यह टाइप संरचनात्मक रूप से कर ही नहीं सकता |
| फ्रेमवर्क बिल्ड | पहले कंपाइल होता है; टूटा हुआ बिल्ड "नो प्रीव्यू" के रूप में दिखता है, "टूटा हुआ पेज" के रूप में नहीं | कंपाइल होने के बाद, वही साफ़-सुथरा स्टैटिक-कॉपी रास्ता | संभव नहीं |
| सर्वर-बैक्ड ऐप | — | इसे कहीं ऐसी जगह चाहिए जहां असल में एक प्रोसेस चल सके, जो अलग तरीके से फेल होता है — एक क्रैश्ड प्रोसेस, न कि एक मिसिंग फाइल | एकमात्र टाइप जहां अकाउंट्स और डेटाबेस कहीं भी मौजूद होते हैं |
और आप बाद में आसानी से टाइप अपग्रेड नहीं कर सकते। प्लेन साइट से सर्वर-बैक्ड ऐप में जाना कोई सेटिंग्स टॉगल नहीं है — यह लगभग एक दूसरा बिल्ड है, क्योंकि प्लान की आधी धारणाएं (पेज कैसे लोड होते हैं, डेटा कहां रहता है, "पब्लिश" का क्या मतलब है) पुराने टाइप के हिसाब से बनी थीं। तो प्लान के समय ही इसे कह दें, भले ही आधा-अधूरा यकीन हो: "मुझे अकाउंट्स की ज़रूरत पड़ने की संभावना है।" सर्वर-बैक्ड ऐप के लिए प्लान बनाना और सिर्फ़ स्टैटिक हिस्सों का इस्तेमाल करना कुछ खर्च नहीं करता। बाद में यह पता लगना कि आपको इसकी ज़रूरत थी, एक रीबिल्ड की कीमत चुकाता है।
जहां आलोचकों की बात सही है
यह सब मुफ़्त नहीं है, और मैं यह दिखावा नहीं करूंगा कि है। हर रन के लिए अलग वर्कस्पेस होने का मतलब है कि आपकी knowledge files हर बार फ़्रेश कॉपी की जाती हैं, कुछ भी आपकी मशीन पर वापस नहीं पहुंचता — यह आपके लिए अच्छा है अगर आपका लैपटॉप बिल्ड के बीच में क्रैश हो जाए, लेकिन लेटेंसी के लिए बुरा है, क्योंकि एक वर्कस्पेस प्रोविज़न करना, और फ्रेमवर्क बिल्ड्स के लिए, एक कंटेनर बाउंड्री के अंदर वास्तविक dependency install चलाना असली वॉल-क्लॉक समय लेता है। वह कंटेनर बाउंड्री इसलिए है क्योंकि एक फ्रेमवर्क बिल्ड `npm install` और मनमाने बिल्ड स्क्रिप्ट चलाता है — ऐसा कोड जो आपने नहीं लिखा, जो बिल्ड-टाइम प्रिविलेज के साथ चलता है — और इसे बिना आइसोलेशन वाले शेयर्ड होस्ट पर करना एक dependency-confusion अटैक की दूरी पर है, जो किसी दूसरे टेनेंट के डेटा को छू सकता है। तेज़-लेकिन-असुरक्षित रास्ता उपलब्ध था। बस यह ऐसा ट्रेड-ऑफ नहीं था जो करने लायक हो।
वेरिफिकेशन के साथ भी यही कहानी है। एक पूर्ण बिल्ड पाइपलाइन तब नहीं छोड़ता जब जनरेशन रुकता है; यह तब छोड़ता है जब स्वतंत्र वेरिफायर्स का एक समूह रोकने लायक कुछ भी ढूंढना बंद कर देता है:
- कोड रिव्यू
- सुरक्षा
- लिंक्स और SEO
- एक्सेसिबिलिटी
- कन्फॉर्मेंस
- एक वास्तविक इन-ब्राउज़र रन
यह एक पास नहीं है, यह फ्लैग-फिक्स-रीचेक है, जो तब तक लूप करता है जब तक किसी के पास कहने को कुछ नहीं बचता, क्योंकि एक ही लिंटर पास अपने ही फिक्स से आई रिग्रेशन को मिस कर सकता है। एक टूटा हुआ लिंक ठीक करना और गलती से उसी पेज पर हेडिंग हायरार्की तोड़ देना बिल्कुल वैसी चीज़ है जिसे वन-शॉट चेक मिस कर देता है और रीचेक पकड़ लेता है। उस लूप की ईमानदार कीमत यह है कि कभी-कभी बिल्ड आखिर में बिना किसी दिखाई देने वाले कारण के एक अतिरिक्त मिनट लेता है। लोग उस मिनट को नोटिस करते हैं। वे उन छह एजेंट्स को नोटिस नहीं करते जो अभी-अभी उनकी साइट पर बहस खत्म करके निकले हैं। यह अनुभव को लेकर एक जायज़ शिकायत है — मुझे बस नहीं लगता कि यह बिना बहस हुए ही शिप करने का अच्छा तर्क है।



