Hard Skills ที่จำเป็นในอนาคต : ทักษะการเขียนโค้ด (Coding Skills)

รองศาสตราจารย์ ดร.วิศปัตย์ ชัยช่วย ผู้ช่วยคณดีฝ่ายบัณฑิตศึกษาอนาคต บัณฑิตวิทยาลัย มหาวิทยาลัยขอนแก่น

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) 

  1. การเรียนรู้ในรูปแบบใหม่ ช่วยพัฒนาทักษะคิดเชิงตรรกะและการแก้ไขปัญหา ผู้ที่มีทักษะการเขียนโค้ด   มักมีกระบวนการคิดที่เน้นการแยกแยะปัญหาและหาทางแก้ไขได้อย่างมีเหตุผล
  2. พัฒนาทักษะเชิงตัวเลข การทำงานกับโค้ดคอมพิวเตอร์ มักเกี่ยวข้องกับการทำงานกับข้อมูลที่มีลักษณะเชิงตัวเลข ทำให้ผู้เรียนสามารถพัฒนาทักษะในการวิเคราะห์และจัดการกับข้อมูลต่าง ๆ ได้เป็นอย่างดี
  3. การทำงานและการแก้ไขปัญหาที่ซับซ้อน การตีความปัญหาให้เป็นภาษาโค้ดช่วยให้เห็นภาพรวมของปัญหาและเส้นทางในการแก้ไขได้ชัดเจน
  4. เรียนรู้และปฏิสัมพันธ์กับเทคโนโลยีใหม่  ในสภาวะที่เทคโนโลยีเปลี่ยนแปลงอย่างรวดเร็ว  ทักษะการเขียนโค้ดช่วยให้เข้าใจและปรับตัวตามเทคโนโลยีใหม่ๆ ได้อย่างรวดเร็ว
  5. พัฒนาศักยภาพในการงาน ช่วยเตรียมความพร้อมให้กับงานในอนาคตที่ต้องการทักษะเชิงดิจิทัลและการทำงานกับเทคโนโลยี รวมถึงสร้างโอกาสในการทำงานในสาขางานที่เกี่ยวข้องกับไอทีและการพัฒนาซอฟต์แวร์
  6. สร้างผลงานและนวัตกรรม  ทั้งในด้านซอฟต์แวร์ แอปพลิเคชัน และเทคโนโลยีต่าง ๆ
  7. เข้าถึงอาชีพใหม่ที่เกี่ยวข้องกับเทคโนโลยีและการพัฒนาซอฟต์แวร์ เช่น ผู้พัฒนาเว็บไซต์ นักพัฒนาแอปพลิเคชัน นักวิเคราะห์ข้อมูล และอื่น ๆ

การเขียนโค้ด กำลังเป็นสิ่งที่หลายประเทศให้ความสำคัญและส่งเสริมให้เกิดกับพลเมือง เช่น ในประเทศสิงคโปร์ ตั้งงบประมาณและเป้าหมายให้เด็กทุกคนได้เรียนเขียนโค้ด ขณะที่สหรัฐอเมริกา ริเริ่มโครงการ 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) 

  1. ความเข้าใจในภาษาโปรแกรมคอมพิวเตอร์ (Programming Languages) เช่น Python, Java, JavaScript รวมถึงการใช้ไวยากรณ์และโครงสร้างของภาษา
  2. ความสามารถในการวางแผนและออกแบบโครงสร้างของโปรแกรม (Designing Structures) ทำให้โค้ดเป็นระเบียบและมีประสิทธิภาพ
  3. การใช้ระบบเวอร์ชั่นคอนโทรล (Version Control System) เช่น Git เพื่อบริหารจัดการโค้ดและการทำงานร่วมกับทีม
  4. ความสามารถในการอ่านและเขียนโค้ด (Reading and Writing Code) ที่ถูกต้องและมีประสิทธิภาพ เพื่อให้ความหมายและไวยากรณ์ของโค้ดเป็นไปตามมาตรฐาน
  5. ความสามารถในการตรวจหาและแก้ไขข้อผิดพลาดในโค้ด (Debugging) เพื่อให้โปรแกรมทำงานได้ตามที่ต้องการ
  6. ความสามารถในการคิดเชิงตรรกะและคณิตศาสตร์ (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

Leave a Comment