ประวัติศาสตร์ 40 ปีของการเขียนโปรแกรม
(fabiensanglard.net)- จากประสบการณ์การเขียนโปรแกรมมาตลอด 40 ปีขณะกำลังจะอายุ 46 ปี ชุดอุปกรณ์เดิมอย่าง คีย์บอร์ด 104 ปุ่ม·เมาส์แบบแบน·โต๊ะนั่งทำงาน กลายเป็นสิ่งที่ต้องทบทวนใหม่หลังเกิดอาการปวดปลายแขนและไหล่
- เมาส์ช่วยให้อาการดีขึ้นเมื่อเปลี่ยนเป็นเมาส์แนวตั้งอย่าง Evoluent VerticalMouse 4 และต่อมาย้ายไปใช้ Apple Magic Trackpad วางไว้ตรงกลางเพื่อสลับใช้มือซ้ายและขวา
- คีย์บอร์ดผ่าน KINESIS Freestyle2 และ Advantage2 ก่อนมาลงตัวที่ Ergodox EZ โดยฟีเจอร์สำคัญคือการปรับระยะห่างของคีย์บอร์ดแยกสองฝั่ง, เฟิร์มแวร์แบบคัสตอม, การสลับเลเยอร์ และการเปลี่ยนพฤติกรรมเมื่อกดค้าง
- โหมด VIM เหมาะกับการลดการขยับมือและการ บิดข้อมือ เพราะช่วยย้ายไฟล์, ไปยัง definition และย้อนกลับได้โดยไม่ต้องใช้เมาส์
- จัดสภาพแวดล้อมสำหรับการเขียนโปรแกรมเป็นเวลานานด้วยการดูแล อาการปวด·ท่าทาง·ความเครียด ตั้งแต่โต๊ะยืนไฟฟ้า การยืดเหยียด Wall Angel เป็นระยะ ไปจนถึงการปีนผาหลังเลิกงาน
อุปกรณ์ป้อนข้อมูลที่เปลี่ยนไปหลังมีอาการปวด
- เขียนโปรแกรมมา 40 ปี โดยครึ่งหนึ่งเป็นการเขียนโปรแกรมในอาชีพ และใช้ชุดมาตรฐานอย่าง คีย์บอร์ด 104 ปุ่ม, เมาส์แบบแบน และโต๊ะนั่งทำงานมาเป็นเวลานาน
- ราว 10 ปีก่อน เริ่มมี อาการปวดปลายแขนและไหล่ เวลางานเขียนโปรแกรม จึงเริ่มเปลี่ยนสภาพแวดล้อมการทำงาน
-
เมาส์และแทร็กแพด
- เมาส์แนวตั้งช่วยบรรเทาอาการปวดได้มาก และรุ่นที่ชอบคือ Evoluent VerticalMouse 4
- ต่อมาย้ายไปใช้ Apple Magic Trackpad วางไว้ตรงกลาง แล้วสลับใช้มือซ้ายกับมือขวา
- สามารถใช้สามนิ้วสลับ workspace, ซูมเข้า/ออก ฯลฯ ได้
- ในอดีตการหาไดรเวอร์สำหรับ Linux/Windows ค่อนข้างยุ่งยาก แต่ตอนนี้เข้าที่แล้ว
-
กระบวนการเลือกคีย์บอร์ด
- คีย์บอร์ด ergonomic ตัวแรกคือ KINESIS Freestyle2 ซึ่งแยกสองฝั่งให้ห่างเท่าที่ต้องการได้ ทำให้วางข้อมือให้ตรงในแนวนอนได้
- อย่างไรก็ตาม
Control,Shift,Altยังต้องขยับข้อมือ และEscที่ใช้ใน VIM ก็ยังต้องบิดข้อมือซ้าย อีกทั้งมุม tenting ยังต่ำด้วย - KINESIS Advantage2 ดีตรงมีตัวเลือกหลายปุ่มที่กดด้วยนิ้วโป้งได้ แต่ระยะห่างที่ตายตัวถือเป็นการถอยหลังเมื่อเทียบกับ Freestyle2
- สุดท้าย Ergodox EZ ตอบโจทย์เงื่อนไขที่ต้องการทั้งหมด
- ปรับความกว้างให้มากหรือน้อยได้
- เฟิร์มแวร์คัสตอมยืดหยุ่นมาก
- กดปุ่มเดียวเพื่อเปลี่ยนทุกปุ่มไปยัง เลเยอร์ อื่นได้
- ตั้งให้ฟังก์ชันของปุ่มเปลี่ยนเมื่อกดค้างได้
- ใน เลย์เอาต์ส่วนตัว ใช้การกด
DหรือKค้างแทนShiftและวางสัญลักษณ์อย่าง{,[,(ไว้ในเลเยอร์อื่นที่เข้าถึงได้ด้วยการกดปุ่มเดียวค้าง - หลังใช้ Ergodox EZ ข้อมือจะอยู่ในตำแหน่งพักเสมอในทั้งสามแกน และสามารถเขียนโปรแกรมได้ทั้งวันโดยไม่ปวด
- ยังปรับแต่งฮาร์ดแวร์ได้ด้วย
- DROP Carbon keycaps
- สายคัสตอมจาก pexonpcs.co.uk
- long legs พิมพ์ 3D
- Brown Gateron G Pro
- ในฐานะแฟนคีย์บอร์ดคลิก IBM Model M ผู้เขียนทำ Ergo ตัวแรกด้วย Cherry MX Blue ซึ่งใช้ที่บ้านได้ดี แต่เพื่อนร่วมงานไม่สบายใจนัก
- ตัวเลือกที่เงียบที่สุดคือ Cherry MX Red และตัวเลือกกึ่งกลางระหว่าง Blue กับ Red คือ Cherry MX Brown
วิธีทำงานที่ขยับมือน้อยลงและพฤติกรรมการใช้ชีวิต
- เป้าหมายคือขยับมือให้น้อยที่สุดเท่าที่เป็นไปได้ และบิดข้อมือให้น้อยที่สุดเท่าที่เป็นไปได้
- IDE ส่วนใหญ่ต้องคลิกเมาส์ แต่ โหมด VIM ใน editor หลายตัวช่วยให้ย้ายไฟล์, ไปยัง definition และย้อนกลับได้โดยไม่ต้องใช้เมาส์
-
โต๊ะและท่าทาง
- การยืนช่วยไม่ให้นั่งหลังค่อม ทำให้ท่าทางดีขึ้น
- ทำโต๊ะยืนไฟฟ้าด้วย Topsky legs และ Home Depot butcher counter top
- หน่วยความจำ 3 ตำแหน่งช่วยสลับระหว่างยืนกับนั่งได้ภายในไม่กี่วินาที และตั้งใจจะสลับใช้ตลอดทั้งวัน
-
การยืดเหยียดและการจัดการความเครียด
- พักเป็นครั้งคราวและทำ Wall Angel หลายครั้ง
- หลังเลิกงานจะตัดขาดจากงานเพื่อจัดการระดับความเครียด
- การปีนผาเหมาะกับการหยุดไอเดีย optimization ที่ยังผุดขึ้นมาเรื่อย ๆ แม้ไม่ใช่เวลางาน เพราะระหว่างปีนจะคิดเรื่องอื่นไม่ได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
อาจมีคนถกเถียงกันได้ แต่สิ่งที่ช่วยชีวิตผมไว้คือการทิ้งสภาพแวดล้อมที่ใช้คีย์บอร์ดหนัก ๆ อย่าง Emacs+command line แล้วย้ายไปใช้ Apple Xcode
งาน build ยังทำจาก command line อยู่บ่อย ๆ แต่การแก้โค้ดและสลับหน้าต่างใช้เมาส์เยอะ Xcode ถ้าต้องการก็ใช้เป็นแค่ text editor ได้ และเวลาคัดลอก/วาง ถ้าเป็นไปได้ก็เลือกด้วยเมาส์
ผมหาหน้าต่างด้วยเมาส์เกมมิ่งที่ตั้งปุ่ม macOS “Exposé” ไว้ และใช้จอ 27″ iMac เพียงจอเดียว ผมใช้ Apple trackpad ด้วยเพื่อพักมือ แต่ถ้าใช้หนัก ๆ สักวันสองวันนิ้วก็เจ็บ
คีย์บอร์ด mechanical ก็ทำร้ายนิ้ว เลยกำลังหาคีย์บอร์ดหรือ keycap ที่ดีกว่าอยู่ ตั้งแต่อายุ 19 เป็นเวลา 45 ปี ผมเคยใช้ punch card, line mode editor, TECO, full-screen editor ตระกูล TECO, DEC EDT, Emacs และอื่น ๆ และก็รู้จัก vi ด้วย แต่ไม่ได้คิดว่า vi แก้ปัญหา repetitive strain injury (RSI) ได้
ผมรู้วิธีแก้ไขข้อความอย่างมีประสิทธิภาพด้วย keyboard shortcut แต่ตอนนี้คิดว่านั่นเป็นทิศทางที่ผิด ช่วงที่ใช้ Emacs กับ Happy Hacking Keyboard สุดท้ายแล้วปวดหนักมาก
ใช้เมาส์ก็ไม่ได้ช้า และในหนึ่งวันก็เขียนโค้ด C++ ที่ดีได้ราว 2000 บรรทัด เพียงแต่ในมุมของการพิมพ์ ผมไม่ชอบ C++
อายุ 33 ยังไม่มีปัญหาอย่างอาการปวดข้อ และคนรุ่นเดียวกัน ทั้งที่เด็กกว่าหรือแก่กว่า ก็พยายามลดอาการปวดด้วย คีย์บอร์ดตามหลักสรีรศาสตร์, การนวด, การยืดเหยียด ฯลฯ
ผมใช้เมาส์กับคีย์บอร์ดแบบดั้งเดิมมาตั้งแต่อายุประมาณ 7 ขวบ และแม้นั่งอยู่หน้าคอมพิวเตอร์ทั้งวันก็ยังโอเค
ช่วงนี้คิดว่านิสัยนั่งนิ่งไม่ได้อาจช่วยผมมาจนถึงตอนนี้หรือเปล่า ผมนั่งจมในเก้าอี้บ้าง ยกขาขึ้นบ้าง ขยับเท้าบ้าง เอนตัวพิงโต๊ะในท่าแปลก ๆ บ้าง บิดตัวและยืดเหยียดบ้าง
ไม่ใช่เพราะเจ็บ แต่เป็นเพราะตัวมันคันยุบยิบอยากขยับเองมากกว่า อย่างไรก็ตาม ถ้าโฟกัสกับการเขียนโปรแกรมลึก ๆ ก็จะขยับน้อยลง และตอนนั้นแขนหรือนิ้วก็แข็งตึงได้ ตาก็ปวดด้วย อาจเป็นเพราะกะพริบตาน้อยลง
ผมไปยิมอย่างน้อยสัปดาห์ละ 2 ครั้ง และช่วงล็อกดาวน์ที่ออกกำลังกายและขยับตัวน้อยลง ก็เริ่มมีอาการปวดหลังกับปัญหาอื่น ๆ
พอกลับไปยิม ปัญหาต่าง ๆ ก็หายไป และผมก็ไม่ได้ยกหนักมาก แทนที่จะ bench press 100kg ปกติก็หยุดที่ 70kg สิ่งสำคัญกว่าการยกหนักคือการได้ขยับตัว และถ้าเป้าหมายคือสุขภาพ ถึงคนในยิมจะบอกให้เพิ่มน้ำหนักก็ไม่จำเป็นต้องทำเสมอไป
ความสูงโต๊ะที่ต่ำกว่าปกติและความสูงเก้าอี้ที่ต่ำกว่าปกติสบายกว่า และถ้าแล็ปท็อปไม่ได้วางบนโต๊ะก็จะล้า ใช้แล็ปท็อปบนตักบนโซฟาแล้วจะปวดคอ
ควรไม่ต้องเอียงคอเพื่อมองกลางจอ และถ้าใช้ trackpad ของ MacBook นาน ๆ ข้อมือจะไม่สบาย ถ้าไม่ใช้เมาส์ก็จะไม่ถนัดจนต้องบิดหรืองอข้อมือบ่อย ๆ
เก้าอี้บางตัวเข้ากับผมได้ดีกว่า แต่ไม่รู้เหมือนกันว่าเพราะอะไร และดูเหมือนไม่เกี่ยวกับราคาเลย
ถ้านอนบนหมอนที่สูงเกินไปจะปวดคอและปวดหัว และรู้สึกว่าที่นอนแข็งมาก ๆ ดีกว่าที่นอนนุ่ม ๆ น่าจะพบได้บ่อยกว่าในเอเชีย
เวลาพิมพ์ยาว ๆ โดยเฉพาะเขียนร้อยแก้ว จะเจ็บนิดหน่อย แต่ปกติก็หายเร็ว ในทางกลับกัน คนอายุราว 30 ที่ผมรู้จักสมัยเรียนปริญญาเอก ใช้ทั้งที่พยุงแขน, standing desk, คีย์บอร์ดและเมาส์ ergonomic, พักตาม timer แล้ว แต่อาการปวดก็ยังรุนแรง เป็นกรณีที่โชคร้ายทางพันธุกรรม
ประเด็นหลักคือไม่ว่าจะเป็นการเคลื่อนไหวแบบไหน ก็ให้เส้นเอ็นและข้อต่อได้ทำงาน และดูเหมือนว่าจะได้ผลจริง
สุดท้ายสิ่งที่ช่วยได้มากที่สุดคือใช้ โปรแกรมพักเบรก ที่เตือนให้เอามือออกจากคีย์บอร์ดแล้วยืดเหยียด ร่วมกับคีย์บอร์ดและเมาส์ ergonomic
ผมเขียนรายละเอียดไว้ที่นี่: https://henrikwarne.com/2012/02/18/how-i-beat-rsi/
เมื่อไม่กี่ปีก่อน ผมเริ่มมี อาการปวดปลายแขน คล้าย ๆ กัน และคีย์บอร์ดแบบแยกส่วนช่วยได้มาก
ผมยังโปรแกรม Arduino กับแป้นเหยียบเท้า 2 อันด้วย แป้นซ้ายเป็น CTRL แป้นขวาเป็น SHIFT และถ้าเหยียบทั้งคู่จะเป็น ALT ซึ่งได้ผลดีมาก
ตอนนี้โดยรวมคุมอาการปวดได้ แต่บางครั้งก็กลับมาเป็นอีก และช่วงหนึ่งผมเคยกลัวมากว่าต้องเลิกเขียนโปรแกรมหรือเปล่า
ถ้าคุณเป็นนักพัฒนารุ่นใหม่ ควรรับคำพูดที่ว่า ป้องกันไว้หนึ่งออนซ์ดีกว่ารักษาหนึ่งปอนด์อย่างจริงจัง ลงทุนกับสภาพแวดล้อม ergonomic และการยืดเหยียด/ออกกำลังกายตั้งแต่ตอนนี้ อย่าฝืนพิมพ์ทั้งที่เจ็บ และควรพักให้บ่อยขึ้น ถ้าฝืนร่างกายเกินขีดจำกัด มันอาจไม่กลับมาเหมือนเดิมอย่างสมบูรณ์
https://github.com/anderspitman/ergo-pedals
Win - Alt - Ctrl - Space - Ctrl - Alt - Winแบบนี้จะกด Ctrl ด้วยนิ้วโป้ง และกด Alt ด้วยนิ้วชี้ได้ ผมฝึกให้ใช้ modifier key ฝั่งตรงข้ามทุกครั้ง เช่น Ctrl-S ก็ใช้ Ctrl ขวา
วิธีนี้ทำให้คีย์สโตรกส่วนใหญ่ที่ไม่ถูกหลักสรีรศาสตร์สำหรับผมหายไป
40 ปีเป็นช่วงเวลาที่ยาวนานจนแทบไม่น่าเชื่อจริง ๆ ผมทำมา 30 ปี และ 20 ปีในนั้นทำแบบได้เงิน คิดว่าตัวเองก็รู้พอสมควร แต่ก็ยังไม่ถึงระดับนั้น
Fabien แทบจะเหมือน กึ่งเทพ เลย ถ้านับชั่วโมงทำงานที่ยาวนานด้วย ก็เกือบ 100,000 ชั่วโมงในสายนี้ แต่ผมเพิ่งรู้สึกว่าได้เริ่มยืนบนพื้นจริง ๆ เมื่อช่วง 1–3 ปีหลังมานี้เอง
งานนี้เป็นงานที่คุณสร้างสิ่งน่าทึ่งได้ตั้งแต่วันแรก แต่แม้ผ่านไปหลายสิบปีก็ยังเป็นงานที่กำลังดำเนินต่อไปอยู่ดี ถึงอย่างนั้นผมก็ชอบมันจริง ๆ
จริงอยู่ที่ผมรู้มากกว่าเมื่อ 20 ปีก่อนมาก แต่ก็รู้สึกเหมือนมีชั้นต่าง ๆ เพิ่มขึ้นอยู่เสมอ แค่ดูไซต์นี้ก็ยังเจอสิ่งที่ต้องเพิ่มเข้าไปในลิสต์อ่านทุกไม่กี่วัน
ในแง่หนึ่ง การไม่รู้สึกว่าตัวเองแตะเพดานของประสบการณ์แล้วก็น่าจะเป็นเรื่องดี
เท่าที่ผมรู้ stenography เป็นวิธีป้อนข้อมูลคอมพิวเตอร์ที่ ergonomic ที่สุด
stenography คือการแมปชุดคีย์บางชุดเข้ากับเอาต์พุตบางอย่าง และการแมปเฉพาะแบบหนึ่งเรียกว่า “theory”
การแมปแบบหนึ่งอิงจากเสียงพูด หรือก็คือเสียงของคำ เช่นให้คีย์หนึ่งแทนเสียง “Kuh” อีกคีย์แทน “ah” และคีย์ที่สามแทน “tuh” แล้วกดทั้งหมดก่อนปล่อย ก็ได้คำว่า “cat” ถ้าใช้ “Al” “Guh” “Or” “If” “Um” สร้าง “Algorithm” ก็เหลือ 5 ครั้งแทน 8 ครั้ง ทั้งที่ไม่ได้ตั้งใจเน้นประสิทธิภาพเป็นพิเศษด้วยซ้ำ
การแมปอีกแบบคือใช้รูปทรง ถ้าคีย์สามตัวบนแถวบนกับคีย์กลางหนึ่งตัวบนแถวล่างดูเหมือน “T” ก็แมปกับสิ่งที่เชื่อมโยงกับ T
theory จะเป็นการแมปแบบไหนก็ได้ตามต้องการ stenography มาจากระบบการเขียนย่อที่ถูกประดิษฐ์ขึ้นในปลายศตวรรษที่ 19 และมี theory ที่มีอยู่แล้วมากมาย จึงไม่จำเป็นต้องสร้างเอง
การแมปคำหรือวลีที่ใช้บ่อยไปยังคีย์ที่กดสะดวกเรียกว่า “briefs” ถ้าใช้สุดทาง ก็สามารถถอดคำพูดแบบเรียลไทม์ได้ถึง 370 คำต่อนาที
แน่นอนว่าไม่จำเป็นต้องเก่งขนาดนั้น สำหรับ productivity ในงาน 30 คำต่อนาทีก็เพียงพอแล้ว และถ้าฝึกวันละ 15 นาทีเป็นเวลาหลายเดือนก็ไปถึง 70 คำต่อนาทีได้ ถ้าเป็นโปรแกรมเมอร์ก็น่าจะทำได้
ถ้าคิดว่าจะป้อนข้อมูลเข้าคอมพิวเตอร์ไปตลอดชีวิต ผมว่าควรเรียน stenography ดีกว่าไป optimize กับการแมปคีย์-เอาต์พุตที่ง่าย ๆ อย่าง QWERTY หรือ Dvorak ลองดู Plover กับ Javelin
การใช้คีย์บอร์ดของผมส่วนใหญ่เป็นคีย์ลัดแก้ไขข้อความกับเครื่องหมายวรรคตอน เลยไม่รู้ว่า stenography จะเข้ากันได้ดีแค่ไหน
สิ่งที่คล้ายกันคือผมมี “พจนานุกรม” ของ alias ใน bash ความยาว 1–3 ตัวอักษรสะสมไว้มากกว่า 50 รายการ
มี “theory” บางส่วนเกิดขึ้นด้วย คือมีกลุ่ม alias ที่ตั้งรูปแบบชื่อตามคำสั่งย่อยหรือตัวเลือกของ git หรือ kubectl ทำให้จำง่าย
คำสั่งที่ใช้บ่อยมาก ๆ ผมจะทิ้งหลักช่วยจำ แล้วเลือกชื่อ 1–2 ตัวอักษรที่ไม่เกี่ยวกับชื่อคำสั่ง เช่น
r='cd -'เหตุผลที่เลือก “r” เพราะมันอยู่คนละฝั่งกับ Enter จึงใช้สองมือสลับกันได้ นี่ก็น่าจะเป็น “brief” เหมือนกันจุดเริ่มต้นที่ทำให้ผมสะสม alias คือการเจอ complete-alias[1] และต่อมาคือตัวเลือก
progcomp_aliasของ bash ผมไม่ต้องเลือกระหว่าง alias กับ programmable completion อย่างใดอย่างหนึ่ง แต่ใช้ได้ทั้งคู่[1]: https://github.com/cykerway/complete-alias
บนคีย์บอร์ดของผม Tab กับ Return กดด้วยนิ้วโป้งได้ งานที่เกี่ยวกับ window manager รวมถึงการจัดการหลายจอและหน้าต่าง ก็ทำได้ด้วยนิ้วสองนิ้วของมือเดียวกันโดยไม่ต้องยกมือออกจากคีย์บอร์ด
โดยพื้นฐานแล้วคีย์บอร์ดของผมเป็น macro keyboard และ “การพิมพ์” เป็นโหมดหนึ่งเฉพาะของคีย์บอร์ด คล้าย vi แต่เป็นวิธีที่ใช้กับทั้งเดสก์ท็อป
ผมพิมพ์ได้มากกว่า 120 คำต่อนาที และคีย์ส่วนใหญ่ที่ผมกดเป็น abstraction มีเพียงส่วนที่เหลือเท่านั้นที่เป็นตัวอักษร
ถึงอย่างนั้น ผมก็ยังคิดว่าในการควบคุมคอมพิวเตอร์อย่างถูกหลัก ergonomic ไม่มีอะไรเทียบ คีย์บอร์ดแบบแยกชิ้น ได้ ผมเคยสนใจ stenography แต่ต้องใช้ความพยายามมากเกินไป ทั้งที่มีโอกาสสูงว่าจะไปไม่ถึงความเร็วและความสบายแบบที่มีอยู่ตอนนี้
ผมไม่เคยรู้สึกว่าความเร็วพิมพ์ต่อนาทีที่สูงขึ้นช่วยอะไรในการเขียนโปรแกรม
ช่วงต้นอาชีพ มีคนที่ผมทำงานด้วยเคยใช้เวลาทดสอบทั้งสัปดาห์แล้วเปลี่ยนแค่ตัวอักษรเดียว ซึ่งมันติดอยู่ในความทรงจำผม
และโปรแกรมเมอร์ APL ก็คงจะตอบสนองประมาณว่า “คำคืออะไรนะ?”
ถ้าเป็นมือใหม่ Vim สิ่งแรกที่ควรทำก่อนซื้อคีย์บอร์ดเท่ ๆ คือ แมป Esc ไปเป็นปุ่มอื่น
มันไม่สมเหตุสมผลเลยที่ปุ่มสำคัญที่สุดจะอยู่ตรงตำแหน่งปัจจุบัน เหตุผลที่ปุ่มกลับสู่โหมดปกติคือ ESC ก็เพราะในอดีตปุ่มนั้นอยู่ใกล้แถวโฮมมากกว่านี้มาก
ส่วนตัวผมชอบ Caps Lock เพราะแต่ละระบบปฏิบัติการรองรับการรีแมปง่าย ๆ แบบนี้ได้ไม่ยาก และมีผลทั้งระบบ จึงใช้โหมด Vim ในที่อื่นได้ด้วย ผมใช้หลัก ๆ ใน zsh และ gdb
โดยรวมแล้วการมี Esc อยู่ใกล้ ๆ ค่อนข้างสะดวก จะทำแบบไหนก็ได้ แต่อยากให้ไม่ต้องทนลำบากโดยเปล่าประโยชน์เพียงเพราะเหตุผลทางประวัติศาสตร์ที่งี่เง่า
คนที่ไม่ใช้ Vim แค่สลับ Caps Lock กับ Control ก็ทำให้การคัดลอก·วางไม่ต้องบิดท่ามือมากนัก
สำหรับผู้ใช้ Vim ขอแนะนำอย่างยิ่งให้แมป Caps Lock เป็น Control เมื่อกดค้าง และเป็น Escape เมื่อแตะสั้น ๆ
spaceและออกจากโหมด insert ด้วยshift+spaceได้เทอร์มินัลบางตัวมีปัญหากับคีย์ผสมที่ใช้ปุ่ม modifier กับปุ่มอย่าง space แต่ถ้าใช้ Vim อยู่กับเครื่องแค่ 1–2 เครื่องและใช้ของอย่าง Kitty ได้ ก็น่าจะโอเค
ราว 15 ปีก่อนผมเคยมีอาการบาดเจ็บจากการใช้งานซ้ำ ๆ และทางแก้คือใส่ใจมากขึ้นกับการกดให้ตรงกลางปุ่มพอดี การระบุตำแหน่งที่แน่นอนด้วยสัมผัสก่อนกดปุ่มช่วยได้
ถ้าปุ่มอยู่ขอบซ้ายของคีย์บอร์ด ก็ไม่ต้องกังวลว่าจะเผลอกดปุ่มที่อยู่ซ้ายของปุ่มที่ต้องการ ทำให้ระบุตำแหน่งง่ายขึ้น Caps Lock ก็อยู่ขอบซ้ายเช่นกัน แต่ ESC อยู่ขอบบนด้วย จึงช่วยเพิ่มอีกชั้น
จากประสบการณ์ของผม ปุ่มที่กดง่ายที่สุดคือ ESC กับ Control ซ้ายที่อยู่ตรงมุมคีย์บอร์ด ส่วนปุ่มมุมอื่นอย่าง “pause/break” และลูกศรขวาอยู่ไกลจากแถวโฮมเกินไปจึงยากกว่า
ผมเข้าใจความต้องการที่จะขยับมือน้อยที่สุดในหลาย ๆ บทความของเว็บนี้ แต่ผมคิดว่าเหตุผลรองรับนั้นผิด ต่อให้เป็นคีย์บอร์ด 36 ปุ่มที่แทบไม่ต้องขยับมือ ก็ยังต้องใช้กล้ามเนื้อแขนพยุงมือให้ลอยอยู่เหนือคีย์บอร์ดตลอด และสมองมนุษย์จัดการกับการเคลื่อนไหวได้ดีกว่าการให้กล้ามเนื้อเกร็งค้างสู้กับแรงโน้มถ่วง
เหมือนกับการตีลูกด้วยไม้เทนนิสที่การเหวี่ยงแบ็กสวิงเป็นไปตามหลักสรีรศาสตร์ ผมคิดว่าในการพิมพ์ การ “แบ็กสวิง” ที่เร็วมากก็สำคัญต่อการป้องกันอาการบาดเจ็บจากการใช้งานซ้ำ ๆ เช่นกัน ผมไม่รู้เหตุผลที่แน่ชัด แต่คิดว่าการขยับมือในแนวราบเหนือคีย์บอร์ดช่วยลดโอกาสที่กล้ามเนื้อที่เกี่ยวข้องจะเข้าสู่ “โหมดแข็งค้าง”
Ctrl-[บ่อยขึ้น คงต้องไปดูเรื่องรีแมป Caps Lock แล้วผมเขียนโปรแกรมมานานและพิมพ์เยอะ แต่หลังจากเห็นคำเตือนเรื่องอาการบาดเจ็บจากการใช้งานซ้ำ ๆ บนอินเทอร์เน็ตราวปี 1990 แล้วระวังตัว รวมถึงหาวิธีที่เหมาะกับตัวเองได้ ก็อยู่มาได้โดยไม่รู้สึกไม่สบาย
สิ่งสำคัญอย่างหนึ่งเวลานั่งโต๊ะคือผมชอบให้เท้าวางราบกับพื้น และให้ ความสูงของคีย์บอร์ด ต่ำกว่าโต๊ะส่วนใหญ่ ผมใช้โต๊ะยืนด้วย
ถ้าคล้ายกัน เวลาดูโต๊ะปรับระดับไฟฟ้าควรตรวจสอบความสูงขั้นต่ำในสเปก เพราะความสูงขั้นต่ำจริงอาจสูงกว่านั้นอีก 1–2 นิ้วเนื่องจากความหนาของท็อปโต๊ะหรือการปรับระดับแนวนอน โดยเฉพาะสินค้าบน Amazon แบบ “3-stage” จะลดลงได้ต่ำกว่าแบบ “2-stage”
บางครั้งก็หาโต๊ะความสูงตายตัวที่เตี้ยเป็นพิเศษได้ ครั้งหนึ่งผมเคยรู้ว่า ขาโต๊ะลามิเนตสีขาวในแล็บมหาวิทยาลัยเข้ากันได้กับขาโต๊ะเสริมในซีรีส์เดียวกันที่เตี้ยกว่า แล้วแอบสลับขาชุดหนึ่งตอนกลางคืนอย่างเงียบ ๆ
ยังไงผมก็ไม่ชอบที่วางแขนของเก้าอี้อยู่แล้ว และถ้าใช้โต๊ะเตี้ยหรือถาดคีย์บอร์ด ที่วางแขนอาจชนได้
ถ้าอยากถอดที่วางแขน ควรตรวจดูก่อนว่าถอดออกได้ดีหรือไม่ ก่อนจะจ่ายเงินก้อนใหญ่ Aeron ที่มีที่วางแขนดูเหมือนจะถอดออกได้ค่อนข้างเรียบร้อย เก้าอี้สำนักงานเชิงพาณิชย์แบบดั้งเดิมบางรุ่นก็ทำได้ดี
ในทางกลับกัน เก้าอี้สำนักงานบางตัวพอถอดที่วางแขนแล้วจะเหลือโครงเหล็กเชื่อมหนัก ๆ ยื่นออกมาด้านข้าง ซึ่งอันตรายเพราะสักวันอาจบาดขาได้ ที่วางแขนของ Steelcase Leap V2 ถอดได้ แต่ไม่เรียบร้อยนัก พอนึกถึงเงินที่จ่ายไปแล้วก็ดูโง่ ๆ หน่อย
คำว่า “arm rest” ฟังดูเหมือนช่วยพักแขนที่เหนื่อย แต่ผมไม่เคยรู้สึกแขนล้าเพราะใช้เก้าอี้เลย มันผิดหน้าที่โดยสมบูรณ์ ไม่จำเป็น และถ้ามีตัวเลือกผมก็จะถอดออก ไม่ซื้อเก้าอี้ที่มีที่วางแขน
อีกวิธีคือเดินเยอะ ๆ อย่างตอนเดินทางไปกลับ และโดยรวมก็ลุกขึ้นบ่อย ๆ ผมยังใช้ life hack เล็ก ๆ เช่นไม่ใช้ของที่ทำให้อยู่ที่โต๊ะได้นานขึ้นอย่างขวดน้ำหรือกาน้ำชา แต่ไปหยิบน้ำสักแก้วแทน อะไรก็ตามที่ทำให้ลุกได้ก็ดี และการเดินไปครัวสั้น ๆ ก็ดี โต๊ะยืนก็ยอดเยี่ยม
หลังจากรู้ว่าปัญหาหลายอย่างของผมเกี่ยวกับไหล่ ผมก็คลายไหล่ด้วยท่าง่าย ๆ เป็นครั้งคราว นั่นก็เป็นเหตุผลที่การเดินช่วยได้ ว่ายน้ำก็ดีเช่นกัน
ถ้านั่งนิ่งเป็นเวลานาน ไหล่จะตึง และเส้นประสาทที่ไปยังข้อมือกับมือก็ผ่านบริเวณนั้น จุดที่รู้สึกเจ็บกับจุดที่มีปัญหาจริง ๆ ไม่จำเป็นต้องเป็นที่เดียวกัน
ไม่ว่าจะยืนหรือนั่ง ถ้าต้องปล่อยข้อศอกลอยอยู่กลางอากาศ ผมจะเริ่มไม่สบายเร็วมาก แต่ถ้าไม่เป็นแบบนั้น งาน 12–14 ชั่วโมงก็ไม่มีปัญหา
มีช้างอยู่ในห้องนี้อยู่ตัวหนึ่ง สงสัยว่าทุกคนจงใจมองข้ามกันหรือเปล่า
ที่นี่ทุกคนพูดกันว่าแต่ละคนทำอะไรและไม่ทำอะไร แต่ไม่มีใครพูดถึงปัญหาใหญ่เลย นั่นคือ ถนัดขวาหรือถนัดซ้าย
คนถนัดซ้ายต้องฝึกมือขวาด้วย เพราะอุปกรณ์ถูกทำมาเพื่อคนถนัดขวาซึ่งเป็นคนส่วนใหญ่ เมาส์แนวตั้งดี ๆ ส่วนใหญ่เป็นรุ่นสำหรับมือขวาเท่านั้น และจริง ๆ แล้วเมาส์ส่วนใหญ่ก็เป็นแบบนั้น เมาส์เกมมิงมือสองที่ซื้อไว้ใช้ตอนแบตเตอรี่เมาส์หลักหมดก็เป็นรุ่นสำหรับมือขวาเท่านั้น
กล้องดิจิทัลทั้งหมดเป็นแบบสำหรับมือขวา และโทรศัพท์มือถือส่วนใหญ่ก็ออกแบบมาสำหรับคนถนัดขวาเป็นหลัก
พวกเราคนถนัดซ้ายต้องใช้มือขวา แต่คนถนัดขวาส่วนใหญ่แทบไม่ใช้มือซ้ายเลย
เมื่อ 20 ปีก่อน ตอนอายุราวกลาง 30 ผมเริ่มใช้เมาส์ด้วยมือขวาที่บ้านด้วย ผมเป็นคนถนัดซ้าย แต่ทำงานซัพพอร์ตมา 15–20 ปี ต้องใช้คอมพิวเตอร์ของลูกค้าตามที่ตั้งค่าไว้อยู่แล้ว และปกติเมาส์จะอยู่ทางขวา
แฟนเก่าแนะนำให้ลองเปลี่ยนดู แล้วการใช้มือก็สมดุลขึ้นมาก มือซ้ายที่ล้าและเจ็บได้พัก ส่วนมือขวาที่ใช้น้อยกว่าก็เข้ามาแบ่งงาน
ผมยังฝึกแปรงฟันด้วยมือขวาเพื่อพัฒนาการประสานงานของมือด้วย เรื่องอย่างปีนผาเอาไว้ก่อนก็ได้ เราไม่จำเป็นต้องปีนกำแพงเพื่อไปทำงาน แต่แทบทุกคนต้องแปรงฟัน
ควรเรียนรู้วิธีใช้มือซ้ายให้มากขึ้น ลองใช้เมาส์ด้วยมือซ้ายหรือลองใช้ทัชแพดดู ก็ควรเรียนรู้การแปรงฟันด้วยมือซ้ายด้วย
ถ้ากระจายภาระที่มือและข้อมือรับ อีกหลายสิบปีข้างหน้าคุณจะขอบคุณตัวเอง
หลังจากเริ่มมีอาการปวดข้อมือขวา ก็ซื้อ Magic Trackpad มาวางไว้ทางซ้ายของคีย์บอร์ด แล้วสลับใช้ทัชแพดด้วยมือซ้ายกับเมาส์ด้วยมือขวา เข้ากับผมได้ดีมาก
ผมก็เขียนโปรแกรมมา 40 ปีแล้ว และตอนนี้อยู่ช่วงต้น 60 แต่น่าแปลกที่ถึงจะพิมพ์มาแบบนั้นตลอด ก็ไม่ได้มี ปัญหาข้อมือ จริง ๆ
ผมยังเป็นเกมเมอร์สาย WASD+เมาส์มานานด้วย และรู้สึกว่าเกมก่อปัญหามากกว่าการเขียนโปรแกรม
แต่ผมปีนผาด้วย เลยค่อนข้างมีกล้ามเนื้อปลายแขนที่พัฒนาแล้ว พอคิดเรื่องนี้ก็ทำให้นึกถึงปัญหาตอนเด็กที่บางครั้งเข่าเจ็บและหมดแรง วิธีแก้คือทำ leg extension แบบถ่วงน้ำหนักเพื่อเสริมกล้ามเนื้อที่ใช้เหยียดและเตะ
เลยสงสัยว่าปัญหาข้อมือก็อาจเอาชนะได้ด้วยการออกกำลังเสริมความแข็งแรงหรือเปล่า
แต่พอเลื่อนลงไปข้างล่าง เห็นว่า Fabien ก็เป็นนักปีนผาเหมือนกัน ดูเหมือนสมมติฐานของผมจะถูกหักล้างแล้ว
ถึงจะไม่ถึง 40 ปี แต่ก็พูดได้ว่าทำมาตั้งแต่ปี 1983–2020 คือ 37 ปี ผมยังใช้เวลาพิมพ์ข้อความบนคอมพิวเตอร์มากกว่าโปรแกรมเมอร์ทั่วไปด้วย และไม่เคยเจอปัญหา repetitive strain injury ที่มีนัยสำคัญ
อาจเป็นประเด็นถกเถียงได้ แต่ผมคิดว่าเหตุผลหนึ่งคือผมไม่ใช่ คนพิมพ์สัมผัส แบบดั้งเดิม ถึงอย่างนั้นก็ไม่ได้ช้า น่าจะเคยทำงานกับโปรแกรมเมอร์มากกว่าพันคน แต่คนที่เร็วกว่าอย่างชัดเจนไม่ใช่โปรแกรมเมอร์ หากเป็นแม่ของผมซึ่งเป็นช่างเรียงพิมพ์มืออาชีพและทำงานมานานกว่าผม ในบรรดาโปรแกรมเมอร์คนอื่น ๆ คนที่ดูเร็วพอ ๆ กันมีนับได้ไม่กี่คน
เหตุผลที่ผมคิดว่าสิ่งนี้เกี่ยวข้องกับการไม่มี repetitive strain injury คือ ในวิธีพิมพ์แบบใช้ราว ๆ เจ็ดนิ้วของผม มือจะเคลื่อนไปมาบนคีย์บอร์ดตลอดเวลา
ไม่ใช่การตรึงข้อมือไว้ตำแหน่งเดิมที่มักจะค่อนข้างฝืน แล้วขยับแต่นิ้ว วิธีแบบนั้นทำให้ส่วน “repetitive” ของ repetitive strain injury สูงสุด
การลดการเคลื่อนไหวของมือให้น้อยที่สุดเป็นเรื่องไม่ดี ถ้าต้องการให้มือและข้อมือแข็งแรง ก็ต้องขยับมันต่อไปเหมือนกับกลุ่มกล้ามเนื้อ เอ็น และเอ็นยึดข้อส่วนอื่น ๆ ของร่างกาย การคิดว่าหลักการทั่วไปเรื่องการออกกำลังกายและความยืดหยุ่นใช้กับมือไม่ได้ เป็นความคิดที่โง่เขลา