प्रोग्रामरों के लिए टच टाइपिंग ज़्यादातर उन कुंजियों के बारे में है जिन्हें आम टाइपिंग कोर्स छोड़ देता है: अंक, ब्रैकेट, ऑपरेटर और उनके आसपास के Shift वाले कॉम्बिनेशन। जो प्रोग्रामर गद्य 90 WPM पर टाइप करता है, वह कोड में धीमा हो सकता है, और 50 WPM वाला गद्य टाइपिस्ट कोड में तेज़ हो सकता है। हमें यह तब दिखा जब हम टेस्टिंग के दौरान अपनी ही सोर्स फ़ाइलें कस्टम मोड में चिपका रहे थे। शब्द मोड के मुकाबले स्पीड एक-तिहाई या उससे ज़्यादा गिर गई, प्रति-कुंजी हीटमैप नंबर रो और दाईं छोटी उंगली पर चमक उठा, और सबसे धीमे बर्स्ट उन टोकन पर थे जिनमें ब्रैकेट थे।
गद्य वाली WPM कोड टाइपिंग का कमज़ोर पैमाना क्यों है
कोड तीन तरह से टेक्स्ट से अलग है, और आम अंग्रेज़ी शब्दों से बना टाइपिंग टेस्ट इनमें से कुछ भी नहीं मापता।
पहला है अक्षरों का मेल। हमने गिनती की। इस ब्लॉग के पहले दस लेखों में हर 100 गैर-स्पेस अक्षरों में से लगभग 93 अक्षर (letters) हैं, 5 विराम चिह्न और 2 अंक। npm के कमांड-लाइन टूल के JavaScript सोर्स में अक्षर घटकर लगभग 80 रह जाते हैं और चिह्न 19 तक पहुँच जाते हैं। Python के json और email मॉड्यूल में 80 से 85 अक्षर आते हैं, और हमारी एक घनी बिल्ड स्क्रिप्ट में 64, जिसके एक-तिहाई अक्षर चिह्न हैं। यानी कोड में हमारे गद्य से लगभग तीन से सात गुना ज़्यादा चिह्न होते हैं। इनमें से ज़्यादातर ऊपरी पंक्ति पर हैं या Shift माँगते हैं, यानी दाईं छोटी उंगली और कमज़ोर पहुँच वाली जगहें। हमारे अंग्रेज़ी शब्द टेस्ट एक सबटाइटल कॉर्पस के 1,000 सबसे आम शब्दों से बने हैं; "{" उनमें नहीं है।
दूसरा है लय। गद्य लंबी लड़ियों में टाइप होता है। कोड छोटे-छोटे बर्स्ट में टाइप होता है, जिनके बीच सोचने, स्क्रॉल करने और पढ़ने के लिए ठहराव आते हैं। 13.6 करोड़ कीस्ट्रोक पर Dhakal और साथियों के 2018 के अध्ययन में स्वयंसेवक, जो वाक्य देखकर टाइप कर रहे थे, दो कुंजियों के बीच औसतन लगभग 239 ms लेते थे। प्रोग्रामर का दिन कई-कई सेकंड के अंतरालों से भरा होता है, और छोटी लड़ियों के अंदर की बर्स्ट स्पीड किसी भी औसत से ज़्यादा मायने रखती है।
तीसरा है एडिटर। ऑटोकम्प्लीट, स्निपेट और कीबोर्ड शॉर्टकट की वजह से काम करता प्रोग्रामर स्क्रीन पर दिखने वाले अक्षरों का एक छोटा हिस्सा ही टाइप करता है। कोई भी टाइपिंग टेस्ट इसे नहीं माप सकता, और हमारा ऐसा होने का दिखावा नहीं करता।
क्या प्रोग्रामिंग के लिए टाइपिंग स्पीड ज़रूरी है?
लोगों के सोचने से कम, और किसी दूसरी जगह पर। जब कोई पूछता है कि क्या प्रोग्रामर बनने के लिए 60 WPM काफ़ी है, तो जवाब है हाँ, एक शर्त के साथ: अगर आप चिह्नों और अंकों के लिए नीचे देखते हैं, तो आप कोड 60 WPM पर टाइप नहीं करते। सोच का सिलसिला तोड़े बिना एक लाइन टाइप कर पाना कच्ची स्पीड से ज़्यादा मायने रखता है, और कीबोर्ड की ओर नीचे देखना ही वह सिलसिला तोड़ता है।
चिह्न तेज़ी से कैसे टाइप करें, और यह कोई क्यों नहीं सिखाता
टाइपिंग फ़ोरम पर एक सवाल बार-बार आता है: कोई व्यक्ति अक्षर ठीक-ठाक स्पीड से टच टाइप कर लेता है, लेकिन कोडिंग शुरू करते ही वह फिर चिह्नों, अंकों और यहाँ तक कि कैपिटल अक्षरों को भी ढूँढ़ने लगता है, और वह इन्हें धीरे-धीरे सीखने का कोई तरीका चाहता है, वैसे ही जैसे उसने अक्षर सीखे थे, कुछ-कुछ कुंजियाँ करके।
चिह्नों को कठिन बनाने वाली एक वजह Shift है। हमने जिस npm सोर्स की गिनती की, उसमें चिह्नों के लगभग 45% कीस्ट्रोक ( ) { } : और $ जैसे Shift वाले अक्षर थे, यानी एक भी कैपिटल अक्षर गिनने से पहले ही हर 100 गैर-स्पेस अक्षरों में लगभग 9। इसलिए पहले Shift की आदत ठीक करें: Shift उस हाथ से दबाएँ जो वह अक्षर टाइप नहीं कर रहा। ( और ) दाएँ हाथ के 9 और 0 पर हैं, इसलिए वे बायाँ Shift लेते हैं; ! @ # $ बाएँ हाथ पर हैं, इसलिए वे दायाँ Shift लेते हैं। खुद से सीखे ज़्यादातर टाइपिस्ट हर चीज़ के लिए बायाँ Shift दबाते हैं, और ! के लिए इसका मतलब है बाईं छोटी उंगली से एक साथ दो कुंजियाँ दबवाना। अपनी आदत जाँचने के लिए @ और $ वाली एक लाइन टाइप करें और देखें कि कौन-सी छोटी उंगली हिलती है।
चिह्नों का अकेले अभ्यास करना मुश्किल है और वैसे भी नीरस है: अक्षर शब्दों के साथ आते हैं, ब्रैकेट कोड के साथ आते हैं, और बेतरतीब कोड दिलचस्प नहीं होता। हमारा जवाब है चिह्नों का अभ्यास असली कोड की लाइनों पर, एक बार में एक वर्ग।
एक बार में एक वर्ग
यह वह क्रम है जो हम अपनाएँगे, और वही क्रम उस चिह्न ट्रैक का है जो हम अभ्यास पेज के लिए बना रहे हैं। जब तक वह आता नहीं, आप असली कोड कस्टम मोड में चिपकाकर यही कर सकते हैं, एक बार में चिह्नों का एक वर्ग, और अगला वर्ग तब तक न जोड़ें जब तक मौजूदा वर्ग 95% सटीकता पर न पहुँच जाए:
- अंक। नंबर रो, जिसमें होम रो की उंगलियाँ ऊपर तक पहुँचती हैं। यह सबसे पहले आता है क्योंकि यह अक्षरों के बाद सबसे ज़्यादा इस्तेमाल होने वाला वर्ग है और क्योंकि लगभग हर किसी की यहाँ कोई बुरी आदत होती है, जैसे तर्जनी से 4, 5, 6 और 7 सब दबाना। नंबर टेस्ट से जल्दी जाँच हो जाती है।
- जोड़ों में ब्रैकेट। पहले ( ), फिर [ ], फिर { }। जोड़ों में, क्योंकि आप लगभग कभी एक को दूसरे के बिना टाइप नहीं करते: उस npm सोर्स में ( 6,195 बार आता है और ) 6,194 बार। खोलने-बंद करने की हरकत को एक इकाई की तरह सीखना ही इसे तेज़ बनाता है। बंद करने वाला ब्रैकेट वह जगह है जहाँ ज़्यादातर लोगों की लय टूटती है।
- ऑपरेटर। = + - * / और कोण वाले ब्रैकेट, साथ में संयुक्त रूप (==, =>, +=, !=)। ये नंबर रो और दाएँ हाथ की विराम चिह्न वाली कुंजियों पर बिखरे हैं, और कई को उसी हाथ पर Shift चाहिए, जो अटपटा हिस्सा है।
- उद्धरण चिह्न और विराम चिह्न। ' " ; : , . जिनमें ज़्यादातर काम दाईं छोटी उंगली करती है। सेमीकोलन और कोलन पर C-परिवार और Python के टाइपिस्ट सबसे ज़्यादा अलग होते हैं, इसलिए उसी भाषा की लाइनों पर अभ्यास करें जो आप इस्तेमाल करते हैं।
- शेल और बाकी अजीब चिह्न। पाइप, बैकस्लैश, टिल्ड, बैकटिक, कैरेट, एम्परसैंड, हैश, डॉलर, ऐट-साइन और _ कुंजी। _ और बैकटिक ज़्यादातर लोगों को चौंकाते हैं; snake_case कोड में _ लगातार आता है, और ज़्यादातर टाइपिस्ट उसे गलत उंगली से दबाते हैं।
ज़्यादातर लोगों को हर वर्ग के लिए दस-दस मिनट के सत्रों के एक-दो हफ़्ते लगते हैं, इसलिए पूरा ट्रैक दो से तीन महीने का है। यह अक्षर सीखने से धीमा है, क्योंकि चिह्नों वाली कुंजियाँ ज़्यादा दूर हैं और जिन आदतों को आप बदल रहे हैं वे ज़्यादा पुरानी हैं।
प्रति-कुंजी आँकड़े देखकर पता चलता है कि क्या गड़बड़ होती है: लोग चिह्न सही उंगली से सीख लेते हैं और फिर दबाव में पुरानी आदत पर लौट आते हैं, क्योंकि कुछ हफ़्तों तक पुरानी हरकत ज़्यादा तेज़ रहती है। आँकड़ों में यह ऐसी कुंजी की तरह दिखता है जिसका अंतराल बहुत ऊपर-नीचे होता है: सही पहुँच पर तेज़, और गलत पर धीमा। इलाज यह है कि उस वर्ग पर एक हफ़्ता और टिके रहें।
ब्रैकेट के जोड़े और ऑटो-क्लोज़िंग
एडिटर ब्रैकेट अपने-आप बंद कर देते हैं, जिससे एक जायज़ सवाल उठता है: बंद करने वाला ब्रैकेट टाइप करना क्यों सीखें?
दो वजहें हैं। ऑटो-क्लोज़िंग एक जैसी नहीं चलती: यह कुछ जगहों पर काम करती है और कुछ पर नहीं, जैसे टर्मिनल या चैट विंडो में। जो टाइपिस्ट इस पर निर्भर रहता है, वह हर बार यह जाँचने के लिए झिझकता है कि यह चली या नहीं, और वह झिझक एक कीस्ट्रोक से महँगी पड़ती है। और अपने-आप बंद हुए ब्रैकेट के ऊपर टाइप करना (जब एडिटर पहले ही ")" डाल चुका हो तब ")" दबाना) भी अपने-आप में एक कीस्ट्रोक है, इसलिए बंद करने वाला ब्रैकेट आप टाइप करते ही हैं।
जब आप यहाँ कस्टम मोड में कोड चिपकाते हैं, तो टेक्स्ट को खाली जगहों पर तोड़ा जाता है, इसलिए इंडेंटेशन गायब हो जाता है और हर टोकन एक शब्द बन जाता है। यह एक सीमा भी है और सुविधा भी: आपको हर Python लाइन की शुरुआत में चार स्पेस टाइप नहीं करने पड़ते, और उनका अभ्यास भी नहीं होता। एक ठीक-ठाक कोड मोड, जो इंडेंटेशन और अपने-आप बंद होने वाले जोड़ों को एडिटर की तरह संभाले, हमारी सूची में है, और यह जितना सुनने में लगता है उससे कठिन है।
कोड बनाम गद्य की स्पीड
हमारे पास कोड मोड के इतने नतीजे नहीं हैं कि पर्सेंटाइल प्रकाशित कर सकें, और हम उन्हें गढ़ने के बजाय इंतज़ार करना पसंद करेंगे। हमारे अपने रन में, किसी असली स्निपेट पर कोड की स्पीड उसी व्यक्ति की गद्य स्पीड के लगभग आधे से दो-तिहाई के बीच रही है, और यह अनुपात सामान्य अभ्यास से ज़्यादा चिह्नों के अभ्यास से सुधरता है।
जो संख्या एक से दूसरे पर लागू होती है, वह सटीकता है। जो प्रोग्रामर गद्य 97% सटीकता पर और कोड 90% पर टाइप करता है, उसे चिह्नों की समस्या है, और प्रति-कुंजी हीटमैप ठीक-ठीक दिखाता है कि कौन-से चिह्न। जो प्रोग्रामर दोनों पर 97% पर है, उसे बस और कोड टाइप करने की ज़रूरत है। हमारी स्कोरिंग पद्धति समझाती है कि सटीकता सुधारी गई गलतियों को कैसे गिनती है।
किसी मानक पैमाने के लिए, अंक चालू करके विराम चिह्न टेस्ट हमारे नियमित मोड में कोड के सबसे करीब है। इसमें कर्ली ब्रैकेट नहीं होंगे, लेकिन यह Shift कुंजी और नंबर रो को शामिल करता है, और ज़्यादातर लोगों के लिए कमी वहीं होती है।
कीबोर्ड से जुड़े फ़ैसले जो मदद करते हैं
प्रोग्रामरों को कीबोर्ड पर जो सलाह मिलती है, वह ज़्यादातर स्विच के बारे में होती है, और ज़्यादातर मुद्दे से हटकर।
स्विच से ज़्यादा लेआउट मायने रखता है। Dvorak ब्रैकेट को ऊपर नंबर रो पर ले जाता है और ज़्यादातर विराम चिह्नों की जगह बदल देता है। Colemak और Workman ब्रैकेट वहीं रखते हैं जहाँ QWERTY में हैं, लेकिन दोनों सेमीकोलन को वहाँ ले जाते हैं जहाँ QWERTY में P है, जो C-परिवार के प्रोग्रामरों को खलेगा। विस्तार से लेआउट वाले लेख में है।
बड़े कीबोर्ड से बेहतर है चिह्नों की एक लेयर। कई स्प्लिट और कॉम्पैक्ट कीबोर्ड आपको अंगूठे की एक कुंजी दबाकर रखने पर खुलने वाली लेयर पर ब्रैकेट और ऑपरेटर होम रो की उंगलियों के नीचे रखने देते हैं। प्रोग्रामर जिन हार्डवेयर बदलावों की बात करते हैं, उनमें से हम सबसे पहले यही आज़माएँगे, क्योंकि इसके बाद आपको किसी चिह्न के लिए कभी नीचे नहीं देखना पड़ता।
ISO बनाम ANSI। ISO कीबोर्ड पर (UK और ज़्यादातर यूरोप में), बाएँ Shift के बगल वाली अतिरिक्त कुंजी और ऊँची Enter कुंजी बैकस्लैश और पाइप की जगह बदल देती हैं। अगर आप एक पर अभ्यास करते हैं और दूसरे पर काम करते हैं, तो आपकी छोटी उंगली चूकेगी। इसी वजह से हमारा एम्युलेशन Colemak-DH के दोनों रूप देता है।
स्पीड के लिए स्विच मुश्किल से ही मायने रखते हैं। लीनियर, टैक्टाइल और क्लिकी स्विच अहसास और आवाज़ में अलग हैं, और कीस्ट्रोक लॉग को पता नहीं होता कि आपने कौन-सा दबाया। हमारा मैकेनिकल कीबोर्ड वाला लेख आँकड़ों से गुज़रता है।
आवाज़ कुछ लोगों को फ़ीडबैक में मदद करती है: गलती वाली आवाज़ बिना नीचे देखे बता देती है कि कोई चिह्न गलत गया। चिह्न सीखते समय इसे चालू रखें।
प्रोग्रामर का दस मिनट का सत्र
चिह्न ट्रैक में लगने वाले दो-तीन महीनों तक हम रोज़ यह करेंगे:
- दो मिनट: वॉर्म-अप के लिए 30 सेकंड का शब्द टेस्ट, सटीकता 97% पर।
- छह मिनट: मौजूदा चिह्न वर्ग, अपने ही कोड से कस्टम टेक्स्ट में चिपकाकर। पुरानी उंगली पर लौटने का पहला संकेत दिखते ही रुक जाएँ।
- दो मिनट: जिस भाषा का आप सबसे ज़्यादा इस्तेमाल करते हैं, उसका एक कोड स्निपेट। बाद में WPM नहीं, प्रति-कुंजी हीटमैप देखें।
जिन दिनों आपके पास दस मिनट न हों, उस दिन बंद करने वाला ब्रैकेट खुद टाइप करें। यह इस लेख की सबसे छोटी आदत है और आमतौर पर सबसे पहले फ़ायदा देती है।
अक्सर पूछे जाने वाले सवाल
प्रोग्रामरों के लिए अच्छी टाइपिंग स्पीड कितनी है?
अगर आप चिह्न और अंक टच टाइप करते हैं, तो लगभग 40 WPM से ऊपर कुछ भी काम चलाने लायक है। उसके आगे रुकावट उंगलियों की स्पीड नहीं, बल्कि सोचना, पढ़ना और एडिटर का हुनर है।
अंकों की टच टाइपिंग कैसे सीखूँ?
नंबर रो का अलग से अभ्यास तब तक करें जब तक सटीकता 95% पर न टिक जाए, हर अंक के लिए होम रो पर उसके ठीक नीचे वाली उंगली से, फिर अंकों को सामान्य टेक्स्ट में मिलाएँ।