मेरे पास एक "कब्रिस्तान" फ़ोल्डर है। इकतालीस प्रोजेक्ट डायरेक्टरी, हर एक किसी वीकेंड की vibe coding का नतीजा — एक खूबसूरत डेमो और शून्य डॉलर। फिर मैंने अपना काम करने का तरीका बदला और दो महीनों में तीन चीजें शिप कीं जिनके लिए लोग वास्तव में भुगतान करते हैं। कब्रिस्तान और रेवेन्यू के बीच का फ़र्क प्रतिभा या किस्मत नहीं था। यह एक वर्कफ़्लो था।
चलिए vibe coding बनाम असली शिपिंग के बारे में बात करते हैं, क्योंकि इन दोनों के बीच की खाई वह जगह है जहां अधिकतर अकेले AI बिल्डर्स चुपचाप डूब जाते हैं। मैं एक साल तक वहां डूबा।
Vibe coding असल में क्या है
Vibe coding तब होती है जब आप बताते हैं कि आप क्या चाहते हैं, AI को इसे जेनरेट करने देते हैं, नतीजे पर नज़र डालते हैं, और महसूस के आधार पर आगे बढ़ते रहते हैं। गति के लिए यह अविश्वसनीय है। आप एक खाली फ़ोल्डर से एक दोपहर में एक काम करने वाले प्रोटोटाइप तक पहुंच जाते हैं और यह एक सुपरपावर जैसा लगता है।
यह एक सुपरपावर है। पहले 70% के लिए।
समस्या आखिरी 30% में है, वह हिस्सा जो किसी चीज को डेमो के बजाय प्रोडक्ट बनाता है: auth जो लीक न हो, जब इनपुट खाली हो तब का एज केस, एरर मैसेज जो "undefined" न कहे, वह चीज जो किसी असली यूजर से बचे जो नहीं जानता कि आपका क्या इरादा था। Vibe coding इन सबसे आगे निकल जाती है, क्योंकि सब कुछ पूरा दिखता है। पूरा दिखना और पूरा होना बहुत अलग-अलग अवस्थाएं हैं, और AI-जेनरेटेड कोड पूरा दिखने में शानदार है।
जब यह काटती है
मेरी सबसे साफ कब्रिस्तान की याद: एक शेड्यूलिंग टूल जिसे मैंने एक वीकेंड में vibe-code किया। शानदार था। मैंने इसे एक दोस्त को डेमो किया। उसने भूतकाल की एक तारीख क्लिक की और पूरी चीज एक stack trace के साथ उड़ गई। मैंने कभी भूतकाल की तारीख क्लिक नहीं की थी। AI ने कभी सोचा भी नहीं। क्यों सोचता? मैंने कभी उसे बताया नहीं।
यही जाल है। Vibe coding happy path को ऑप्टिमाइज़ करती है क्योंकि आप महसूस के आधार पर चला रहे हैं, और आपकी महसूस केवल उस रास्ते को कवर करती है जिसकी आपने कल्पना की। असली यूजर unhappy paths में रहते हैं।
मैं अब वास्तव में कैसे शिप करता हूं
मैं अभी भी पहला पास vibe-code करता हूं। मैं वह रफ़्तार नहीं छोड़ रहा। लेकिन मैंने उसमें एक दूसरा चरण जोड़ा है, और वह चरण वह है जहां प्रोडक्ट जन्म लेते हैं।
चरण एक, मैं vibe करता हूं। तेज, ढीला, ढांचा खड़ा करवाता हूं। मैं Claude Code को पूरा फ्लो बनाने देता हूं और अभी क्वालिटी की चिंता नहीं करता।
चरण दो, मैं AI की नौकरी "बनाओ" से "तोड़ो" में बदल देता हूं। शाब्दिक अर्थ में। मैं उसे बताता हूं:
आप अब एक शत्रुतापूर्ण QA इंजीनियर हैं। हर तरीका सूचीबद्ध करें जिससे एक
यूजर इस फीचर को तोड़ सकता है। खाली इनपुट, भूतकाल की तारीखें, बड़े इनपुट,
डबल क्लिक, नेटवर्क नहीं। हर एक के लिए, मुझे मौजूदा व्यवहार बताएं।
अभी ठीक मत करें।
वह एकल प्रॉम्प्ट बदलाव वह 30% खींच निकालता है जिसे vibe coding छुपाती है। जो AI ने अभी चीज बनाई है, एक बार जब आप उसे अनुमति देते हैं तो वह उस पर हमला करने में शानदार है। मुझे एक लिस्ट मिलती है। फिर मैं लिस्ट पर एक-एक करके ठीक करता हूं। शत्रुतापूर्ण-QA पास मेरे कब्रिस्तान और Stripe डैशबोर्ड के बीच का पूरा फ़र्क है।
शुरू करने से पहले "पूरा" का मतलब लिखें
एक और चीज जिसने मुझे डेमो से प्रोडक्ट तक पहुंचाया: AI को कुछ भी बनाने देने से पहले मैं "पूरा" की एक छोटी परिभाषा लिखता हूं। कोई स्पेक नहीं। एक फ़ाइल में पांच बुलेट।
उस शेड्यूलिंग टूल के लिए, दोबारा बना, यह था: भूतकाल की तारीखें अस्वीकार करे, खाली कैलेंडर को संभाले, नेटवर्क बंद होने पर काम करे, stack trace नहीं एक असली एरर दिखाए, दो सेकंड से कम में लोड हो। पांच लाइनें। मैं उस फ़ाइल को कॉन्टेक्स्ट में पिन करता हूं और AI उसके खिलाफ बनाता है बजाय मेरे vibes के।
Vibes शुरू करने के लिए एक अच्छी ऊर्जा है और एक बुरा स्पेक है। आपकी महसूस में कभी "नेटवर्क बंद हो तो क्या" शामिल नहीं होगा। एक लिखी हुई लाइन होगी।
मुझे ईमानदार रखने वाली eval ट्रिक
किसी भी AI फीचर वाले प्रोडक्ट के लिए, मैं बिल्कुल vibes पर भरोसा नहीं करता, क्योंकि LLM आउटपुट non-deterministic है और "जब मैंने कोशिश की तो काम किया" का कोई मतलब नहीं। मैं लगभग दस इनपुट/आउटपुट उदाहरण लिखता हूं जो अच्छे दिखते हैं और हर बार जब मैं कोई प्रॉम्प्ट बदलता हूं तो उन्हें चलाता हूं। यह एक गरीब आदमी का eval सेट है। एक टेक्स्ट फ़ाइल और एक लूप।
जब मैं एक केस ठीक करने के लिए प्रॉम्प्ट बदलता हूं, evals उन तीन केसों को पकड़ती हैं जिन्हें मैंने बिना जाने तोड़ दिया। उसके बिना, मैं आंखें बंद करके whack-a-mole खेल रहा हूं, एक यूजर की शिकायत ठीक करते हुए चुपचाप तीन और बना रहा हूं। दस उदाहरण। यही बार है। आपको किसी फ्रेमवर्क की ज़रूरत नहीं।
मैं अपने कब्रिस्तान वाले खुद से क्या कहूंगा
Vibe coding दुश्मन नहीं है। यह इंजन है। लेकिन बिना ब्रेक और विंडशील्ड के इंजन सिर्फ तेजी से दीवार में जाने का रास्ता है, और मेरे इकतालीस प्रोजेक्ट उस दीवार से पूरी रफ़्तार से टकराए।
असली अकेले प्रोडक्ट शिप करने वाले बिल्डर्स आपसे बेहतर प्रॉम्प्ट नहीं लिखते। मैं वादा करता हूं। वे वह उबाऊ दूसरा चरण कर रहे हैं जिसे आप छोड़ रहे हैं: शत्रुतापूर्ण-QA पास, पांच-लाइन पूरे की परिभाषा, दस-उदाहरण eval। इनमें से कुछ भी मुश्किल नहीं है। सब कुछ उबाऊ है। यही कारण है कि अधिकतर लोग इसे नहीं करते, और यही कारण है कि यह करना एक फ़ायदा है।
यहां ईमानदार विभाजन है। Vibe coding आपको एक दोपहर में डेमो तक पहुंचाती है, और यह यह जांचने के लिए सब कुछ के लायक है कि किसी विचार में दम है भी या नहीं। लेकिन डेमो से प्रोडक्ट का कूद एक अलग गियर है, और यह उबाऊ चीजों पर चलता है। वह दोपहर आपको जीनियस जैसा महसूस कराती है। वह उबाऊ शाम आपको पैसे कमाती है।
मेरे कब्रिस्तान फ़ोल्डर में इकतालीस डेमो हैं। मेरे Stripe डैशबोर्ड में तीन प्रोडक्ट हैं। उन्हें अलग करने वाली एकमात्र चीज वह हिस्सा था जिसे मैं छोड़ देता था।
यूजर आपके लिए मुफ्त में यह करे उससे पहले जाएं और अपने डेमो को खुद तोड़ें।
