الكتابة باللمس للمبرمجين: الرموز والأرقام والسرعة التي تهمّ

الكتابة باللمس للمبرمجين تدور في معظمها حول المفاتيح التي تتخطاها دورات الكتابة العادية: الأرقام والأقواس والعوامل وتركيبات Shift المحيطة بها. فالمبرمج الذي يكتب النصوص بسرعة 90 WPM قد يكون بطيئًا في كتابة الشيفرة، ومن يكتب النصوص بسرعة 50 WPM قد يكون سريعًا فيها. لاحظنا ذلك ونحن نلصق ملفات شيفرتنا المصدرية في الوضع المخصص أثناء الاختبار. فقد انخفضت السرعات بمقدار الثلث أو أكثر مقارنةً بوضع الكلمات، وأضاءت خريطة حرارة المفاتيح على صف الأرقام والخنصر الأيمن، وكانت أبطأ الاندفاعات على الرموز النصية التي فيها أقواس.

لماذا لا يصلح WPM في النصوص العادية مقياسًا لكتابة الشيفرة

تختلف الشيفرة عن النص في ثلاثة أمور، واختبار الكتابة المبني من كلمات إنجليزية شائعة لا يقيس أيًا منها.

الأول هو مزيج الأحرف. لقد أحصيناه. ففي أول عشرة مقالات في هذه المدونة، نحو 93 من كل 100 حرف غير المسافة أحرف هجائية، و5 علامات ترقيم، و2 أرقام. وفي الشيفرة المصدرية بلغة JavaScript لأداة سطر الأوامر في npm، تنخفض الأحرف الهجائية إلى نحو 80 وترتفع الرموز إلى 19. وتأتي وحدتا json وemail في Python بين 80 و85 حرفًا هجائيًا، ونص بناء كثيف لدينا عند 64، وثلث أحرفه رموز. فالشيفرة فيها رموز أكثر من نصوصنا بنحو ثلاثة إلى سبعة أضعاف. ومعظمها في الصف العلوي أو يحتاج إلى Shift، أي إلى الخنصر الأيمن والامتدادات الأضعف. واختبارات الكلمات الإنجليزية لدينا مبنية من أكثر 1,000 كلمة شيوعًا في مدوّنة ترجمات أفلام؛ و"{" ليست بينها.

الثاني هو الإيقاع. النص يُكتب في سلاسل طويلة. أما الشيفرة فتُكتب في اندفاعات قصيرة بين توقفات للتفكير والتمرير والقراءة. وقد بلغ متوسط الفاصل بين المفاتيح لدى متطوعي دراسة Dhakal وزملائه عام 2018 التي حلّلت 136 مليون ضغطة مفتاح، وكانوا ينسخون جملًا، نحو 239 ملّي ثانية. ويوم المبرمج مليء بفجوات تدوم عدة ثوانٍ، وسرعة الاندفاع داخل السلاسل القصيرة أهم من أي متوسط.

الثالث هو المحرر. فالإكمال التلقائي والمقتطفات الجاهزة واختصارات لوحة المفاتيح تعني أن المبرمج في عمله يكتب جزءًا فقط من الأحرف التي تظهر على الشاشة. ولا يستطيع أي اختبار كتابة قياس ذلك، واختبارنا لا يدّعيه.

هل سرعة الكتابة مهمة في البرمجة؟

أقل مما يظن الناس، وفي موضع مختلف. حين يسأل أحدهم هل 60 WPM تكفي ليكون مبرمجًا، فالإجابة نعم، مع تحفّظ: إن كنت تنظر إلى الأسفل لتجد الرموز والأرقام، فـ 60 WPM ليست السرعة التي تكتب بها الشيفرة. والقدرة على كتابة سطر دون أن ينقطع حبل أفكارك أهم من السرعة الخام، والنظر إلى لوحة المفاتيح هو ما يقطعه.

كيف تكتب الرموز أسرع، ولماذا لا يعلّمها أحد

سؤال يتكرر مرارًا في منتديات الكتابة: شخص يستطيع كتابة الأحرف باللمس بسرعة معقولة، لكنه ما إن يبدأ البرمجة حتى يعود إلى البحث عن الرموز والأرقام وحتى الأحرف الكبيرة، ويريد طريقة تدريجية لتعلّمها كما تعلّم الأحرف، بضعة مفاتيح في كل مرة.

جزء مما يجعل الرموز صعبة هو Shift. ففي شيفرة npm التي أحصيناها، كانت نحو 45% من ضغطات الرموز أحرفًا تتطلب Shift مثل ( ) { } : و$، أي قرابة 9 من كل 100 حرف غير المسافة قبل أن تحسب حرفًا كبيرًا واحدًا. لذا أصلح عادة Shift أولًا: اضغط Shift باليد التي لا تكتب الحرف. ( و) على 9 و0 في اليد اليمنى، فتأخذان Shift الأيسر؛ و! @ # $ في اليد اليسرى، فتأخذ Shift الأيمن. ومعظم المتعلّمين ذاتيًا يضغطون Shift الأيسر لكل شيء، وفي حالة ! يعني ذلك أن يضغط الخنصر الأيسر مفتاحين معًا. تحقق من عادتك بكتابة سطر فيه @ و$ وراقب أي خنصر يتحرك.

