รองศาสตราจารย์ ดร.วิศปัตย์ ชัยช่วย ผู้ช่วยคณดีฝ่ายบัณฑิตศึกษาอนาคต บัณฑิตวิทยาลัย มหาวิทยาลัยขอนแก่น
1.ความหมายและความสำคัญ
ในโลกที่เทคโนโลยีดิจิทัลกำลังเติบโตอย่างก้าวกระโดด นอกการเรียนรู้ภาษาไทยและภาษาต่างประเทศเพื่อการสื่อสารระหว่างมนุษย์แล้ว ยังต้องเรียนรู้ภาษาเพื่อสั่งการ สื่อสารระหว่างมนุษย์กับคอมพิวเตอร์ ให้ทำงานอย่างถูกต้องและมีประสิทธิภาพอีกด้วย ทักษะการเขียนโค้ดจึงกลายเป็นสิ่งจำเป็นสำหรับคนในศตวรรษที่ 21
บางคนอาจเข้าใจคลาดเคลื่อนว่า การเขียนโค้ด เป็นเรื่องเฉพาะสำหรับโปรแกรมเมอร์หรือนักไอทีเท่านั้น แต่แท้ที่จริงแล้วทักษะนี้เกี่ยวข้องกับความสามารถในการคิดอย่างเป็นระบบ มีตรรกะในการแก้ไขปัญหาอย่างมีเหตุผล
Code คือ ชุดคำสั่งด้วยภาษาคอมพิวเตอร์ เช่น C++, PHP, Java เพื่อให้คอมพิวเตอร์หรือโปรแกรมทำงานตามที่ต้องการ
การเขียนโค้ด (Coding) คือ เป็นส่วนหนึ่งของกระบวนการเขียนโปรแกรมคอมพิวเตอร์ โดยใช้ภาษาโปรแกรม คอมพิวเตอร์ เช่น BASIC C, Pascal, Assemble โดยอิงตามแผนการเขียนโปรแกรม โดยใช้คำสั่งตามที่ภาษาโปรแกรมนั้น ๆ ระบุไว้ ผลที่ได้จากการเขียน เรียก Source code หรือ Source fle จากนั้นจึงนำ Source code ที่ได้เข้าสู่กระบวนการทดสอบและประมวลผล คือ การทำให้เป็นโปรแกรมทำงานได้ตามที่เขียนโค้ดไว้ (Votsis, 2018)
ทักษะการเขียนโค้ด (Coding skill) มีหลากหลายระดับ ตั้งแต่ระดับพื้นฐานที่เข้าใจการใช้คำสั่งพื้นฐานในภาษาโปรแกรม ไปจนถึงระดับขั้นสูงที่สามารถออกแบบและพัฒนาระบบซับซ้อนได้ เช่น เว็บแอปพลิเคชัน แอปพลิเคชันมือถือ ระบบฐานข้อมูล และอื่น ๆ
คณะกรรมการจัดทำพจนานุกรมศัพท์ศึกษาศาสตร์ร่วมสมัย สำนักงานราชบัณฑิตยสภา บัญญัติศัพท์ของคำว่า Coding คือ “การทำสัญลักษณ์” ซึ่งหมายถึง การเขียนหรือกำหนดสิ่งที่ใช้เป็นสื่อแทนความคิด ลำดับความคิดและลำดับขั้นตอน เพื่อสื่อสารให้เข้าใจและสามารถนำไปสู่การปฏิบัติได้อย่างถูกต้องและมีประสิทธิภาพ เช่น การเขียนผังความคิด การวางลำดับตัวโน้ตในการแต่งเพลง การออกแบบลำดับท่าเต้นท่ารำ การเขียนแผนธุรกิจ การเขียนโปรแกรมคอมพิวเตอร์ การเขียนสัญลักษณ์เป็นส่วนหนึ่งของวิทยาการคำนวณ มิได้มุ่งให้ผู้เรียนเป็นโปรแกรมเมอร์เท่านั้น แต่มุ่งให้ผู้เรียนสามารถใช้ชีวิตในอนาคตได้อย่างมีประสิทธิภาพและมีความสุข
การเขียนโค้ด เป็นทักษะที่มีความสำคัญมากในศตวรรษที่ 21 และมีผลกระทบต่อการเรียนรู้และการทำงานในหลากหลายด้านดังนี้ (Hainey, Connolly, Boyle, Wilson, & Razak, 2016; Brown, Bell & Peddie, 2016; Denny & Luxton-Reilly, 2019)
- การเรียนรู้ในรูปแบบใหม่ ช่วยพัฒนาทักษะคิดเชิงตรรกะและการแก้ไขปัญหา ผู้ที่มีทักษะการเขียนโค้ด มักมีกระบวนการคิดที่เน้นการแยกแยะปัญหาและหาทางแก้ไขได้อย่างมีเหตุผล
- พัฒนาทักษะเชิงตัวเลข การทำงานกับโค้ดคอมพิวเตอร์ มักเกี่ยวข้องกับการทำงานกับข้อมูลที่มีลักษณะเชิงตัวเลข ทำให้ผู้เรียนสามารถพัฒนาทักษะในการวิเคราะห์และจัดการกับข้อมูลต่าง ๆ ได้เป็นอย่างดี
- การทำงานและการแก้ไขปัญหาที่ซับซ้อน การตีความปัญหาให้เป็นภาษาโค้ดช่วยให้เห็นภาพรวมของปัญหาและเส้นทางในการแก้ไขได้ชัดเจน
- เรียนรู้และปฏิสัมพันธ์กับเทคโนโลยีใหม่ ในสภาวะที่เทคโนโลยีเปลี่ยนแปลงอย่างรวดเร็ว ทักษะการเขียนโค้ดช่วยให้เข้าใจและปรับตัวตามเทคโนโลยีใหม่ๆ ได้อย่างรวดเร็ว
- พัฒนาศักยภาพในการงาน ช่วยเตรียมความพร้อมให้กับงานในอนาคตที่ต้องการทักษะเชิงดิจิทัลและการทำงานกับเทคโนโลยี รวมถึงสร้างโอกาสในการทำงานในสาขางานที่เกี่ยวข้องกับไอทีและการพัฒนาซอฟต์แวร์
- สร้างผลงานและนวัตกรรม ทั้งในด้านซอฟต์แวร์ แอปพลิเคชัน และเทคโนโลยีต่าง ๆ
- เข้าถึงอาชีพใหม่ที่เกี่ยวข้องกับเทคโนโลยีและการพัฒนาซอฟต์แวร์ เช่น ผู้พัฒนาเว็บไซต์ นักพัฒนาแอปพลิเคชัน นักวิเคราะห์ข้อมูล และอื่น ๆ
การเขียนโค้ด กำลังเป็นสิ่งที่หลายประเทศให้ความสำคัญและส่งเสริมให้เกิดกับพลเมือง เช่น ในประเทศสิงคโปร์ ตั้งงบประมาณและเป้าหมายให้เด็กทุกคนได้เรียนเขียนโค้ด ขณะที่สหรัฐอเมริกา ริเริ่มโครงการ Computer Science for All ส่งเสริมให้นักเรียนทุกคนมีโอกาสเรียนวิชาวิทยาการคำนวณ เพื่อฝึกทักษะการเขียนโปรแกรมตั้งแต่เด็ก (US Department of Education, 2016) สำหรับประเทศไทย ในปีพ.ศ. 2562 กระทรวงศึกษาธิการประกาศให้การเขียนโค้ด เป็นสาระที่นักเรียนทั่วประเทศต้องเรียนอย่างเป็นทางการ โดยวิชา Coding เป็นส่วนหนึ่งของหลักสูตรวิทยาการคำนวณที่บรรจุอยู่ในสาระเทคโนโลยี กลุ่มสาระเรียนรู้วิทยาศาสตร์ และเริ่มเรียนตั้งแต่ชั้น ป.1 โดยนำการเขียนโค้ดแบบอันปลั๊ก คือ เน้นกระบวนการคิดอย่างเป็นเหตุเป็นผล การคิดอย่างเป็นขั้นตอน การมีปฏิสัมพันธ์ การสื่อสารกับเพื่อนร่วมชั้นเรียน ทำให้เด็กรู้สึกสนุกสนาน สามารถจัดกิจกรรมโดยใช้บัตรคำสั่ง บัตรคำ หรือ เกม มากกว่าการใช้คอมพิวเตอร์ (โครงการส่งเสริมการเรียนรู้เพื่อพัฒนาทักษะด้านโค้ดดิ้งสู่สังคมดิจิทัลในอนาคต, 2562)
2.ลักษณะและองค์ประกอบ
ทักษะการเขียนโค้ด ถือเป็น Hard skill เนื่องจากเป็นทักษะที่สามารถวัดได้ในรูปแบบที่ชัดเจน เป็นสิ่งที่สามารถเรียนรู้และปรับปรุงได้ผ่านการฝึกฝนและปฏิบัติจริงในงานตามมาตรฐานที่กำหนด ไม่เหมือนกับ Soft skill ที่เน้นทักษะที่เกี่ยวข้องกับการปฏิบัติงานและความสัมพันธ์กับผู้อื่น อย่างไรก็ดี การเขียนโค้ด เป็นชุดทักษะ (Skillset) ที่ประกอบขึ้นจากหลายทักษะรวมกัน และมีบางทักษะที่เป็น Solf skill ด้วยเช่นกัน ดังนี้ (McDowell, 2015;_Le & Blumenfeld, 2018; Denny & Luxton-Reilly, 2019)
- ความเข้าใจในภาษาโปรแกรมคอมพิวเตอร์ (Programming Languages) เช่น Python, Java, JavaScript รวมถึงการใช้ไวยากรณ์และโครงสร้างของภาษา
- ความสามารถในการวางแผนและออกแบบโครงสร้างของโปรแกรม (Designing Structures) ทำให้โค้ดเป็นระเบียบและมีประสิทธิภาพ
- การใช้ระบบเวอร์ชั่นคอนโทรล (Version Control System) เช่น Git เพื่อบริหารจัดการโค้ดและการทำงานร่วมกับทีม
- ความสามารถในการอ่านและเขียนโค้ด (Reading and Writing Code) ที่ถูกต้องและมีประสิทธิภาพ เพื่อให้ความหมายและไวยากรณ์ของโค้ดเป็นไปตามมาตรฐาน
- ความสามารถในการตรวจหาและแก้ไขข้อผิดพลาดในโค้ด (Debugging) เพื่อให้โปรแกรมทำงานได้ตามที่ต้องการ
- ความสามารถในการคิดเชิงตรรกะและคณิตศาสตร์ (Algorithmic and Mathematical Thinking) การใช้ความเข้าใจในเรื่องของตรรกะและคณิตศาสตร์ในการแก้ไขปัญหาที่เกี่ยวข้องกับโค้ด
ส่วนที่ต้องอาศัย Solf skill เช่น ความสามารถในการวิเคราะห์และแก้ไขปัญหา ตั้งแต่การตีความปัญหาให้กับโค้ดไปจนถึงการหาวิธีแก้ไขปัญหาโดยใช้โค้ด, การเรียนรู้และการปรับปรุงตนเอง เพื่อให้สามารถเรียนรู้และปรับใช้เทคโนโลยีใหม่ๆ ได้, การทำงานร่วมกับทีม เพื่อแบ่งปันและปรับปรุงโค้ดร่วมกัน, การนำเสนอและสื่อสารความคิดที่อยู่ในรูปแบบของโค้ดได้อย่างชัดเจนแก่ผู้อื่น, การทำงานอย่างรอบคอบ* มีความระมัดระวังในการเขียนโค้ดเพื่อให้มั่นใจว่าไม่มีข้อผิดพลาดที่มองข้ามไป, การเรียนรู้ด้วยตนเอง และการพัฒนาทักษะการเขียนโค้ดใหม่ๆ
อาจจำแนกทักษะการเขียนโค้ดออกได้หลายระดับ ตามความเชี่ยวชาญในการเขียนและทำงาน ดังนี้
- ระดับเริ่มต้น (Beginner) ส่วนมากจะมีความรู้พื้นฐานเกี่ยวกับไวยากรณ์และโครงสร้างของภาษาโปรแกรมที่ใช้ ยังต้องฝึกการแก้ไขข้อผิดพลาดและเรียนรู้จากโค้ดของผู้อื่น
- ระดับกลาง (Intermediate) มีความรู้และประสบการณ์ในการเขียนโค้ดมากขึ้น สามารถสร้างโปรแกรมที่มีความซับซ้อนกว่าและมีความเสถียรภาพ และเข้าใจการแก้ไขปัญหาเบื้องต้น
- ระดับสูง (Advanced) มีความรู้และทักษะที่ลึกลงเกี่ยวกับการเขียนโค้ด สามารถสร้างและออกแบบโครงสร้างของโปรแกรมที่ซับซ้อน และมีความรู้ในการเลือกใช้เครื่องมือและเทคโนโลยีที่เหมาะสม
- ระดับเชี่ยวชาญ (Expert) บุคคลที่มีความเชี่ยวชาญในการเขียนโค้ดในพื้นที่ที่เฉพาะเจาะจง มีความรู้ลึกลงในหลายภาความเชี่ยวชาญ สามารถแก้ไขปัญหาทางเทคนิคที่ซับซ้อนและท้าทายได้
- ระดับนักพัฒนาหลัก (Principal Developer) มีความเชี่ยวชาญเป็นนักพัฒนาหลักในทีม มีความสามารถในการออกแบบและพัฒนาโครงสร้างระบบและโปรแกรมที่ซับซ้อน
- ระดับทรงคุณวุฒิ (Subject Matter Expert) มีความเชี่ยวชาญในเนื้อหาที่เฉพาะเจาะจง เช่น การใช้งานฐานข้อมูล, การพัฒนาแอปพลิเคชันเฉพาะสาขา โดยระดับเหล่านี้อาจมีความสัมพันธ์กับความเชี่ยวชาญในงานเฉพาะหรือความรู้ที่ลึกลงเกี่ยวกับรายละเอียดทางเทคนิคในสายงานที่ตนทำงานอยู่
สำหรับคนทั่วไปที่ไม่ได้เรียนในสายไอที หรือ วิทยาการข้อมูล การมีทักษะการเขียนโค้ดในระดับเริ่มต้น ก็นับว่าเพียงพอสำหรับการทำงานพื้นฐานแล้ว แต่หากสามารถต่อยอด พัฒนาตนเองในระดับที่สูงขึ้นก็จะนำมาซึ่งโอกาสในการทำงานที่ดีกว่า
3.การพัฒนาทักษะ
การเขียนโค้ดเป็น Hard skill ที่ต้องใช้เวลาในการพัฒนา โดยการเรียนรู้และปฏิบัติจริง อย่างต่อเนื่อง โดยสามารถเรียนรู้ได้ตั้งแต่ระดับชั้นประถมศึกษา โดยในช่วงต้นสามารถสอนแบบ Unplugged คือ ไม่ต้องใช้คอมพิวเตอร์ แต่ให้ผู้เรียนได้สัมผัสกับความจริงในธรรมชาติที่มีผลจริงและจับต้องได้ อาจทดลองเขียนโปรแกรมโดยการเคลื่อนไหวทางกายภาพ เช่น การใช้บัตรคำสั่งบนกระดาษ วาดภาพ ต่อมาจึงเริ่มสอนแบ Plug In คือ ใช้คอมพิวเตอร์และโปรแกรมเป็น Block-based Programming จะมีบล็อกบัตรคำสั่งที่เป็นสี เอาเม้าส์ลากบล็อกมาต่อกันได้ สั่งตัวละครให้เดินตาม การสอนจึงเน้นที่การคิดไม่ได้เน้นที่การท่องจำ ส่วนชั้นมัธยมศึกษา ต้องเน้นให้เขียนโปรแกรมโดยใช้ภาษาต่าง ๆ รวมทั้งอุปกรณ์ที่ช่วยให้เกิดการพัฒนาชิ้นงานที่ทำงานได้ตามคำสั่ง เพื่อเป็นพื้นฐานในการพัฒนาโครงงานดิจิทัลในชั้นมัธยมศึกษาตอนปลายต่อไป (โครงการส่งเสริมการเรียนรู้เพื่อพัฒนาทักษะด้านโค้ดดิ้งสู่สังคมดิจิทัลในอนาคต, 2562)
สำหรับคนที่ยังไม่มีพื้นฐานในการเขียนโค้ด การพัฒนาทักษะสามารถทำได้ด้วยแนวทางต่อไปนี้ (Brown, Bell & Peddie, 2016; Votsis, 2018; Denny & Luxton-Reilly, 2019)
- เรียนรู้พื้นฐานคอมพิวเตอร์ ทำความรู้จักกับฮาร์ดแวร์และซอฟต์แวร์พื้นฐาน เช่น การทำงานของระบบปฏิบัติการ การใช้งานเว็บเบราว์เซอร์ และการติดตั้งโปรแกรมพื้นฐาน
- เรียนรู้เกี่ยวกับหลักการพื้นฐานของโปรแกรมคอมพิวเตอร์ เช่น การทำงานของตัวแปร การใช้งานเงื่อนไข (if-else) และการวนซ้ำ (loops)
- เลือกภาษาโปรแกรมเบื้องต้นที่เหมาะสมสำหรับผู้เริ่มต้น เช่น Python ซึ่งมีไวยากรณ์ที่อ่านง่ายและเหมาะสำหรับการเรียนรู้เบื้องต้น
- เรียนรู้ผ่านการฝึกอบรม ซึ่งมีทั้งที่เป็นแบบออนไลน์ หรือออนไซส์ แบบที่ต้องเสียค่าลงทะเบียน หรือแบบฟรี เช่น Codecademy, freeCodeCamp, Coursera, Udemy เป็นต้น
- นำความรู้ที่ได้เรียนรู้มาใช้ในการสร้างแอปพลิเคชันง่ายๆ หรือเกมเล็ก ๆ ของตนเอง เพื่อฝึกการนำเสนอและการทำงานกับโค้ด
- อ่านและศึกษาโค้ดอื่นๆ เพื่อดูวิธีการเขียนและแก้ไขปัญหา
- ฝึกปฏิบัติอย่างต่อเนื่องเพื่อสร้างความเชี่ยวชาญ และลองทำโปรเจคที่ซับซ้อนขึ้นเรื่อยๆ
- เข้าร่วมชุมชนการเรียนรู้เกี่ยวกับการเขียนโปรแกรม เช่น เว็บไซต์ freecodecamp ซึ่งรวบรวมบทเรียนสำหรับการเรียนรู้ภาษาโปรแกรมขั้นพื้นฐาน codenewbie.org ที่เป็นเหมือนเว็บบอร์ดที่รวบรวมคำถาม-คำตอบ ให้มือใหม่ได้เข้าไปตั้งกระทู้ถามคำถามหรือปรึกษาปัญหาติดขัดในการเขียนโค้ด ตลอดจนฟัง Podcasts เรื่องราวหลากหลายแง่มุมของการเขียนโค้ด อุปสรรคต่าง ๆ ที่เจอ และการก้าวข้ามผ่านมันไปให้ได้
ทักษะการเขียนโค้ดอาจดูเป็นเรื่องยาก ซับซ้อน สำหรับใครหลายคน แต่ทักษะดังกล่าว ทุกคนสามารถเรียนรู้และพัฒนาได้ เพื่อให้สำเร็จและมีความก้าวหน้า ทั้งนี้จำเป็นต้องอาศัยความมุ่งมั่นและการฝึกปฏิบัติ ติดตามเทคโนโลยีและแนวคิดใหม่ๆ เรื่อยๆ แลกเปลี่ยนความรู้กับผู้อื่น ทดลองสิ่งใหม่ เรียนรู้จากข้อผิดพลาดและปรับปรุงให้ดีขึ้น
อ้างอิง
โครงการส่งเสริมการเรียนรู้เพื่อพัฒนาทักษะด้านโค้ดดิ้งสู่สังคมดิจิทัลในอนาคต. (2562). หลักสูตรฝึกอบรมเชิง
ปฏิบัติการการส่งเสริมการเรียนรู้เพื่อพัฒนาทักษะด้านโค้ดดิ้งสู่สังคมดิจิทัลในอนาคต ระดับประถมศึกษา https://drive.google.com/file/d/1-oBMScfO38Y162IHre2m-bXqfGBlKaZ3/view
Brown, S., Bell, T., & Peddie, C. (2016). Computational thinking in schools: Research and
practice. New Zealand Council for Educational Research.
Denny, P., & Luxton-Reilly, A. (2019). A systematic review of the use of pair programming in
education. Computer Science Education, 29(4), 288-325.
Hainey, T., Connolly, T. M., Boyle, E. A., Wilson, A., & Razak, A. (2016). A systematic literature
review of games-based learning empirical evidence in primary education. Computers & Education, 102, 202-223.
Le, D., & Blumenfeld, P. C. (2018). Coding boot camps: What do we know and what do we
need to know? TechTrends, 62(4), 377-383.
McDowell, G. (2015). Cracking the Coding Interview: 189 Programming Questions and Solutions.
CareerCup.
Votsis, G. (2018). Introduction to Coding and Information Theory. CRC Press.
US Department of Education. (2016). National Education Technology Plan 2016: Future Ready
Learning: Reimagining the Role of Technology in Education. https://eric.ed.gov/?id=ED571884