एक खाली App.js और टिमटिमाते कर्सर में असीम संभावनाओं का अहसास होता है। कोई पाबंदी नहीं। कोई बॉयलरप्लेट नहीं जो आपको बताए कि क्या करना है। लेकिन वह कोरा कैनवास आज़ादी नहीं है। यह शून्य से ब्रह्मांड का पुनर्निर्माण करने का एक खुला निमंत्रण है।

ब्लैंक स्क्रीन टैक्स

एक प्रोजेक्ट को केवल एक कंपाइलर और एक टेक्स्ट एडिटर के साथ शुरू करें। पहला दिन रोमांचक लगता है। आप फ़ोल्डर स्ट्रक्चर, नेमिंग कन्वेंशन, और डिसेबल्ड बटन के लिए ग्रे रंग की सटीक शेड चुनते हैं। तीसरे दिन तक, वह रोमांच फीका पड़ जाता है और असली काम सामने आता है।

आपको एहसास होता है कि एक साधारण लिस्ट बनाना केवल एक map फ़ंक्शन लिखने के बारे में नहीं है। आपको यह तय करना होगा कि डेटा लोड होते समय स्केलेटन कैसा दिखेगा, क्या वह पल्स करेगा या स्लाइड करेगा, और इसके दिखने में कितनी देरी होनी चाहिए। आपको यह तय करना होगा कि जब स्क्रॉल के दौरान नेटवर्क फेल हो जाए तो क्या होगा। क्या इसे अपने आप रीट्राई करना चाहिए? एक बटन दिखाना चाहिए? पिछले पेज को हमेशा के लिए कैश करना चाहिए? आपको यह तय करना होगा कि दो एक्टिव फ़िल्टर आपस में कैसे इंटरैक्ट करते हैं, और जब उस कॉम्बिनेशन से शून्य परिणाम मिलते हैं तो एम्प्टी स्टेट कैसा दिखता है। आपको यहाँ तक तय करना होगा कि आपके यूज़र के लिए 'शून्य परिणाम' का क्या अर्थ है।

ये फॉर्मलाइजेशन की समस्याएँ हैं। एक अस्पष्ट अवधारणा को एक विशिष्ट, सुसंगत और दोहराने योग्य व्यवहार में बदलना सॉफ्टवेयर निर्माण का सबसे कठिन हिस्सा है। कोड अपने आप में उन विकल्पों का केवल एक लिप्यंतरण (transcription) है। इसीलिए अनंत कस्टमाइजेशन कोई फीचर नहीं है। यह एक टैक्स है, और इसका बिल उन सूक्ष्म निर्णयों (micro-decisions) के रूप में आता है जो आपकी अपेक्षा से कहीं अधिक तेज़ी से बढ़ते हैं।

वे निर्णय जो लेते ही रहते हैं

हर आर्किटेक्चरल चॉइस को एक सब्सक्रिप्शन की तरह मानें। जब आप शुरुआती इम्प्लीमेंटेशन लिखते हैं, तो आप पहली किस्त चुकाते हैं। फिर आप महीने दर महीने भुगतान करते रहते हैं।

आप तब भुगतान करते हैं जब एक नया इंजीनियर शामिल होता है और पूछता है कि आपने स्टैंडर्ड लाइब्रेरी के बजाय कस्टम रीट्राई लॉजिक क्यों चुना, और किसी को याद नहीं होता। आप तब भुगतान करते हैं जब एक ब्राउज़र अपडेट आपके खुद से बनाए गए (hand-rolled) टच हैंडलर को तोड़ देता है क्योंकि किसी ने यह डॉक्यूमेंट नहीं किया था कि वह थ्रेशोल्ड 48 पिक्सल पर क्यों सेट किया गया था। आप तब भुगतान करते हैं जब एक सिक्योरिटी पैच आपको अपने कस्टम ऑथेंटिकेशन फ्लो को रिफैक्टर करने के लिए मजबूर करता है क्योंकि इसमें रिफ्रेश टोकन रोटेशन का पहले से अनुमान नहीं लगाया गया था।

यदि आपके लिए कुछ भी तय नहीं किया गया है, तो सब कुछ आपकी समस्या बन जाता है। जो आप चाहते हैं उसे ठीक वैसा ही बनाने की आज़ादी, उसे हमेशा के लिए संभालने के बोझ से अलग नहीं है। आप उन पैटर्न्स के एकमात्र विशेषज्ञ बन जाते हैं जिन्हें इंडस्ट्री ने सालों पहले हल कर लिया था। आप घर बनाने के बजाय नींव का रखरखाव करने में अपने घंटे बिताते हैं।

AI, एक स्पीड ट्रैप

आर्टिफिशियल इंटेलिजेंस इस डायनामिक को कम करने के बजाय और अधिक खतरनाक बना देता है। एक लार्ज लैंग्वेज मॉडल तीस सेकंड में एक पूरा ऑथेंटिकेशन मॉड्यूल जेनरेट कर सकता है। यह आपकी कॉफी ठंडी होने से पहले एक स्टेट लेयर का स्कैफोल्ड तैयार कर सकता है, एक कैशिंग स्ट्रैटेजी का ड्राफ्ट बना सकता है और नेविगेशन गार्ड्स लिख सकता है।

लेकिन यहाँ एक पेंच है। AI निर्णय लेने की लागत को कम कर देता है, जबकि उन्हें संभालने (owning) की लागत को पहले की तरह ही ऊँचा रखता है। अब आप इतिहास में किसी भी टीम की तुलना में अधिक तेज़ी से टेक्निकल डेट (technical debt) बना सकते हैं। डेमो वाले दिन कोड काम करता है। यह स्मोक टेस्ट पास कर लेता है। छह महीने बाद, जब OAuth प्रोवाइडर किसी एंडपॉइंट को डिप्रिकेट कर देता है या स्लो कनेक्शन के दौरान कैश इनवैलिडेशन लॉजिक में समस्या आती है, तो आप उन निर्णयों को डीबग कर रहे होते हैं जिन्हें आपने एक मशीन को आउटसोर्स कर दिया था।

छिपा हुआ बिल हमेशा चुकाना पड़ता है। यह इंजीनियरिंग घंटों, कॉन्टेक्स्ट स्विचिंग और वेलोसिटी के धीरे-धीरे कम होने