الرموز صعبة التمرين منفردة ومملة التمرين أصلًا: الأحرف تأتي مع الكلمات، والأقواس تأتي مع الشيفرة، والشيفرة العشوائية ليست ممتعة. وجوابنا هو أن تتمرّن على الرموز في أسطر شيفرة حقيقية، فئةً واحدة في كل مرة.

فئة واحدة في كل مرة

هذا هو الترتيب الذي نتبعه، وترتيب مسار الرموز الذي نبنيه لـ صفحة التدريب. وإلى أن يصدر، يمكنك فعل الشيء نفسه بلصق شيفرة حقيقية في الوضع المخصص، فئة رموز واحدة في كل مرة، دون إضافة الفئة التالية حتى تبلغ الفئة الحالية دقة 95%:

  • الأرقام. صف الأرقام، مع امتداد أصابع صف الارتكاز إلى الأعلى. تأتي أولًا لأنها أكثر فئة غير هجائية استخدامًا، ولأن لدى الجميع تقريبًا عادة سيئة هنا، مثل أن تتولى السبابة 4 و5 و6 و7. واختبار الأرقام فحص سريع.
  • الأقواس أزواجًا. ( ) أولًا، ثم [ ]، ثم { }. أزواجًا لأنك تكاد لا تكتب أحدهما دون الآخر: في شيفرة npm تلك يظهر ( 6,195 مرة و) 6,194 مرة. وتدريب حركة الفتح والإغلاق بوصفها وحدة واحدة هو ما يجعلها سريعة. والقوس الإغلاقي هو حيث ينكسر إيقاع معظم الناس.
  • العوامل. = + - * / وأقواس الزاوية، إضافة إلى الأشكال المركّبة (== و=> و+= و!=). هذه موزعة على صف الأرقام ومفاتيح الترقيم في اليد اليمنى، وبعضها يحتاج إلى Shift في اليد نفسها، وهذا هو الجزء المزعج.
  • علامات الاقتباس والترقيم. ' " ; : , . والخنصر الأيمن يقوم بمعظم العمل. والفاصلة المنقوطة والنقطتان هما أكثر ما يختلف فيه كاتبو لغات عائلة C وPython، فتمرّن على أسطر من اللغة التي تستخدمها.
  • رموز الطرفية والرموز الغريبة. الخط العمودي، والشرطة المائلة العكسية، والتيلدا، والعلامة المائلة الخلفية (backtick)، والقبعة، وعلامة العطف (&)، وعلامة #، وعلامة الدولار، وعلامة @، ومفتاح _. ومفتاحا _ والعلامة المائلة الخلفية يفاجئان معظم الناس؛ فشيفرة snake_case تستخدم _ باستمرار، ومعظم الكاتبين يضغطونه بالإصبع الخطأ.

تستغرق كل فئة لدى معظم الناس أسبوعًا أو أسبوعين من جلسات مدتها عشر دقائق، فالمسار كله شهران إلى ثلاثة. وهذا أبطأ من تعلّم الأحرف، لأن مفاتيح الرموز أبعد والعادات التي تستبدلها أقدم.

ما الذي يسوء، مما نراه في إحصاءات كل مفتاح: يتعلّم الناس الرمز بالإصبع الصحيح ثم يعودون إلى القديم تحت الضغط، لأن الحركة القديمة تبقى أسرع لبضعة أسابيع. وتُظهر الإحصاءات ذلك في صورة مفتاح يتفاوت الفاصل الزمني فيه تفاوتًا كبيرًا، سريعًا حين تمدّ الإصبع الصحيح وبطيئًا حين لا تفعل. والعلاج أن تبقى على تلك الفئة أسبوعًا آخر.

أزواج الأقواس والإغلاق التلقائي

المحررات تُغلق الأقواس تلقائيًا، وهذا يثير سؤالًا وجيهًا: لماذا تتعلّم كتابة القوس الإغلاقي؟

لسببين. الإغلاق التلقائي غير ثابت: يعمل في أماكن ولا يعمل في أخرى، مثل الطرفية أو نافذة الدردشة. والكاتب الذي يعتمد عليه يتردد كل مرة ليتحقق هل عمل أم لا، والتردد يكلّف أكثر من الضغطة. ثم إن الكتابة فوق قوس أُغلق تلقائيًا (ضغط ")" حين يكون المحرر قد أدرج واحدًا) هي ضغطة بحد ذاتها، فأنت تكتب القوس الإغلاقي في الحالتين.

حين تلصق شيفرة في الوضع المخصص هنا، يُقسَّم النص عند المسافات البيضاء، فتختفي المسافات البادئة ويصبح كل رمز نصي كلمة. وهذا قيد وميزة في آن واحد: لا تكتب أربع مسافات في بداية كل سطر Python، لكنك لا تتمرّن عليها أيضًا. ووضع شيفرة حقيقي يتعامل مع المسافات البادئة والأقواس المغلقة تلقائيًا كما يفعل المحرر موجود في قائمتنا، وهو أصعب مما يبدو.

