প্রোগ্রামারদের টাচ টাইপিং মূলত সেই কি-গুলো নিয়ে, যেগুলো সাধারণ টাইপিং কোর্স বাদ দিয়ে যায়: অঙ্ক, ব্র্যাকেট, অপারেটর আর তাদের ঘিরে থাকা Shift-এর সমন্বয়। যে প্রোগ্রামার সাধারণ লেখা 90 WPM-এ টাইপ করেন, তিনি কোডে ধীর হতে পারেন, আর 50 WPM-এর একজন টাইপিস্ট কোডে দ্রুত হতে পারেন। পরীক্ষার সময় নিজেদের সোর্স ফাইল কাস্টম মোডে পেস্ট করতে গিয়ে আমরা এটি লক্ষ করেছিলাম। শব্দ মোডের তুলনায় স্পিড এক-তৃতীয়াংশ বা তার বেশি কমে গিয়েছিল, প্রতি-কি হিটম্যাপে সংখ্যার সারি আর ডান কড়ে আঙুল জ্বলে উঠেছিল, আর সবচেয়ে ধীর বার্স্টগুলো ছিল ব্র্যাকেটযুক্ত টোকেনে।
কোড টাইপিং মাপতে সাধারণ লেখার WPM কেন দুর্বল মাপকাঠি
কোড তিনভাবে সাধারণ লেখা থেকে আলাদা, আর প্রচলিত ইংরেজি শব্দ দিয়ে বানানো টাইপিং টেস্ট এর কোনোটিই মাপে না।
প্রথমটি হলো অক্ষরের মিশ্রণ। আমরা গুনে দেখেছি। এই ব্লগের প্রথম দশটি লেখায় স্পেস বাদে প্রতি 100টি অক্ষরের মধ্যে মোটামুটি 93টি বর্ণ, 5টি যতিচিহ্ন আর 2টি অঙ্ক। npm-এর কমান্ড-লাইন টুলের JavaScript সোর্সে বর্ণ নেমে আসে মোটামুটি 80-তে আর চিহ্ন উঠে যায় 19-এ। Python-এর json আর email মডিউলে বর্ণ 80 থেকে 85, আর আমাদের একটি ঘন বিল্ড স্ক্রিপ্টে 64, যার অক্ষরের এক-তৃতীয়াংশ চিহ্ন। অর্থাৎ কোডে আমাদের সাধারণ লেখার তুলনায় মোটামুটি তিন থেকে সাত গুণ বেশি চিহ্ন। এদের বেশিরভাগ থাকে ওপরের সারিতে বা Shift লাগে, মানে ডান কড়ে আঙুল আর দুর্বলতর নাগাল। আমাদের ইংরেজি শব্দের টেস্ট একটি সাবটাইটেল কর্পাসের সবচেয়ে প্রচলিত 1,000টি শব্দ দিয়ে বানানো; "{" তাদের মধ্যে নেই।
দ্বিতীয়টি হলো ছন্দ। সাধারণ লেখা টাইপ হয় লম্বা টানা ধারায়। কোড টাইপ হয় ভাবা, স্ক্রল করা আর পড়ার বিরতির মাঝে মাঝে ছোট ছোট ঝটকায়। 136 মিলিয়ন কিস্ট্রোক নিয়ে 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%-এ স্থির না হওয়া পর্যন্ত শুধু সংখ্যার সারি অনুশীলন করুন, প্রতিটি অঙ্কের ঠিক নিচে হোম রো-তে যে আঙুল আছে সেটি দিয়ে, তারপর সাধারণ লেখার মধ্যে সংখ্যা মেশান।