FAQ: ตกลงว่าอะไรคือ coding?
ผมจะทดลองอธิบายคำว่า coding ด้วยโวหาร 4 ชนิด: บรรยายโวหาร สาธกโวหาร เทศนาโวหาร และ อุปมาโวหาร ดูนะครับ
highlights:
- [โรงเรียน/ที่ทำงานของผม] เขาก็ไม่ได้มานั่งสอนให้จำแนกแยกแยะความหมายของคำแบบยิบย่อยเช่นนี้ครับ
- ใครล่ะจะมีอำนาจในการให้นิยามที่คนอื่นต้องเชื่อตาม?
- อย่าไปสนใจมากนักเลยว่า coding กับ programming มันต่างกันอย่างไร
- อยากชักชวนมาดูเจตนารมณ์ของหลักสูตรดีกว่าครับ
- ผมไม่เคยได้ยินใครพูดว่า “เขียน code จนออกมาเป็น app อย่างมืออาชีพได้โดยไม่ต้องใช้คอมพิวเตอร์” นะครับ ถ้าใครพูดอย่างนั้นคงน่าขำแย่เลย และถ้าเขาไม่ได้พูดอย่างนั้นแต่ใครไปตีความว่าเขาพูดอย่างนั้น ก็ฮาดีเหมือนกันนะครับ
บรรยายโวหาร
coding คือคำที่มีความหมายกว้าง เป็นการใช้สัญลักษณ์เพื่อสื่อถึงลำดับขั้นตอนอะไรบางอย่าง อาจะเป็นการทำอาหาร ทำงานจักรสาน แต่งเพลง หรือเขียนโปรแกรมคอมพิวเตอร์ก็ได้
- ความหมายนี้ผมอ้างอิง อ.ยืน https://www.facebook.com/permalink.php?story_fbid=10216980584084457&id=1162233576
และถ้าดู Oxford Advanced Learner’s Dictionary ซึ่งให้ความหมายของคำว่า code ไว้ 3 ความหมาย หนึ่งในนั้นคือการเขียนโปรแกรมคอมพิวเตอร์โดยใส่คำ/ตัวเลข/สัญลักษณ์ อะไรบางอย่างในระบบหนึ่ง เข้าไปในอีกระบบหนึ่ง ในนิยามนี้ไม่ไ้ด้บอกว่าจะต้องเขียนใส่ระบบคอมพิวเตอร์ในทันที และที่มาของคำว่า code ในภาษาละตินมาจากความหมายว่า “ท่อนไม้” ซึ่งมันก็สอดคล้องกับแนวคิดของการเขียนโปรแกรมโดยใช้บัตรคำสั่ง หรือใช้บล็อกต่างๆ เรียงต่อกัน
- อ้างอิง dictionary:https://www.oxfordlearnersdictionaries.com/definition/english/code_2#code_inflg_1
ส่วนคำว่า programming หรือการเขียนโปรแกรม เป็นคำที่มีความหมายแคบลง อ.ยืน บอกว่าหมายถึง computer coding หรือการเขียน code ให้คอมพิวเตอร์ทำงานตามที่เราต้องการได้
สาธกโวหาร
ผมเรียน coding มาจากหลายสำนักครับ แต่บอกตรงๆ ว่า ที่ยกคำนิยามต่างๆ มาเล่าให้ฟังเนี่ยะ ผมไม่ได้เรียนมาจากค่ายคอมพิวเตอร์โอลิมปิก หรือห้องเรียนที่ Carnegie Mellon หรือ University of California หรือแม้แต่การฝึกอบรมพนักงานใหม่ที่ Google เขาก็ไม่ได้มานั่งสอนให้จำแนกแยกแยะความหมายของคำแบบยิบย่อยเช่นนี้ครับ ผมเพิ่งมาเปิด dictionary และเปิด post ของ อ.ยืน อ่านเมื่อกี้นี้เอง ได้ความรู้มาประดับสมองสนุกดีเหมือนกัน
เปิด dictionary หลายยี่ห้อไปเรื่อยๆ สืบสาวราวเรื่องไปเรื่อยๆ ก็เริ่มคิดว่า ความสนุกมันมีจำกัดครับ เราจะหาความหมายที่แท้จริงเพื่อไปเถียงกัน อาจจะไม่มีประโยชน์เท่าไหร่ เพราะแต่ละสำนักก็เขียนไม่เหมือนกันครับ อย่างเช่นบทความหนึ่งโดยผู้ออกแบบหลักสูตรของ Code.org ก็แยกแยะคำว่า coding & programming ไว้ว่า programming คือศาสตร์และศิลป์แห่งการเขียน code ที่มีมาแต่โบราณ ผู้เขียนจะต้องมีทักษะความคิด มีตรรกะอย่างรอบด้าน และวางแผนทุกอย่างไว้อย่างดีก่อนที่จะลงมือพิมพ์ code ลงคอมพิวเตอร์ แต่คนอีกประเภทหนึ่งคือ มีหน้าที่พิมพ์ code ลงไปอย่างเดียวโดยที่ไม่ต้องคิดวางแผนอะไรมากมาย คนพวกนี้เรียกว่า coder มีศักดิ์ศรีและวิทยายุทธน้อยกว่า programmer กระนั้นผู้เขียนก็บอกว่า นั่นเป็นแค่ตำราหนึ่ง จริงๆ แล้วใครล่ะจะมีอำนาจในการให้นิยามที่คนอื่นต้องเชื่อตาม? และสำหรับ Code.org เขาก็ใช้คำว่า coding เพื่อให้ดู “น่ารัก น่าลุ้น น่าลอง” สำหรับผู้เรียนมือใหม่ ซึ่งเว็บนี้เขาก็มีเครื่องมือการเรียนรู้ทั้งบนเว็บ และแบบ unplugged ด้วย
- อ้างอิง Kiki Prottsman, Curriculum Development Manager, Code.org https://www.huffpost.com/entry/coding-vs-programming-bat_b_7042816
เทศนาโวหาร
ดังนั้นในฐานะที่ผมก็เป็น “ศิษย์มีอาจารย์ หนึ่งบ้าง” ขอเสนอแนวปฏิบัติที่สอดคล้องกับหลักสูตรดังนี้ครับ อย่าไปสนใจมากนักเลยว่า coding กับ programming มันต่างกันอย่างไร ลากบัตรคำสั่งมาต่อกันเป็น coding มั้ย? เขียนอัลกอริทึมการแยกผลไม้ลงบนกระดาษจัดเป็น coding มั้ย หรือว่าถ้าเขียนเป็นข้อ ๆ แล้วจะเป็น coding แต่ถ้าพูดด้วยวาจาไม่ใช่ coding? โอโห ถ้าจะคิดและถกเถียงเรื่องนี้ เถียงกันได้หลายวันเลยครับ อาจจะสนุกดีด้วย และไม่ว่าเถียงไปอย่างไรก็จะมีอีกฝ่ายดึง reference อื่นมาหักล้างได้เสมอ สักพักจะหมดสนุกครับ แล้วเราจะเริ่มถามว่า เอ๊ะ ที่เถียงกันเนี่ยะ เด็ก ป.1 ได้อะไร?
ผมอยากชักชวนมาดูเจตนารมณ์ของหลักสูตรดีกว่าครับ แกนที่หนึ่งของหลักสูตรวิทยาการคำนวนต้องการสอนให้เด็กมีทักษะการคิดเป็นระบบ เป็นขั้นตอน รู้จักใช้เหตุผลเชิงตรรกะ บางทีทักษะพวกนี้เรียกรวมๆ ว่า ความคิดเชิงคำนวณ นั่นคือเป้าหมายปลายทางครับ ส่วน coding เป็นเครื่องมือที่พาเราไปสู่จุดนั้น จะเรียน coding บางส่วนโดยไม่มีคอมพิวเตอร์ก็ได้ เช่น ป.1-3 นี่ไม่ต้องใช้คอมพิวเตอร์เรียน coding เลยครับ ไม่ใช้นี่ไม่ใช่เพราะขาดแคลนนะ แต่เพราะเราต้องการให้เด็กโฟกัสกับความคิดตัวเองมากกว่าเครื่องมือ ฝึกทักษะสัมพันธ์ทางร่างกาย ใช้มือไม้สัมผัสวัตถุของจริงมากกว่าการคลิกวัตถุดิจิทัล อยากให้เด็กได้ทำกิจกรรมกับเพื่อนมนุษย์ก่อนที่จะสร้างความสัมพันธ์กับหุ่นยนต์
ส่วนข้อสังเกตที่ว่า การเขียนโปรแกรมให้ใช้งานได้จริง ออกมาเป็น app จริงๆ ยังไงก็ต้องใช้คอมพิวเตอร์ คำตอบคือ ถูกต้องครับ (ใครจะเถียง!) แต่โฟกัสของหลักสูตรนี้คือพัฒนาความคิดของเด็ก มากกว่าพัฒนา app ครับ
สรุปคือ: ถ้าไม่ใช้คอมฯ ก็เรียนบางส่วน (ที่สำคัญมากที่สุด) ได้แน่นอนครับ แต่จะเรียนบางส่วนไม่ได้ครับ อันนี้ผมคิดว่าผมไม่เคยได้ยินใครพูดว่า “เขียน code จนออกมาเป็น app อย่างมืออาชีพได้โดยไม่ต้องใช้คอมพิวเตอร์” นะครับ ถ้าใครพูดอย่างนั้นคงน่าขำแย่เลย และถ้าเขาไม่ได้พูดอย่างนั้นแต่ใครไปตีความว่าเขาพูดอย่างนั้น ก็ฮาดีเหมือนกันนะครับ (อันนี้เรียกว่า strawman fallacy เป็นตรรกะวิบัติที่สอนในระดับมัธยมครับ — แต่นั่นเป็นอีกเรื่องหนึ่ง)
อุปมาโวหาร
โดยธรรมดา การเปรียบเทียบล้วนไม่มีอะไรสมบูรณ์แบบ ทุกศาสตร์มีลักษณะเฉพาะที่แตกต่างกันได้อยู่แล้ว กระนั้น การหยิบยกศาสตร์อื่นขึ้นมาเปรียบเทียบ ย่อมเป็นไปเพื่อส่งเสริมความเข้าใจ หาใช่เพื่อนำมาถกเถียงเอาชนะกันไม่
การเรียน coding ในช่วง ป.1 – ป.3 อาจเปรียบเทียบได้กับการเรียนรู้ศาสตร์อื่นๆ ดังนี้ครับ
- การขับรถ:
- ไม่มีใครอ้างว่าเรียนขับรถจนจบได้โดยไม่ต้องมีรถหรอกครับ แต่การเรียนขับรถ บางบทเรียนเราก็เรียนบนกระดาษเหมือนกัน เช่น กฎจราจรต่างๆ กฎเรื่องป้ายหยุด วงเวียน ทางร่วมทางแยก ศึกษาจากแผนผังก่อนออกถนนจริง ก็จะปลอดภัยมากขึ้น ฉันใดก็ฉันนั้น เด็กๆ สามารถเรียนทักษะพื้นฐานต่างๆ ของ coding ผ่านบัตรคำสั่งและกิจกรรม unplugged ต่าง ๆ ก่อนลงมือในคอมพิวเตอร์จริงๆ
- เที่ยวต่างประเทศ
- บางครั้งก่อนไปเที่ยวต่างประเทศ หรือต่างเมือง เราก็ศึกษาบนกระดาษ บนแผนที่ หรือบน Google Street View ก่อนเดินทางไปจริง ดังนั้น เรา “เรียนรู้” เมืองใหม่ก่อนไปจริงๆ ได้ครับ ฉันใดก็ฉันนั้น เราเรียนรู้ coding ได้ก่อนที่จะพิมพ์ลง computer จริงๆ
- ว่ายน้ำ
- ก่อนกระโดดลงไปในมหาสมุทร เราก็ให้เด็กหัดว่ายน้ำในสระตื้นๆ ก่อน หรือบางทีเราให้หัดกลั้นหายในน้ำ ในอ่างน้ำเล็กๆ ก่อนลงสระด้วยซ้ำไป จากนั้นเมื่อเด็กได้ทักษะพื้นฐาน จึงนำไปฝึกในสระที่ใหญ่ขึ้น ลึกขึ้น ฉันใดก็ฉันนั้น การเรียน coding ไม่จำเป็นต้องเริ่มบน computer เสมอไป แท้จริงแล้ว เริ่มเรียนผ่านสื่อการสอนที่จับต้องได้ เช่น บอร์ดเกมและบัตรคำสั่ง น่าจะเป็นการปูพื้นฐานที่ดีกว่าด้วยซ้ำ
- เพศศึกษา
- คุณพ่อคุณแม่ทุกคนคงจะได้เรียนเพศศึกษาผ่านกระดาษ หรืออุปกรณ์สื่อการสอนต่าง ๆ เพื่อจะได้ทราบหลักการพื้นฐาน และความเสี่ยงที่เกี่ยวข้องก่อนลงมือปฏิบัติด้วย hardware จริง … coding ก็เช่นกันครับ
ผนวกเดช สุวรรณทัต / 30 ก.ค. 2562
หมายเหตุ
- ร่างคำตอบนี้จัดทำขึ้นเพื่อใช้ประกอบการสนทนากับคุณกล้า สมุทวณิช ในรายการ podcast กล้าคุย https://www.pongkoiim.com/go/?p=371
- ความคิดเห็นในบทความนี้เป็นความคิดเห็นส่วนตัวของผู้เขียน ไม่ใช่ความคิดเห็นขององค์กรใด
คลิปนี้น่าสนใจ (ยังไม่ได้ดู) ขอแปะไว้ตรงนี้ก่อน
https://youtu.be/cKhVupvyhKk