سرعة الشيفرة مقابل سرعة النصوص

ليس لدينا ما يكفي من نتائج وضع الشيفرة لننشر مئينات، ونفضّل الانتظار على اختلاقها. في تجاربنا الخاصة، كانت سرعة الشيفرة على مقتطف واقعي بين نصف سرعة الشخص نفسه في النصوص وثلثيها تقريبًا، وتتحسن هذه النسبة بالتمرّن على الرموز أكثر مما تتحسن بالتمرّن العام.

الرقم الذي ينتقل فعلًا هو الدقة. فالمبرمج الذي يكتب النصوص بدقة 97% والشيفرة بدقة 90% لديه مشكلة في الرموز، وتُظهر خريطة حرارة المفاتيح أي رموز بالضبط. أما المبرمج الذي يبلغ 97% في الاثنين فيحتاج فقط إلى كتابة مزيد من الشيفرة. وتشرح منهجية الاحتساب لدينا كيف تحتسب الدقة الأخطاء المصحّحة.

وكمعيار قياسي، فإن اختبار علامات الترقيم مع تفعيل الأرقام هو أقرب أوضاعنا المعتادة إلى الشيفرة. لن تجد فيه أقواسًا معقوفة، لكنه يُدخل مفتاح Shift وصف الأرقام، وهما الفجوة لدى معظم الناس.

خيارات لوحة المفاتيح التي تساعد

نصائح لوحات المفاتيح التي يتلقاها المبرمجون تدور في معظمها حول المفاتيح الميكانيكية (switches)، وهي في معظمها خارج الموضوع.

التخطيط أهم من نوع المفتاح. ينقل Dvorak الأقواس إلى صف الأرقام ويغيّر مواضع معظم علامات الترقيم. ويُبقي Colemak وWorkman الأقواس حيث هي في QWERTY، لكن كليهما ينقل الفاصلة المنقوطة إلى موضع P في QWERTY، وهو ما سيشعر به مبرمجو عائلة C. وفي مقال التخطيطات النسخة المطوّلة.

طبقة الرموز أفضل من لوحة مفاتيح أكبر. كثير من لوحات المفاتيح المنقسمة والمدمجة تتيح لك وضع الأقواس والعوامل تحت أصابع صف الارتكاز في طبقة تُفعَّل بالضغط على مفتاح إبهام. ومن بين كل تغييرات العتاد التي يصفها المبرمجون، هذا ما نجرّبه أولًا، لأنه يعني ألا تنظر إلى الأسفل بحثًا عن رمز مرة أخرى.

ISO مقابل ANSI. في لوحات مفاتيح ISO (المملكة المتحدة ومعظم أوروبا)، يغيّر المفتاح الإضافي بجانب Shift الأيسر ومفتاح Enter الطويل موضعَي الشرطة المائلة العكسية والخط العمودي. فإن تمرّنت على واحدة وعملت على الأخرى، سيخطئ خنصرك. ولهذا السبب تأتي محاكاتنا بنسختي Colemak-DH كلتيهما.

نوع المفتاح الميكانيكي لا يكاد يؤثر في السرعة. فالمفاتيح الخطية واللمسية والنقّارة تختلف في الإحساس والصوت، وسجل الضغطات لا يعرف أيها ضغطت. ويستعرض مقال لوحات المفاتيح الميكانيكية الأرقام.

ويساعد الصوت بعض الناس بوصفه تغذية راجعة: صوت الخطأ يخبرك أن الرمز كان خاطئًا دون أن تنظر إلى الأسفل. فعّله أثناء تعلّم الرموز.

جلسة مبرمج مدتها عشر دقائق

ما نفعله يوميًا طوال الشهرين أو الثلاثة التي يستغرقها مسار الرموز:

  • دقيقتان: اختبار كلمات مدته 30 ثانية للإحماء، بدقة 97%.
  • ست دقائق: فئة الرموز الحالية، على نص مخصص ملصوق من شيفرتك. توقف عند أول علامة على العودة إلى الإصبع القديم.
  • دقيقتان: مقتطف شيفرة واحد باللغة التي تستخدمها أكثر. وانظر بعدها إلى خريطة حرارة المفاتيح، لا إلى WPM.

وفي الأيام التي لا تملك فيها عشر دقائق، اكتب القوس الإغلاقي بنفسك. إنها أصغر عادة في هذا المقال، وعادةً أول ما يؤتي ثماره.

أسئلة شائعة

ما سرعة الكتابة الجيدة للمبرمجين؟

أي سرعة من نحو 40 WPM فما فوق صالحة للعمل إن كنت تكتب الرموز والأرقام باللمس. وبعد ذلك يصبح عنق الزجاجة هو التفكير والقراءة والمهارة في المحرر، لا سرعة الأصابع.

كيف أتعلّم كتابة الأرقام باللمس؟

تمرّن على صف الأرقام منفردًا حتى تثبت دقتك عند 95%، مستخدمًا الإصبع الذي يقع تحت كل رقم مباشرة في صف الارتكاز، ثم امزج الأرقام بالنص العادي.

المصادر