2 คะแนน โดย GN⁺ 2023-10-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • จากประสบการณ์การเขียนโปรแกรมมาตลอด 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 ข้อมือจะอยู่ในตำแหน่งพักเสมอในทั้งสามแกน และสามารถเขียนโปรแกรมได้ทั้งวันโดยไม่ปวด
    • ยังปรับแต่งฮาร์ดแวร์ได้ด้วย
    • ในฐานะแฟนคีย์บอร์ดคลิก 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 ความคิดเห็น

 
GN⁺ 2023-10-09
ความคิดเห็นจาก 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 ขวบ และแม้นั่งอยู่หน้าคอมพิวเตอร์ทั้งวันก็ยังโอเค
    ช่วงนี้คิดว่านิสัยนั่งนิ่งไม่ได้อาจช่วยผมมาจนถึงตอนนี้หรือเปล่า ผมนั่งจมในเก้าอี้บ้าง ยกขาขึ้นบ้าง ขยับเท้าบ้าง เอนตัวพิงโต๊ะในท่าแปลก ๆ บ้าง บิดตัวและยืดเหยียดบ้าง
    ไม่ใช่เพราะเจ็บ แต่เป็นเพราะตัวมันคันยุบยิบอยากขยับเองมากกว่า อย่างไรก็ตาม ถ้าโฟกัสกับการเขียนโปรแกรมลึก ๆ ก็จะขยับน้อยลง และตอนนั้นแขนหรือนิ้วก็แข็งตึงได้ ตาก็ปวดด้วย อาจเป็นเพราะกะพริบตาน้อยลง

    • ผมอายุ 36 และคิดว่าโต๊ะหรือเก้าอี้ ergonomic แบบไหนโดยพื้นฐานแล้วก็ไม่ได้ช่วย สิ่งที่ช่วยได้มีแค่ การออกกำลังกาย
      ผมไปยิมอย่างน้อยสัปดาห์ละ 2 ครั้ง และช่วงล็อกดาวน์ที่ออกกำลังกายและขยับตัวน้อยลง ก็เริ่มมีอาการปวดหลังกับปัญหาอื่น ๆ
      พอกลับไปยิม ปัญหาต่าง ๆ ก็หายไป และผมก็ไม่ได้ยกหนักมาก แทนที่จะ bench press 100kg ปกติก็หยุดที่ 70kg สิ่งสำคัญกว่าการยกหนักคือการได้ขยับตัว และถ้าเป้าหมายคือสุขภาพ ถึงคนในยิมจะบอกให้เพิ่มน้ำหนักก็ไม่จำเป็นต้องทำเสมอไป
    • ข้อความแรกที่เขียนอาจดูเหมือนว่าผมโอเคกับสภาพแวดล้อมอะไรก็ได้ แต่ไม่ใช่อย่างนั้น
      ความสูงโต๊ะที่ต่ำกว่าปกติและความสูงเก้าอี้ที่ต่ำกว่าปกติสบายกว่า และถ้าแล็ปท็อปไม่ได้วางบนโต๊ะก็จะล้า ใช้แล็ปท็อปบนตักบนโซฟาแล้วจะปวดคอ
      ควรไม่ต้องเอียงคอเพื่อมองกลางจอ และถ้าใช้ trackpad ของ MacBook นาน ๆ ข้อมือจะไม่สบาย ถ้าไม่ใช้เมาส์ก็จะไม่ถนัดจนต้องบิดหรืองอข้อมือบ่อย ๆ
      เก้าอี้บางตัวเข้ากับผมได้ดีกว่า แต่ไม่รู้เหมือนกันว่าเพราะอะไร และดูเหมือนไม่เกี่ยวกับราคาเลย
      ถ้านอนบนหมอนที่สูงเกินไปจะปวดคอและปวดหัว และรู้สึกว่าที่นอนแข็งมาก ๆ ดีกว่าที่นอนนุ่ม ๆ น่าจะพบได้บ่อยกว่าในเอเชีย
    • สุดท้ายแล้ว ความแตกต่างระหว่างบุคคล ก็น่าจะมีมาก บางคนโดยกำเนิดอาจเสี่ยงต่อ repetitive strain injury มากกว่า
      เวลาพิมพ์ยาว ๆ โดยเฉพาะเขียนร้อยแก้ว จะเจ็บนิดหน่อย แต่ปกติก็หายเร็ว ในทางกลับกัน คนอายุราว 30 ที่ผมรู้จักสมัยเรียนปริญญาเอก ใช้ทั้งที่พยุงแขน, standing desk, คีย์บอร์ดและเมาส์ ergonomic, พักตาม timer แล้ว แต่อาการปวดก็ยังรุนแรง เป็นกรณีที่โชคร้ายทางพันธุกรรม
    • หมอออร์โธปิดิกส์บอกผมว่า ถ้าจะหลีกเลี่ยง repetitive strain injury สิ่งสำคัญคือ การเคลื่อนไหวแบบไดนามิก ขยับตัว เปลี่ยนท่าบ่อย ๆ เอนหลัง ก้มไปข้างหน้า หันไปมอง ลุกขึ้น ตะโกนหาเพื่อนบ้าน อะไรทำนองนั้น
      ประเด็นหลักคือไม่ว่าจะเป็นการเคลื่อนไหวแบบไหน ก็ให้เส้นเอ็นและข้อต่อได้ทำงาน และดูเหมือนว่าจะได้ผลจริง
    • ผมเขียนโค้ดเป็นอาชีพมานานกว่า 10 ปีโดยไม่ได้ใส่ใจ ergonomic แต่ก็ไม่มีปัญหา แล้วต่อมาก็เริ่มปวดแขน และต้องใช้ความพยายามมากในการควบคุมอาการ
      สุดท้ายสิ่งที่ช่วยได้มากที่สุดคือใช้ โปรแกรมพักเบรก ที่เตือนให้เอามือออกจากคีย์บอร์ดแล้วยืดเหยียด ร่วมกับคีย์บอร์ดและเมาส์ ergonomic
      ผมเขียนรายละเอียดไว้ที่นี่: https://henrikwarne.com/2012/02/18/how-i-beat-rsi/
  • เมื่อไม่กี่ปีก่อน ผมเริ่มมี อาการปวดปลายแขน คล้าย ๆ กัน และคีย์บอร์ดแบบแยกส่วนช่วยได้มาก
    ผมยังโปรแกรม Arduino กับแป้นเหยียบเท้า 2 อันด้วย แป้นซ้ายเป็น CTRL แป้นขวาเป็น SHIFT และถ้าเหยียบทั้งคู่จะเป็น ALT ซึ่งได้ผลดีมาก
    ตอนนี้โดยรวมคุมอาการปวดได้ แต่บางครั้งก็กลับมาเป็นอีก และช่วงหนึ่งผมเคยกลัวมากว่าต้องเลิกเขียนโปรแกรมหรือเปล่า
    ถ้าคุณเป็นนักพัฒนารุ่นใหม่ ควรรับคำพูดที่ว่า ป้องกันไว้หนึ่งออนซ์ดีกว่ารักษาหนึ่งปอนด์อย่างจริงจัง ลงทุนกับสภาพแวดล้อม ergonomic และการยืดเหยียด/ออกกำลังกายตั้งแต่ตอนนี้ อย่าฝืนพิมพ์ทั้งที่เจ็บ และควรพักให้บ่อยขึ้น ถ้าฝืนร่างกายเกินขีดจำกัด มันอาจไม่กลับมาเหมือนเดิมอย่างสมบูรณ์
    https://github.com/anderspitman/ergo-pedals

    • ผม remap modifier key ของคีย์บอร์ดให้แถวล่างสุดเป็น 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
    • เวลาเขียนโปรแกรม ด้วย lsp, company และ yasnippets ผมพิมพ์คำได้ด้วยการป้อนเพียงสองสามครั้ง
      บนคีย์บอร์ดของผม Tab กับ Return กดด้วยนิ้วโป้งได้ งานที่เกี่ยวกับ window manager รวมถึงการจัดการหลายจอและหน้าต่าง ก็ทำได้ด้วยนิ้วสองนิ้วของมือเดียวกันโดยไม่ต้องยกมือออกจากคีย์บอร์ด
      โดยพื้นฐานแล้วคีย์บอร์ดของผมเป็น macro keyboard และ “การพิมพ์” เป็นโหมดหนึ่งเฉพาะของคีย์บอร์ด คล้าย vi แต่เป็นวิธีที่ใช้กับทั้งเดสก์ท็อป
      ผมพิมพ์ได้มากกว่า 120 คำต่อนาที และคีย์ส่วนใหญ่ที่ผมกดเป็น abstraction มีเพียงส่วนที่เหลือเท่านั้นที่เป็นตัวอักษร
      ถึงอย่างนั้น ผมก็ยังคิดว่าในการควบคุมคอมพิวเตอร์อย่างถูกหลัก ergonomic ไม่มีอะไรเทียบ คีย์บอร์ดแบบแยกชิ้น ได้ ผมเคยสนใจ stenography แต่ต้องใช้ความพยายามมากเกินไป ทั้งที่มีโอกาสสูงว่าจะไปไม่ถึงความเร็วและความสบายแบบที่มีอยู่ตอนนี้
    • ผมสงสัยว่างานของคุณเป็น workflow ที่ต้องเขียนเอกสารเยอะเป็นพิเศษหรือเปล่า ผมใช้เวลาไล่สำรวจโค้ดมากกว่าเขียนโค้ดใหม่เยอะ และพยายามให้ Intellisense เป็นคนพิมพ์ตัวอักษรส่วนใหญ่ให้
      ผมไม่เคยรู้สึกว่าความเร็วพิมพ์ต่อนาทีที่สูงขึ้นช่วยอะไรในการเขียนโปรแกรม
      ช่วงต้นอาชีพ มีคนที่ผมทำงานด้วยเคยใช้เวลาทดสอบทั้งสัปดาห์แล้วเปลี่ยนแค่ตัวอักษรเดียว ซึ่งมันติดอยู่ในความทรงจำผม
      และโปรแกรมเมอร์ APL ก็คงจะตอบสนองประมาณว่า “คำคืออะไรนะ?”
  • ถ้าเป็นมือใหม่ Vim สิ่งแรกที่ควรทำก่อนซื้อคีย์บอร์ดเท่ ๆ คือ แมป Esc ไปเป็นปุ่มอื่น
    มันไม่สมเหตุสมผลเลยที่ปุ่มสำคัญที่สุดจะอยู่ตรงตำแหน่งปัจจุบัน เหตุผลที่ปุ่มกลับสู่โหมดปกติคือ ESC ก็เพราะในอดีตปุ่มนั้นอยู่ใกล้แถวโฮมมากกว่านี้มาก
    ส่วนตัวผมชอบ Caps Lock เพราะแต่ละระบบปฏิบัติการรองรับการรีแมปง่าย ๆ แบบนี้ได้ไม่ยาก และมีผลทั้งระบบ จึงใช้โหมด Vim ในที่อื่นได้ด้วย ผมใช้หลัก ๆ ใน zsh และ gdb
    โดยรวมแล้วการมี Esc อยู่ใกล้ ๆ ค่อนข้างสะดวก จะทำแบบไหนก็ได้ แต่อยากให้ไม่ต้องทนลำบากโดยเปล่าประโยชน์เพียงเพราะเหตุผลทางประวัติศาสตร์ที่งี่เง่า

    • เป็นคำแนะนำที่ดี แต่พอถึงจุดหนึ่ง คุณอาจเริ่มอยากให้ “ปุ่มอื่น” กลายเป็นอะไรแปลก ๆ อย่างครึ่งซ้ายของสเปซบาร์ แล้วคุณก็จะกลายเป็นหนึ่งในพวกเราไปตลอดกาล
    • Caps Lock เป็นปุ่มที่เปลือง ตำแหน่งดี ๆ บนคีย์บอร์ด แม้จะไม่ใช่ผู้ใช้ Vim ก็ตาม
      คนที่ไม่ใช้ Vim แค่สลับ Caps Lock กับ Control ก็ทำให้การคัดลอก·วางไม่ต้องบิดท่ามือมากนัก
      สำหรับผู้ใช้ Vim ขอแนะนำอย่างยิ่งให้แมป Caps Lock เป็น Control เมื่อกดค้าง และเป็น Escape เมื่อแตะสั้น ๆ
    • ขอเสริมไอเดียการรีแมป ESC อีกอย่างหนึ่ง: เข้าโหมด insert ด้วย space และออกจากโหมด insert ด้วย shift+space ได้
      เทอร์มินัลบางตัวมีปัญหากับคีย์ผสมที่ใช้ปุ่ม modifier กับปุ่มอย่าง space แต่ถ้าใช้ Vim อยู่กับเครื่องแค่ 1–2 เครื่องและใช้ของอย่าง Kitty ได้ ก็น่าจะโอเค
    • ผมรู้สึกว่า ESC กดง่ายกว่า Caps Lock เพราะมันอยู่ที่มุมคีย์บอร์ด
      ราว 15 ปีก่อนผมเคยมีอาการบาดเจ็บจากการใช้งานซ้ำ ๆ และทางแก้คือใส่ใจมากขึ้นกับการกดให้ตรงกลางปุ่มพอดี การระบุตำแหน่งที่แน่นอนด้วยสัมผัสก่อนกดปุ่มช่วยได้
      ถ้าปุ่มอยู่ขอบซ้ายของคีย์บอร์ด ก็ไม่ต้องกังวลว่าจะเผลอกดปุ่มที่อยู่ซ้ายของปุ่มที่ต้องการ ทำให้ระบุตำแหน่งง่ายขึ้น Caps Lock ก็อยู่ขอบซ้ายเช่นกัน แต่ ESC อยู่ขอบบนด้วย จึงช่วยเพิ่มอีกชั้น
      จากประสบการณ์ของผม ปุ่มที่กดง่ายที่สุดคือ ESC กับ Control ซ้ายที่อยู่ตรงมุมคีย์บอร์ด ส่วนปุ่มมุมอื่นอย่าง “pause/break” และลูกศรขวาอยู่ไกลจากแถวโฮมเกินไปจึงยากกว่า
      ผมเข้าใจความต้องการที่จะขยับมือน้อยที่สุดในหลาย ๆ บทความของเว็บนี้ แต่ผมคิดว่าเหตุผลรองรับนั้นผิด ต่อให้เป็นคีย์บอร์ด 36 ปุ่มที่แทบไม่ต้องขยับมือ ก็ยังต้องใช้กล้ามเนื้อแขนพยุงมือให้ลอยอยู่เหนือคีย์บอร์ดตลอด และสมองมนุษย์จัดการกับการเคลื่อนไหวได้ดีกว่าการให้กล้ามเนื้อเกร็งค้างสู้กับแรงโน้มถ่วง
      เหมือนกับการตีลูกด้วยไม้เทนนิสที่การเหวี่ยงแบ็กสวิงเป็นไปตามหลักสรีรศาสตร์ ผมคิดว่าในการพิมพ์ การ “แบ็กสวิง” ที่เร็วมากก็สำคัญต่อการป้องกันอาการบาดเจ็บจากการใช้งานซ้ำ ๆ เช่นกัน ผมไม่รู้เหตุผลที่แน่ชัด แต่คิดว่าการขยับมือในแนวราบเหนือคีย์บอร์ดช่วยลดโอกาสที่กล้ามเนื้อที่เกี่ยวข้องจะเข้าสู่ “โหมดแข็งค้าง”
    • พอใช้คีย์บอร์ดที่ Esc อยู่ไกลกว่าปกติ เลยเริ่มใช้ 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 ปี ต้องใช้คอมพิวเตอร์ของลูกค้าตามที่ตั้งค่าไว้อยู่แล้ว และปกติเมาส์จะอยู่ทางขวา
    แฟนเก่าแนะนำให้ลองเปลี่ยนดู แล้วการใช้มือก็สมดุลขึ้นมาก มือซ้ายที่ล้าและเจ็บได้พัก ส่วนมือขวาที่ใช้น้อยกว่าก็เข้ามาแบ่งงาน
    ผมยังฝึกแปรงฟันด้วยมือขวาเพื่อพัฒนาการประสานงานของมือด้วย เรื่องอย่างปีนผาเอาไว้ก่อนก็ได้ เราไม่จำเป็นต้องปีนกำแพงเพื่อไปทำงาน แต่แทบทุกคนต้องแปรงฟัน
    ควรเรียนรู้วิธีใช้มือซ้ายให้มากขึ้น ลองใช้เมาส์ด้วยมือซ้ายหรือลองใช้ทัชแพดดู ก็ควรเรียนรู้การแปรงฟันด้วยมือซ้ายด้วย
    ถ้ากระจายภาระที่มือและข้อมือรับ อีกหลายสิบปีข้างหน้าคุณจะขอบคุณตัวเอง

    • ผมเป็นคนถนัดซ้าย แต่เริ่มใช้เมาส์ด้วยมือขวาตั้งแต่ยังเด็กมาก ๆ ประมาณ 5–6 ขวบ
      หลังจากเริ่มมีอาการปวดข้อมือขวา ก็ซื้อ Magic Trackpad มาวางไว้ทางซ้ายของคีย์บอร์ด แล้วสลับใช้ทัชแพดด้วยมือซ้ายกับเมาส์ด้วยมือขวา เข้ากับผมได้ดีมาก
  • ผมก็เขียนโปรแกรมมา 40 ปีแล้ว และตอนนี้อยู่ช่วงต้น 60 แต่น่าแปลกที่ถึงจะพิมพ์มาแบบนั้นตลอด ก็ไม่ได้มี ปัญหาข้อมือ จริง ๆ
    ผมยังเป็นเกมเมอร์สาย WASD+เมาส์มานานด้วย และรู้สึกว่าเกมก่อปัญหามากกว่าการเขียนโปรแกรม

    • ผมอยู่ช่วงต้นถึงกลาง 50 และเขียนโปรแกรมมากว่า 40 ปีแล้วเหมือนกัน Ctrl/Shift+WASD ตอนเล่นเกมทำให้ผมเป็นตะคริวและรู้สึกไม่สบายมากกว่าการเขียนโปรแกรม
      แต่ผมปีนผาด้วย เลยค่อนข้างมีกล้ามเนื้อปลายแขนที่พัฒนาแล้ว พอคิดเรื่องนี้ก็ทำให้นึกถึงปัญหาตอนเด็กที่บางครั้งเข่าเจ็บและหมดแรง วิธีแก้คือทำ leg extension แบบถ่วงน้ำหนักเพื่อเสริมกล้ามเนื้อที่ใช้เหยียดและเตะ
      เลยสงสัยว่าปัญหาข้อมือก็อาจเอาชนะได้ด้วยการออกกำลังเสริมความแข็งแรงหรือเปล่า
      แต่พอเลื่อนลงไปข้างล่าง เห็นว่า Fabien ก็เป็นนักปีนผาเหมือนกัน ดูเหมือนสมมติฐานของผมจะถูกหักล้างแล้ว
  • ถึงจะไม่ถึง 40 ปี แต่ก็พูดได้ว่าทำมาตั้งแต่ปี 1983–2020 คือ 37 ปี ผมยังใช้เวลาพิมพ์ข้อความบนคอมพิวเตอร์มากกว่าโปรแกรมเมอร์ทั่วไปด้วย และไม่เคยเจอปัญหา repetitive strain injury ที่มีนัยสำคัญ
    อาจเป็นประเด็นถกเถียงได้ แต่ผมคิดว่าเหตุผลหนึ่งคือผมไม่ใช่ คนพิมพ์สัมผัส แบบดั้งเดิม ถึงอย่างนั้นก็ไม่ได้ช้า น่าจะเคยทำงานกับโปรแกรมเมอร์มากกว่าพันคน แต่คนที่เร็วกว่าอย่างชัดเจนไม่ใช่โปรแกรมเมอร์ หากเป็นแม่ของผมซึ่งเป็นช่างเรียงพิมพ์มืออาชีพและทำงานมานานกว่าผม ในบรรดาโปรแกรมเมอร์คนอื่น ๆ คนที่ดูเร็วพอ ๆ กันมีนับได้ไม่กี่คน
    เหตุผลที่ผมคิดว่าสิ่งนี้เกี่ยวข้องกับการไม่มี repetitive strain injury คือ ในวิธีพิมพ์แบบใช้ราว ๆ เจ็ดนิ้วของผม มือจะเคลื่อนไปมาบนคีย์บอร์ดตลอดเวลา
    ไม่ใช่การตรึงข้อมือไว้ตำแหน่งเดิมที่มักจะค่อนข้างฝืน แล้วขยับแต่นิ้ว วิธีแบบนั้นทำให้ส่วน “repetitive” ของ repetitive strain injury สูงสุด
    การลดการเคลื่อนไหวของมือให้น้อยที่สุดเป็นเรื่องไม่ดี ถ้าต้องการให้มือและข้อมือแข็งแรง ก็ต้องขยับมันต่อไปเหมือนกับกลุ่มกล้ามเนื้อ เอ็น และเอ็นยึดข้อส่วนอื่น ๆ ของร่างกาย การคิดว่าหลักการทั่วไปเรื่องการออกกำลังกายและความยืดหยุ่นใช้กับมือไม่ได้ เป็นความคิดที่โง่เขลา