मैं, एक शुरुआती डेवलपर नहीं, आपके (डेवलपर) द्वारा मेरे लिए लिखे गए ट्यूटोरियल को कैसे पढ़ता/पढ़ती हूँ
(anniemueller.com)- यह लेख मज़ाकिया अंदाज़ में बताता है कि एक शुरुआती व्यक्ति को डेवलपर्स द्वारा लिखे गए तकनीकी ट्यूटोरियल पढ़ते समय कितनी उलझन और बाधाओं का सामना करना पड़ता है
- डेवलपर्स द्वारा अक्सर इस्तेमाल किए जाने वाले तकनीकी शब्द और संक्षेप शुरुआती लोगों को बिना किसी संदर्भ वाली किसी एलियन भाषा जैसे लगते हैं
- ट्यूटोरियल के इंस्टॉलेशन स्टेप्स, फ़ाइल पाथ और टर्मिनल कमांड इतने जटिल होते हैं या इतने कुछ छोड़ देते हैं कि उन्हें समझना मुश्किल हो जाता है
- लेखिका बताती हैं कि जो बातें डेवलपर की नज़र में बिल्कुल स्वाभाविक लगती हैं, वही शुरुआती लोगों के लिए घंटों की खोज और trial-and-error की दीवार बन जाती हैं
- यह लेख ट्यूटोरियल लिखने वाले डेवलपर्स को याद दिलाता है कि शुरुआती के नज़रिए से ज़्यादा सहज और स्पष्ट तरीके से समझाना ज़रूरी है
लेख की पृष्ठभूमि और समस्या-बोध
- लेखिका, जो डेवलपर नहीं बल्कि एक शुरुआती पाठक हैं, बताती हैं कि डेवलपर्स द्वारा लिखे गए ट्यूटोरियल पढ़ते समय कैसा अनुभव होता है
- ट्यूटोरियल में आने वाले तकनीकी शब्दों और टूल के नामों का क्या मतलब है, इसका बिल्कुल अंदाज़ा न होने की स्थिति को व्यंग्यात्मक ढंग से दिखाया गया है
- उदाहरण के लिए Hoobijag, Snarfus, Shamrock portal जैसे काल्पनिक तकनीकी नामों का उपयोग करके यह दिखाया गया है कि शुरुआती की नज़र में सब कुछ कितना उलझा हुआ लगता है
मूल पाठ का अनुवाद
“नमस्ते! मैं एक डेवलपर हूँ। मेरा प्रासंगिक अनुभव कुछ ऐसा है: मैं Hoobijag में कोड करता हूँ और कभी-कभी jabbernocks भी इस्तेमाल करता हूँ, और हाँ, ABCDE++++ भी करता हूँ (लेकिन ABCDE+/^+ तो कभी नहीं, वह तो बकवास है, है ना? हाहा!) और मुझे Shoobababoo के साथ काम करना पसंद है और कभी-कभी kleptomitrons भी संभालता हूँ। मुझे Company[1] में Shoobaboo से जुड़ा कोड लिखने का मौका मिला, और उसी ने मुझे Snarfus तक पहुँचाया। चलिए, शुरू करते हैं!
इस ट्यूटोरियल के बारे में
मैंने पहली बार Snarfus में एक बहुत ही सरल चीज़[2] करना शुरू किया था, लेकिन जितना ज़्यादा इस्तेमाल किया, उतनी उसकी क्षमता नज़र आने लगी! chromus थोड़ा उलझा हुआ है, लेकिन असल में यह बहुत versatile है। इसलिए मैंने hoobastank की जगह quagmire से pintafore को argyling करना शुरू कर दिया! पागलपन है, पता है। लेकिन कुछ हद तक यह चला, और सच कहूँ तो काफ़ी मज़ेदार भी था… जब तक कि एक बड़ी रुकावट सामने नहीं आ गई: fisterfunk, shamrock portal से बिल्कुल बात ही नहीं कर रहा था, और Snarfus को beep-boops भी नहीं भेज रहा था! बेशक, आप समझते हैं इसका क्या मतलब है[3]— अब पूरा hoob-टनल gramelions से जाम हो गया है। यह बिल्कुल स्वीकार्य नहीं है।
मैं लगभग हार मानने ही वाला/वाली था/थी, लेकिन तभी मुझे समझ आया: अगर backside Snarfus stagnator को backside shamrock Klingon troglodyte emulater से जोड़ दें, तो बात बन जाती है! सब कुछ beep-boops और ding-dongs करने लगता है, और तब जाकर हम ट्यूटोरियल के असली विषय तक पहुँचते हैं। और फिर आप अपनी मनचाही तरह से वह बहुत ही सरल चीज़ कर सकते हैं! काफ़ी शानदार है, है ना[4]।
तो इसे सेट अप करने का तरीका यह है:
- टर्मिनल में
ajkl;gawgor;iqeg;iJLkqen. wl;R aw;oeiga 4648664 arjarwgj;llj;ja fadgfgajkljl; wlj;sdjk;lfasटाइप करें - अब
folder/hidden/deep/in/the/file/system/surprise!.fileपर जाएँ और फ़ाइल की सामग्री कॉपी करें। अगर वह वहाँ नहीं है, तो संभव है कि वहlibrary/library/library/llibrary/liiiiiibrarrrary/llllliiiiibrary/hidden/hidden/hiding/you can’t find me/hidden/nope/never/hahahahereiam.fileमें हो - फिर से टर्मिनल पर लौटें, फ़ाइल की सामग्री पेस्ट करें, और
64A786AGR45JAR; rdja;jg [[]][[]][[]][[]]][[]()()()()()()()()(){{}{}{}|{}{|}{}{|}{ ////////////////!! !!!! !! //// !!! agjlkargji;lwej;OI [ASRGASG[]ASGDASG[]EAEadgasg[]EAGE[edaga][]ahgr-0-0=-0-=0-=0=0-0=-0-=0=-0-=0=-0=-0!!!टाइप करें - Boop![5]
- Snarfus खोलें और अभी बनाई गई फ़ाइल अपलोड करें
- बस मज़े के लिए, अगर आप chronostatiomatrix के sham को अनसेट करना चाहते हैं —
()()(]]asdg a=-do —cd go cd stay —sususudododo baby shark—][]भी चला सकते हैं। यह वैकल्पिक है - हो गया!
बताइए कि यह आपके लिए कैसा काम करता है। और यह भी जानने की जिज्ञासा है कि क्या कोई इस तरीके को GewGawGamma या ometer2.7 के साथ भी इस्तेमाल कर रहा है।”
फ़ुटनोट की व्याख्या
- कोई मशहूर कंपनी लगती है, लेकिन मैं इसे नहीं जानता/जानती
- यह बिल्कुल भी सरल नहीं है
- मुझे नहीं पता इसका क्या मतलब है
- शानदार तो है, लेकिन मुझे समझ नहीं आया। फिर भी अच्छा है कि आप यह कर पाए
- शुरुआती 3 स्टेप्स में शायद लगभग 7 घंटे और 193 बार सर्च करना पड़ेगा। लेकिन जब आप Boop! तक पहुँचते हैं, तो वह काफ़ी रोमांचक होता है
समापन
- “यह बस मज़ाक के लिए लिखा गया है। ज्ञान साझा करने और ट्यूटोरियल लिखने वाले सभी लोगों का मैं दिल से आभार मानता/मानती हूँ।”
1 टिप्पणियां
Hacker News टिप्पणी
मैं इस तरीके की ज़ोरदार सिफारिश करता/करती हूँ कि किसी ऐसे व्यक्ति से, जिसे बस न्यूनतम जानकारी हो, दस्तावेज़ को फॉलो करवाया जाए और आप बगल में बिना कुछ बोले बस देखते रहें। इस दौरान बिल्कुल मदद न करें, सिर्फ़ observe करें। इस प्रक्रिया में पता चलता है कि user कहाँ अटकता है, लेखक किन बातों या settings को अपनी अधिक familiarity की वजह से मानकर चल गया और लिखना भूल गया, जैसी कई समस्याएँ सामने आती हैं। अगर user बिना ज़्यादा stress के लक्ष्य तक पहुँच जाए, तो documentation पास मानी जा सकती है। नहीं तो जहाँ-जहाँ failure हुआ, उन सभी points को बिना कुछ छोड़े दर्ज करना चाहिए, हर issue को सुधारना चाहिए, और फिर किसी नए व्यक्ति के साथ दोबारा test करना चाहिए। मैंने FAANG जैसी बड़ी कंपनियों के docs भी इस कसौटी पर fail होते देखे हैं। हमारी organization ने ऊँचा standard रखा है, इसके लिए मैं सच में आभारी हूँ। इस तरह docs बनाने से बार-बार होने वाली meetings, support requests, और video calls कम होते हैं, और users खुद समस्याएँ हल कर पाते हैं
ब्लॉग पोस्ट का शीर्षक "मैं, एक गैर-डेवलपर, आपके द्वारा लिखे गए डेवलपर ट्यूटोरियल को पढ़ता/पढ़ती हूँ" था, लेकिन HN title बदलकर "मैं, एक beginner developer..." कर दिया गया। गैर-डेवलपर और beginner developer बिल्कुल अलग होते हैं। उदाहरण के लिए, HR team या पूरी तरह non-technical background वाले व्यक्ति के लिए internal terminology या concepts भी पूरी तरह अनजाने हो सकते हैं। ऐसे में अगर developer ने पूरी तरह disconnected explanation लिखी हो, तो उसकी आलोचना जायज़ है। दूसरी तरफ़ beginner developer, चाहे चीज़ें कठिन हों, नए terms और concepts खुद खोज सकता/सकती है, और समय के साथ नए आने वाले beginners के लिए docs update भी कर सकता/सकती है
ज़्यादातर tutorials गैर-डेवलपर्स के लिए नहीं होते, बल्कि साथी developers के बीच information exchange जैसे होते हैं, और इस अर्थ में वे academic papers की तरह किसी खास knowledge community के लिए लिखे documents के समान स्थिति रखते हैं। यह तरीका भी बुरा नहीं है। बल्कि, मैंने जो चीज़ें पहले note की थीं, उन्हें बाद में फिर से देखना भी आसान होता है। इसी वजह से beginners के लिए अलग courses और study materials मौजूद हैं। अगर हर tutorial को हर बार 30,000 शब्दों के पूरे background explanation से शुरू करना पड़े, तो कोई भी उसे अंत तक नहीं पढ़ेगा। उल्टा, आप जितना भी ज़्यादा background जोड़ दें, किसी न किसी को वह फिर भी अपर्याप्त लगेगा
बहुत से technical writers 'curse of knowledge' को सही तरह से पहचान ही नहीं पाते। मुझे पहले WoW (World of Warcraft) guild चलाने का अनुभव है। 40 लोग एक साथ dungeon में जाते थे और मिलकर कई bosses से लड़ते थे, जहाँ बहुत छोटी गलती से पूरी टीम wipe हो सकती थी। इसलिए हम सब Teamspeak पर इकट्ठा होकर strategy पहले से विस्तार से समझाते थे। वहाँ सबसे बड़ा lesson था: "मानकर चलो कि सामने वाले को यह नहीं पता कि मैं क्या कह रहा/रही हूँ" और "जो एक बार कहा है, उसे दोहराओ भी"। ज़्यादातर लोग कुछ न समझने पर भी बीच में टोककर सवाल नहीं पूछते, इसलिए लगातार खुद से यह पूछना कि 'मैं कौन-सा term बोल रहा/रही हूँ?' और 'क्या सामने वाला इस concept से अनजान हो सकता है?' और फिर accordingly explanation जोड़ना, बहुत प्रभावी साबित हुआ। इस तरह का communication experience technical communication में भी सीधे लागू होता है, और अगर आप 'curse of knowledge' से पार पाने की आदत विकसित कर लें, तो दूसरों की समझ को काफ़ी बेहतर बना सकते हैं
बहुत से project homepages या GitHub README इस अंदाज़ में लिखे जाते हैं मानो "जो यह पढ़ रहा है, उसे सब पहले से पता है"। docs देखते समय मैं चाहता/चाहती हूँ कि कुछ बारीकियाँ ज़रूर मिलें: 'यह tool क्यों चाहिए', 'यह किस problem को solve करता है', 'दूसरे समान tools से यह कैसे अलग है', 'क्या यह अभी भी actively used है', और 'क्या इसके फायदे-नुकसान समझने लायक पर्याप्त material दिया गया है'। सिर्फ़ 5 मिनट लगाकर अगर कोई यह सोच ले कि "एकदम beginner क्या जानना चाहेगा?", और वही लिख दे, तो accessibility बहुत बढ़ जाती है। कई साल लगाकर बनाए गए project के लिए यह सच में दुखद है कि users बस इस वजह से छोड़ दें क्योंकि उन्हें यह समझ ही न आए कि आगे कैसे बढ़ना है। और documentation के अलग-अलग प्रकार की भूमिका समझना भी महत्वपूर्ण है। https://diataxis.fr/ एक अच्छा शुरुआती बिंदु है
documentation लिखते समय सबसे महत्वपूर्ण बात है 'target reader के knowledge level' को साफ़-साफ़ तय करना। baseline ऊँची रखें या नीची, इससे फ़र्क नहीं पड़ता, लेकिन अगर आप उस baseline से बहुत दूर चले गए, तो कुछ readers ज़रूर असंतुष्ट होंगे। ऐसी स्थिति में आप बहाने चुन सकते हैं, या समाधान खोज सकते हैं। सच यह है कि आजकल AI, Google, books आदि से लगभग हर चीज़ तुरंत खोजी जा सकती है। अगर आपको जानना है कि 'Shoobababoo क्या है' या 'quagmire क्यों इस्तेमाल होता है', तो search कर सकते हैं। बेशक, आदर्श यह है कि documentation जहाँ तक संभव हो external information के बिना self-contained हो, लेकिन दुनिया हमेशा इतनी उदार नहीं होती
लंबे समय तक mentoring करते हुए मेरा मुख्य सिद्धांत रहा है: "जो जानते हो, उसे बाँटना सबसे अच्छा है"। अगर आपको कुछ पता है, तो उसे समझाइए; अगर सामने वाले को पहले से पता होगा, तो बस उसकी पुष्टि हो जाएगी, और अगर नहीं पता होगा, तो बहुत मदद मिलेगी। कभी-कभी लोग शिकायत करते हैं कि मैं बहुत verbose हूँ, लेकिन जब मैं कहता/कहती हूँ, "यह इसलिए था क्योंकि शायद कोई junior, customer, या manager भी इसे देखे", तो ज़्यादातर लोग समझ जाते हैं। यह सिद्धांत development, reporting, people management — हर जगह लागू होता है
हाल में मैंने Gitlab से DigitalOcean Kubernetes पर app deploy करने की कोशिश की। इसमें 3-4 third-party tools implement करने पड़े, बिना यह बताए कि वे क्या करते हैं, और command line में कौन-सा नाम या path डालना है, यह भी खुद समझना पड़ा। किस चीज़ को baseline मानना है और किससे match करना है, इसकी भी कोई explanation नहीं थी। Docker में मेरी skill काफ़ी अच्छी है, फिर भी इन tools की docs इतनी unfriendly लगीं कि लगता था बिना docs के ही बेहतर होता
मैंने किताबें लिखना छोड़कर tutorial website बनाने का मुख्य कारण यही था कि tutorials को अधिक लोगों के लिए accessible बनाने में तरह-तरह के interactive tools (
<abbr>element आदि) मदद कर सकते हैं। फिर भी, आज का web content अब भी paper book की सीमाओं में अटका हुआ लगता है, यह निराशाजनक है। click, hover, collapsible sections, video, user response जैसी इतनी सारी सुविधाएँ होने के बावजूद अब भी दीवार जैसी लंबी text blocks ही भरी रहती हैं। यहाँ तक कि OP भी footnotes पर click करने पर page के नीचे scroll कराने वाला तरीका इस्तेमाल करता/करती है, जो web की संभावनाओं का पूरा उपयोग नहीं लगतासच कहें तो, ज़्यादातर tutorials न गैर-डेवलपर्स के लिए होते हैं, न developers के लिए; वे बस 'अनावश्यक रूप से लंबा text' होते हैं जिनमें अंततः एक-दो अहम steps छूट जाते हैं। मेरे हिसाब से सबसे बड़ा कारण यह है कि लोगों के लिए ऐसे लिखना कठिन होता है जैसे वे सच में किसी और को समझा रहे हों। जो बातें सिर्फ़ आपके दिमाग़ में हैं, अगर उन्हें आप लिखकर बाहर नहीं लाएँगे, तो reader उन्हें कभी नहीं जान पाएगा। 'tutorial' की जगह 'cookbook' शैली में लिखना ज़्यादा उपयोगी हो सकता है, क्योंकि वह व्यावहारिक इस्तेमाल के लिए बेहतर होता है और version upgrade के बाद बेकार हो जाने से भी कुछ हद तक बचाता है