สมองประมวลผลการอ่านโค้ดคอมพิวเตอร์ต่างจากการอ่านภาษา (2020)
(news.mit.edu)- งานวิจัยของ MIT แสดงให้เห็นว่าการเข้าใจโค้ดพึ่งพา multiple demand network ซึ่งใช้ในการแก้ปัญหาซับซ้อน มากกว่าการประมวลผลภาษา
- ในการทดลอง fMRI ที่ให้ผู้เข้าร่วมอ่านโค้ด Python และ ScratchJr เครือข่ายภาษาซีกซ้าย เช่น บริเวณ Broca แทบไม่ตอบสนอง
- การอ่านโค้ดใช้เครือข่ายเดียวกับงานคณิตศาสตร์และตรรกะ แต่บริเวณย่อยที่ถูกกระตุ้นภายในเครือข่ายนั้นไม่ได้เหมือนกันทั้งหมด
- ScratchJr กระตุ้น multiple demand network ด้านขวามากกว่าเล็กน้อย และนักวิจัยเปรียบเทียบสิ่งนี้กับความเอนเอียงไปยังซีกขวาในงานสำรวจเชิงพื้นที่
- แทนที่จะสอนการเขียนโปรแกรมโดยมองว่าเป็นเพียงคณิตศาสตร์หรือภาษาอย่างใดอย่างหนึ่ง จำเป็นต้องมี วิธีสอนเฉพาะตัว ที่เหมาะกับการเรียนรู้โค้ด
การอ่านโค้ดแสดงกิจกรรมสมองที่ต่างจากการอ่านภาษา
- การเรียนเขียนโปรแกรมมีลักษณะคล้ายกับการเรียนภาษาใหม่
- ต้องเรียนรู้ สัญลักษณ์และคำศัพท์ ใหม่
- ต้องจัดระเบียบโค้ดให้ถูกต้องเพื่อสั่งให้คอมพิวเตอร์ทำงาน
- ต้องเขียนให้ชัดเจนพอที่โปรแกรมเมอร์คนอื่นจะอ่านและเข้าใจได้
- แต่เมื่ออ่านโค้ดคอมพิวเตอร์ พื้นที่ประมวลผลภาษาของสมองไม่ได้ถูกกระตุ้น
- แต่กลับเป็น multiple demand network ซึ่งใช้กับงานด้านความคิดที่ซับซ้อนเป็นหลักที่ถูกกระตุ้น
- เครือข่ายนี้ถูกเรียกใช้ในงานอย่างโจทย์คณิตศาสตร์หรือปริศนาอักษรไขว้ด้วย
- การอ่านโค้ดก็ไม่ได้เหมือนกับปัญหาคณิตศาสตร์หรือตรรกะโดยสิ้นเชิง
- แม้ภายใน multiple demand network ก็พบรูปแบบที่พึ่งพาบางส่วนต่างจากงานคณิตศาสตร์และตรรกะมากกว่า
- Anna Ivanova มองว่าการเข้าใจโค้ดคอมพิวเตอร์ใกล้เคียงกับ “สิ่งที่เป็นตัวของมันเอง” ไม่ใช่ทั้งภาษา และไม่ใช่คณิตศาสตร์หรือตรรกะ
การเขียนโปรแกรมใกล้เคียงกับภาษา หรือคณิตศาสตร์มากกว่ากัน
- ทีมวิจัยของ Evelina Fedorenko ศึกษาความสัมพันธ์ระหว่างภาษากับความสามารถทางปัญญาอื่น ๆ มาอย่างต่อเนื่อง
- คำถามหลักคือความสามารถอื่น ๆ พึ่งพา เครือข่ายภาษา ของสมองหรือไม่
- เครือข่ายภาษานี้รวมถึงบริเวณ Broca และบริเวณอื่น ๆ ในซีกซ้าย
- งานวิจัยก่อนหน้าของห้องวิจัย Fedorenko พบว่าดนตรีและคณิตศาสตร์ไม่ได้กระตุ้นเครือข่ายภาษานี้
- การเขียนโปรแกรมคอมพิวเตอร์เป็นสิ่งประดิษฐ์ที่ค่อนข้างใหม่ จึงยากที่จะมองว่ามนุษย์มีกลไกโดยกำเนิดที่ใช้เฉพาะกับการเขียนโปรแกรม
- มุมมองเกี่ยวกับการเรียนเขียนโปรแกรมแบ่งได้กว้าง ๆ เป็นสองกลุ่ม
- มุมมองที่ว่าหากจะเขียนโปรแกรมให้เก่ง ต้องเก่ง คณิตศาสตร์
- มุมมองที่ว่าเพราะการเขียนโค้ดคล้ายกับภาษา ความสามารถทางภาษา อาจเกี่ยวข้องมากกว่า
การทดลอง fMRI: อ่านโค้ด Python และ ScratchJr
- ภาษาที่ใช้ในการทดลองคือ Python และ ScratchJr ซึ่งเป็นที่รู้จักว่าเป็นภาษาโปรแกรมที่อ่านง่าย
- ScratchJr เป็นภาษาโปรแกรมแบบภาพที่ออกแบบมาสำหรับเด็กอายุ 5 ปีขึ้นไป
- ผู้เข้าร่วมเป็นผู้ใหญ่ตอนต้นที่เชี่ยวชาญภาษาที่ตนถูกทดสอบ
- ผู้เข้าร่วมดูชิ้นส่วนโค้ดขณะอยู่ในเครื่องสแกนภาพด้วยคลื่นแม่เหล็กไฟฟ้าเชิงหน้าที่ (fMRI)
- ภารกิจคือคาดการณ์ว่าโค้ดดังกล่าวจะทำให้เกิดการทำงานแบบใด
ผลลัพธ์: multiple demand network เป็นศูนย์กลางมากกว่าพื้นที่ภาษา
- พื้นที่ภาษาของสมองแทบไม่ตอบสนองต่อโค้ด หรือไม่ตอบสนองเลย
- งานเกี่ยวกับโค้ดกระตุ้น multiple demand network เป็นหลัก
- กิจกรรมของเครือข่ายนี้กระจายอยู่ทั่วกลีบหน้าผากและกลีบข้าง
- โดยปกติถูกเรียกใช้ในงานที่ต้องเก็บข้อมูลหลายอย่างไว้ในใจพร้อมกัน
- เกี่ยวข้องกับความสามารถในการทำงานทางจิตหลากหลายประเภท
- Ivanova กล่าวว่าเครือข่ายนี้เกี่ยวข้องกับงานแทบทุกอย่างที่ท้าทายทางปัญญาและต้อง “คิดอย่างหนัก”
- งานวิจัยเดิมพบว่าปัญหาคณิตศาสตร์และตรรกะพึ่งพาพื้นที่ multiple demand ในซีกซ้ายเป็นหลัก
- เป็นที่ทราบกันว่างานสำรวจเชิงพื้นที่กระตุ้นซีกขวามากกว่าซีกซ้าย
ความแตกต่างตามภาษาโค้ดและผลของความเชี่ยวชาญ
- ทีม MIT ร่วมกับ Marina Bers ได้ผลลัพธ์ว่าการอ่านโค้ดกระตุ้น multiple demand network ทั้งด้านซ้ายและด้านขวา
- ScratchJr กระตุ้นด้านขวามากกว่าด้านซ้ายเล็กน้อย
- ไม่พบพื้นที่สมองที่ใช้เฉพาะสำหรับการเขียนโปรแกรมเท่านั้น
- อย่างไรก็ตาม ยังมีความเป็นไปได้ว่ากิจกรรมสมองเฉพาะทางอาจพัฒนาขึ้นในผู้ที่มีประสบการณ์เขียนโค้ดมากกว่านี้มาก
- Fedorenko กล่าวว่า หากเป็นโปรแกรมเมอร์มืออาชีพที่เขียนโค้ดด้วยภาษาหนึ่งมา 30 หรือ 40 ปี อาจเห็นการทำให้เฉพาะทางหรือการตกผลึกของบางส่วนในระบบ multiple demand
- แต่ในผู้เข้าร่วมครั้งนี้ ซึ่งคุ้นเคยกับการเขียนโค้ดและทำงานที่ได้รับมอบหมายได้อย่างมีประสิทธิภาพ แต่มีประสบการณ์ค่อนข้างจำกัด ไม่พบการทำให้เฉพาะทางดังกล่าว
นัยต่อการศึกษาและบทความวิจัยที่เกี่ยวข้อง
- บทความคู่ขนานของทีมวิจัย Johns Hopkins University ที่ตีพิมพ์ใน eLife ฉบับเดียวกัน ก็รายงานว่าการแก้ปัญหาโค้ดกระตุ้น multiple demand network ไม่ใช่พื้นที่ภาษา
- จากผลลัพธ์ครั้งนี้เพียงอย่างเดียว ยังตัดสินได้ยากว่าควรสอนการเขียนโค้ดในฐานะทักษะที่มีฐานจากคณิตศาสตร์ หรือทักษะที่มีฐานจากภาษา
- ในกระบวนการเรียนเขียนโปรแกรม ทั้งระบบภาษาและระบบ multiple demand อาจมีส่วนเกี่ยวข้อง
- แต่หลังจากเรียนรู้แล้ว การเขียนโปรแกรมดูเหมือนไม่ได้พึ่งพาพื้นที่ภาษา
- Ivanova มองว่านักการศึกษาด้านวิทยาการคอมพิวเตอร์ควรพัฒนาแนวทางของตนเองเพื่อสอนโค้ดให้มีประสิทธิภาพที่สุด
- บทความวิจัยที่เกี่ยวข้อง: Comprehension of computer code relies primarily on domain-general executive brain regions
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดูเหมือนจะไม่มีลิงก์บทความวิจัย แต่มีโอกาสสูงว่าจะเป็น https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7738192/pdf/eli...
เนื้อหาคือโปรแกรมเมอร์ดูชิ้นส่วนโค้ดในเครื่องสแกน fMRI แล้วทำนายว่าโค้ดนั้นจะสร้างพฤติกรรมแบบไหน แต่ ความสามารถในการเขียนโค้ด กับความสามารถในการเข้าใจโค้ดที่คนอื่นเขียนน่าจะเป็นทักษะคนละอย่างกัน
มากกว่าจะเป็นการเข้าใจสิ่งที่เขียน มันใกล้เคียงกับงาน อนุมานว่าสิ่งที่เขียนหมายถึงอะไร
Bill กับ Tom ไปร้านรองเท้า โดย Bill ซื้อรองเท้าสีดำราคา 23.56 ดอลลาร์ และ Tom ซื้อรองเท้าสีแดงราคา 40.30 ดอลลาร์ หลังจากนั้นไปร้านขายของชำ Tom ซื้อขนมปังราคา 3.50 ดอลลาร์กับนมราคา 5.99 ดอลลาร์ และ Bill ก็ซื้อขนมปังเหมือนกันแต่ไม่ได้ซื้อนม
การทำงานของสมองเพื่อตอบคำถามเฉพาะนี้ต่างจากการตอบว่า “Tom กับ Bill ทำอะไรบ้าง?” และถ้าต้องแก้เรื่องเดิม เช่น “เพิ่มเนื้อหาว่า Bill แวะร้านตัดผมหลังจากร้านรองเท้า” ก็ต้อง parse ไวยากรณ์และรักษาความสอดคล้อง จึงต่างออกไปโดยสิ้นเชิงอีก
ภาพรวม !== รายละเอียด !== การเขียน !== การแก้ไขเนื้อหาเดิม และถ้างานวิจัยไม่ได้ถามความเข้าใจทั้งสี่แบบนี้อย่างเท่าเทียมกันทั้งกับเรื่องเล่าและโค้ด ก็รู้สึกว่างานวิจัยยังไม่สมบูรณ์
บทความก็ไม่ได้เชื่อมโยงกับการเขียนโค้ดโดยตรง แต่เชื่อมโยงกับการเขียนแค่ในขอบเขตที่คนอื่นต้องเข้าใจได้
น่าประหลาดใจกว่านั้นคือมีคนที่มีประสบการณ์กับภาษาโปรแกรมคิดจริง ๆ ว่าผลลัพธ์แบบนี้อาจออกมาได้
การทำให้ภาษาโปรแกรมดูภายนอกเหมือนภาษามนุษย์เป็นหนึ่งในข้อผิดพลาดมือใหม่ด้านการออกแบบภาษาที่พบได้บ่อย ดูพาราไดม์ “do what I mean” ของ Perl กับความสับสนหลังจากนั้นได้
ความแตกต่างสำคัญคือภาษาโปรแกรมใกล้เคียงกับ การประกอบสร้างบางสิ่ง มากกว่าการสื่อสาร เป็นการสร้างสิ่งอย่างนิพจน์คณิตศาสตร์ อัลกอริทึม โครงสร้างข้อมูล สถาปัตยกรรมของคอมโพเนนต์หลายส่วน และด้วยเหตุนี้ ความคิดจำนวนมากระหว่างการเขียนโปรแกรมจึงผูกอยู่กับคุณสมบัติโดยนัยของสิ่งที่กำลังถูกสร้าง มากกว่ารายละเอียดทางไวยากรณ์
ภาษามนุษย์ก็ทำสิ่งคล้ายกันได้ เช่น สูตรอาหาร เอกสารกฎหมาย นิยามทางคณิตศาสตร์ กติกาบอร์ดเกม คำสั่งสำหรับ LLM แต่ภาษามนุษย์ยังใช้กับรูปแบบการสื่อสารที่มีวัตถุประสงค์ต่างออกไปโดยสิ้นเชิงได้ด้วย
น่าจะน่าสนใจกว่าถ้าเปรียบเทียบกิจกรรมของสมองระหว่างการอ่านโค้ดกับการอ่าน ภาษามนุษย์ที่ถูกทำให้เป็นทางการ หรือระหว่างการอ่านภาษามนุษย์ที่เป็นทางการกับภาษาที่ไม่เป็นทางการ
การเรียนภาษาโปรแกรมคล้ายกับการเรียนทักษะเฉพาะอื่น ๆ และถ้าสนใจก็ยิ่งดี ไม่ใช่เรื่องของสมองโปรแกรมเมอร์เท่าไรนัก ส่วนการเรียนภาษามนุษย์นั้นต่างออกไปโดยสิ้นเชิงและยากกว่ามาก ส่วนใหญ่เกิดขึ้นกึ่งไม่รู้ตัว ทำให้ผลตอบแทนจาก “การเรียน” ในความหมายทั่วไปต่ำมาก
การนึกภาพโครงสร้างข้อมูลก็ไม่ได้ต่างจากการนึกภาพฉากในหนังสือมากนัก
ตามบทความที่ลิงก์ไว้ การอ่านโค้ดกระตุ้นบริเวณสมองที่ใช้อนุมานปัญหาที่ไม่คุ้นเคยอย่างระมัดระวัง
อีกทั้งยังคาดเดาว่าอาจนำไปใช้ทั่วไปกับคนที่มีประสบการณ์เขียนโปรแกรม 30 ปีไม่ได้ ซึ่งผมเข้าใจว่างานวิชาการจำนวนมากทำกับนักศึกษา แต่การที่กลุ่มทดลองถูกนำไปเทียบกับ การประมวลผลภาษาธรรมชาติ ที่พวกเขามีประสบการณ์มาหลายสิบปีนั้น ไม่ทำให้การเปรียบเทียบนี้ใช้ไม่ได้ไปเลยหรือ?
ในฐานะโปรแกรมเมอร์ที่เรียนเองซึ่งมีพื้นฐานภาษาศาสตร์เชิงทฤษฎี และเคยสัมผัสภาษาหลายภาษาที่ค่อนข้างต่างจากภาษาแม่ในระดับมหาวิทยาลัย ผลลัพธ์นี้ไม่ได้น่าประหลาดใจนัก ในบางชั้นมีความคล้ายคลึงกันชัดเจน แต่ความคล้ายกันระหว่างภาษามนุษย์กับโค้ดคอมพิวเตอร์มักถูกพูดเกินจริง และดูเหมือนเป็นเศษตกค้างจากภาษาศาสตร์ยุคดั้งเดิมกว่าที่เคยโฟกัสแคบ ๆ ที่ไวยากรณ์
ต่อให้มีโค้ดที่ไม่เคยเห็นมาก่อนอยู่ใน repository ความคุ้นเคยกับสไตล์ แบบแผน และการรู้ว่าโค้ดนั้นประกอบเข้ากับโปรแกรมทั้งหมดอย่างไร น่าจะมีผลใหญ่ต่อวิธีรับรู้
ถ้าไม่คุ้นกับการเขียนโปรแกรม การที่บริเวณสำหรับปัญหาที่ไม่คุ้นเคยถูกเปิดใช้งานก็สมเหตุสมผล น่าสนใจถ้าศึกษาว่าบริเวณนี้เปิดเพราะมันไม่คุ้นเคย หรือว่าแม้มีประสบการณ์แล้วก็ยังเปิดเมื่อจัดการกับสิ่งที่เรียกว่าโค้ด
เวลาอ่านโค้ด โดยทั่วไปเรามักจัดการกับสิ่งที่ไม่รู้อยู่แล้วตั้งแต่แรก จึงอาจมีความไม่คุ้นเคยอยู่ระดับหนึ่งเสมอ หรือในทางกลับกัน การอ่านโค้ดเองอาจกลายเป็นสิ่งคุ้นเคยจนไม่ทำงานแบบนั้นอีกต่อไป
ถ้าจะเปรียบเทียบอย่างยุติธรรม ผู้เข้าร่วมควรมีประสบการณ์ทั้งด้านการประมวลผลภาษาธรรมชาติและการเขียนโปรแกรม แต่คนที่คุ้นเคยทั้งสองด้านเท่ากันคงหาได้ยาก สุดท้ายจึงอาจต้องประนีประนอมที่ระดับ “คุ้นเคยกับโค้ดเพียงพอ”
นี่แหละคือเหตุผลที่ผมกลัวอนาคตเวลาได้ยินคนพูดว่า “สั่ง AI ด้วยภาษาทั่วไปแล้วมันจะทำให้ตามนั้น”
ผมไม่อยาก สนทนาด้วยข้อความหรือคำพูดทั่วไป วันละ 8 ชั่วโมง มันคงเหนื่อยมาก ในขณะที่การอยู่กับภาษาโปรแกรม 8 ชั่วโมงเป็นเรื่องสนุก
ควรบอกได้เหมือน
unsafeของ Rust ว่า “ตรงนี้ฉันรู้ว่ากำลังทำอะไรอยู่ เพราะฉะนั้นอย่ามาขวาง” จากนั้นให้ AI ตรวจสอบความถูกต้องของส่วนที่คนเขียนด้วยการทดสอบหรือวิธีอื่นตอนนี้เราก็ทำได้ในระดับหนึ่งแล้ว แต่ปัจจุบันเป็นฝ่ายมนุษย์ที่ตรวจสอบโค้ดที่ AI สร้าง และผมมองว่ายังอีกไกลกว่าจะสลับบทบาทกันได้
Lex Fridman เพิ่งสัมภาษณ์นักภาษาศาสตร์ Edward Gibson และคุยกันมากเรื่องวิธีที่สมองประมวลผลภาษา
ในนั้นรวมถึงประเด็นที่ว่าการอ่านโค้ดเผยให้เห็นบริเวณสมองที่แตกต่างจากภาษาอย่างสิ้นเชิงด้วย
#426 https://lexfridman.com/podcast/
เท่าที่รู้ Evelina Fedorenko ในงานวิจัยนี้เป็นภรรยาของ Edward
สำหรับผม มันเป็นชุดทักษะที่ต่างกันโดยสิ้นเชิง
ผมทำช่อง YouTube ที่เน้นอ่านโค้ด: https://www.youtube.com/@ants_are_everywhere
ผมพยายามอ่านและทำความเข้าใจโค้ดของโปรเจกต์โอเพนซอร์สยอดนิยมแบบที่ไม่เคยเห็นมาก่อน ซึ่งคล้ายกับการ sight-reading ดนตรีอยู่บ้าง
คำอธิบายที่ว่านักวิจัยแทบไม่เห็นการตอบสนองต่อโค้ดในบริเวณภาษา แต่กลับเห็นการทำงานหลัก ๆ ใน multiple demand network ที่ครอบคลุมสมองกลีบหน้าและกลีบข้าง ฟังดูสมเหตุสมผลสำหรับผม เครือข่ายนี้ถูกเรียกใช้ในงานที่ต้องเก็บข้อมูลหลายอย่างไว้ในหัวพร้อมกัน และเกี่ยวข้องกับความสามารถในการทำงานทางจิตหลากหลายแบบ
แน่นอนว่ามีภาษาอยู่ด้วย แต่เราอาจไม่ได้ใช้ความพยายามมากกับการประมวลผลภาษาตัวมันเอง จึงไม่ปรากฏเป็นสัญญาณ fMRI ผมมักต้องถือหลายอย่างไว้พร้อมกัน เช่น โค้ดทำอะไร ผู้เขียนพยายามจะทำอะไร ภูมิหลังของผู้เขียน ซอฟต์แวร์คล้าย ๆ กันทำงานอย่างไร ฯลฯ
ผมเคยเรียนคณิตศาสตร์ แต่สิ่งนี้ก็ไม่ได้ให้ความรู้สึกเหมือนอ่านหนังสือหรือทำคณิตศาสตร์เท่าไร
การ “โหลด” สิ่งเหล่านั้นขึ้นมาในหัวต้องใช้เวลาพอสมควร และคล้ายกับการ ทรงตัว ที่ต้องคอยรักษาสมดุลไม่ให้ทั้งก้อนพังลงมา
ถ้าถูกขัดกลางคัน ก็เหมือนเสียสมดุลและทุกอย่างกระจัดกระจาย หลังจากนั้นต้องค่อย ๆ เก็บกลับมาใหม่ ซึ่งเสียทั้งเวลาและแรง ถ้าเกิดแบบนี้ติด ๆ กันหลายครั้งจะอึดอัดอย่างมาก
Paul Graham พูดถึงเรื่องนี้ในบทความเรื่อง maker schedule กับ manager schedule: (2009) https://paulgraham.com/makersschedule.html
ความรู้สึกเหมือนกันเป๊ะ และรูปแบบการเก็บหลายอย่างไว้ในหัวพร้อมกันก็เหมือนกัน
ถ้าดูตามมาตรฐานประสาทวิทยาและภาพถ่ายสมองสมัยใหม่ ข้อสรุปก็คือโดยพื้นฐานแล้ว การอ่านโค้ดเหมือนกับ การฟื้นสติจากโคม่าด้วย zolpidem
ตอนเด็กและวัยรุ่นเคยเล่นเครื่องดนตรีอยู่หลายชนิด แต่ไม่ถนัด sight-reading ได้ยินมาว่าความสามารถทางดนตรีกับความสามารถในการเขียนโปรแกรมมักสัมพันธ์กัน แต่ผมคงเป็นนักดนตรีอาชีพไม่ได้แน่ ๆ แทนที่จะเป็นอย่างนั้น ผมกลับสร้างอาชีพที่ดีจากการเขียนโปรแกรมได้
ไม่น่าแปลกใจเลย การอ่านโค้ดไม่เหมือนการอ่านร้อยแก้ว ไม่เหมือนการทำคณิตศาสตร์ และใกล้เคียงกับ การประกอบจิ๊กซอว์ในหัว มากกว่า
การจะเข้าใจว่าโค้ดทำอะไร ต้องเชื่อมโยง แทนค่า และแปลสิ่งจำนวนมากแบบเรียลไทม์ ทั้งฟังก์ชัน สัญลักษณ์ ตัวแปร ประโยค คำอธิบายเชิงนามธรรม ฯลฯ ดังนั้นการอ่านโค้ดจึงอาจซับซ้อนกว่าการเขียนโค้ดขึ้นใหม่ตั้งแต่แรกด้วยซ้ำ
ที่จริงจุดร่วมแทบมีแค่ทั้งสองอย่างถูกเรียกว่า “ภาษา” เท่านั้น
เพราะมันคือ ชุดคำสั่งเครื่อง ที่เขียนไว้ให้คอมพิวเตอร์ทำอะไรบางอย่าง และไม่สามารถหรือไม่จำเป็นต้องเป็นอุปมาของสิ่งอื่นเหมือนในบริเวณภาษา
สำหรับผม การอ่านโค้ดคล้ายกับการดูรูปชุดเฟืองแล้วถูกถามว่า “เฟือง A หมุนทวนเข็มนาฬิกาหรือตามเข็มนาฬิกา”
ในแง่ความรู้สึก มันใกล้กับ การวิเคราะห์กลไก มากกว่าการเข้าใจภาษา
เรื่องนี้เห็นได้จากตอนอ่านโค้ด ไม่มี เสียงบรรยาย อยู่ในหัว
เวลาพยายามอ่านโค้ด ถ้ามีเสียงรบกวนพื้นหลังที่ฟังออกเป็นคำพูดหรือเหมือนดนตรีของภาษาที่คุ้นเคย จะทำให้เสียสมาธิและหงุดหงิด ผมพูดไปด้วยขณะโค้ดไม่ได้เหมือนกัน ไม่งั้นพิมพ์จะรวน
อีกอย่าง ผมชอบภาษาอย่าง Ruby ที่ ใกล้กับประโยคภาษาอังกฤษ มากกว่าอย่างชัดเจน เมื่อเทียบกับภาษาที่มีสัญลักษณ์เยอะอย่าง Rust หรือมีตัวย่อกับโอเปอเรเตอร์เยอะอย่าง Haskell แน่นอนว่านักพัฒนาคนอื่น ๆ คงมีเส้นทางในสมองที่ถูกกระตุ้นต่างกัน
โค้ดที่อ่านไม่ลื่นมักประมวลผลยาก อาจเพราะ จังหวะ ของเสียงบรรยายนั้นสะดุดและไม่ไหลไปเองตามธรรมชาติ
เวลาผมอธิบายว่าบางอย่างทำงานอย่างไร ก็มักจะตามจังหวะเดียวกับเสียงบรรยายนี้ จึงช่วยให้อธิบายได้กระชับและถ่ายทอดความรู้ได้เร็ว
อย่างไรก็ตาม มันต่างจากเสียงบรรยายตอนอ่านนิยายอย่างชัดเจน น่าจะเป็นเพราะระหว่างสองอย่างนี้มีหรือไม่มีภาษาทางอารมณ์ต่างกัน อาจคล้ายกับปรากฏการณ์ที่บางคนมีบทพูดภายใน บางคนไม่มี หรือระดับรายละเอียดในการจินตนาการสิ่งของโดยไม่เห็นจริงแตกต่างกัน
คำว่าเหมือนในที่นี้หมายถึงวิธีการทำงานและวิธีที่ “ได้ยิน” เหมือนกัน และแน่นอนว่าไวยากรณ์กับคำศัพท์ก็เป็นไปตามภาษามือที่ใช้ จริง ๆ แล้วสมองบริเวณเดียวกันทำงาน
สิ่งนี้ดูเหมือนจะหมายความว่าเสียงบรรยายไม่ใช่แค่ “เสียงสะท้อนของเสียง” แต่เป็นกระบวนการทำความเข้าใจเอง เช่นเดียวกับตอนอ่านตัวหนังสือ
โดยเฉพาะการตัดสินเรื่องลูป ต้องทำซ้ำโดยแก้โค้ดชั่วคราวไปด้วย
ส่วนใหญ่ทำงานจากที่บ้าน และเวล coding ก็มักจะเปิดเพลงไว้
เพราะชอบร้องตามเพลง เลยนั่งอยู่ที่โต๊ะทั้งวัน ร้องเพลงไป coding ไป
แต่เวลาต้องอ่านอะไรสักอย่าง ทำแบบนี้ไม่ได้เลย เป็นไปไม่ได้ที่จะอ่านบทความไปพร้อมกับร้องเพลงอื่นไปด้วย แต่เวล coding กลับทำได้ง่ายมาก