จบคณะสายคอมทำไมเขียนโปรแกรมไม่ได้? เพราะมหาลัยไม่ได้สอนเราเขียนโปรแกรมรึเปล่า!

บล็อกนี้เกิดขึ้นเพราะมีประเด็นดราม่า มีคนมาโพสต์ต่อว่าคณะที่เราเรียนจบมา ว่าหลักสูตรล้มเหลวมากๆ อย่าไปเรียน
ในฐานะคนที่จบมาจากคณะนี้ เลยอยากจะให้ข้อมูลไว้หน่อย เหมือนๆ แนะแนวให้รุ่นน้องที่จะกะเข้าเรียนต่อในสายนี้

สิ่งที่เขียนทั้งหมดในบล็อกนี้เป็นความคิดเห็นส่วนตัวและสิ่งที่เราเจอมาเอง + ประสบการณ์สอนน้องๆ มา 10 ปีจากหลายๆ มหาลัยทั้งที่เรียนในไทยและเมืองนอก
คุณมีสิทธิที่จะไม่เห็นด้วย แต่เราก็จะคิดแบบนี้ โอเคนะ (ฮา)

อาชีพ Developer หรือโปรแกรมเมอร์คนเขียนโปรแกรมเนี่ย เป็นหนึ่งในอาชีพที่ตลาดต้องการมากกกก...แต่กลับขาดตลาดตลอดเวลา ทั้งที่มหาลัยที่เปิดคณะคอมพิวเตอร์ไม่ว่าจะเป็นวิศวะคอม วิทยาศาสตร์คอม หรือ ICT ก็มีอยู่เยอะ จำนวนนักศึกษาที่จบมาแต่ละปีก็ไม่ใช่น้อย แต่ทำไมยังขาดคนทำอยู่?

ถ้าเราลองไปดูว่านักศึกษาที่เรียนจบจากคณะสายคอมทั้งหมด จะพบว่าเด็กที่จบมาเนี่ย 50% (หรือเกินกว่านั้นอีก) ไม่ทำงานสายคอมเลย หนักกว่านั้นคือคนที่ยังทำงานสายคอมอยู่เกินครึ่งบอกเวลาสมัครงานหรือตอนเดินหางานตาม Jobs Fair ว่าขอตำแหน่งทำอะไรก็ได้ที่ไม่ต้องเขียนโค้ด!

ตำแหน่งงานสายคอมพิวเตอร์มีเยอะมากนะ แต่คนชอบคิดว่าจบจากคณะนี้ต้องเขียนโปรแกรมเท่านั้น

อะไรทำให้นักศึกษาส่วนใหญ่เกลียดและกลัวการเขียนโค้ดแบบที่เคยเกิดขึ้นแล้วกับวิชาคณิตศาสตร์ ตกลงที่เด็กเขียนโปรแกรมกันไม่ได้นี่เป็นความผิดของเด็กที่ไม่ตั้งใจเรียนเองหรือหัวไม่ถึง หรือมันเป็นเพราะระบบการศึกษาแบบมหาวิทยาลัยโดยอาจารย์มันสอนกันผิดจุดกันแน่นะ?

TL;DR: 
ตามความเห็นของเราคือ ... ผิดทั้งคู่นั่นแหละ 
- นักศึกษาไม่ตั้งใจและไม่พยายามหาความรู้ด้วยตัวเอง รอคนอื่นสอน (เอ๊ะ แต่ฉันเสียเงินมาเรียนไม่ใช่เหรอ?)
- ส่วนด้านอาจารย์บางคนก็สอนไม่เป็น เข้ามาในห้องแล้วอ่านตามสไลด์ (ที่ไม่ได้ทำเองด้วย!) แถมบางคนอยู่ในแวววงวิชาการไม่เคยมีประสบการณ์ทำงานจริง ก็จะแนะนำอะไรนักศึกษาไม่ค่อยได้

ประเด็นแรก ขอเริ่มที่ความผิดพลาดจากตัวนักเรียน/นักศึกษาเอง

การเรียนในมหาลัยเป็นยังไง?

"อาจารย์ไม่สอน!" น่าจะเป็นคำที่ได้ยินบ่อยที่สุดเวลามีน้องมาเรียนพิเศษด้วย ซึ่งสำหรับน้องบางกลุ่มที่มีเวลาเหลือ เราก็จะเล่าว่าทำไมอาจารย์ถึงไม่สอน

การเรียนในมหาวิทยาลัย ไม่ได้เน้น "การสอน" แต่เน้นให้ "ศึกษาเอง" มากกว่า !!

เขาถึงเรียกว่านักศึกษาไม่ใช่นักเรียนไงล่ะ

ในสมัยที่ยังเป็นนักเรียนอยู่ เราจะชินกับการเข้าห้องเรียน แล้วมีครูมาสอนเนื้อหาทุกอย่าง หน้าที่ของเราในขณะนั้นก็แค่ท่องจำและทำความเข้าใจกับบทเรียนให้ได้แค่นั้น

ส่วนหนึ่งก็เป็นความผิดของงานแนะแนวที่ไม่สอนให้เด็กรู้และเตรียมตัวกับการไม่่สอนของอาจารย์เวลาเข้ามหาลัย ดังนั้นถ้าจะเรียนในมหาลัยให้รอดไปได้ คุณจะต้องอ่านหนังสือกันเอง จะมาหวังว่าแค่เข้าเรียนในห้องแล้วจะรู้เรื่องหรือจะสอบได้ไม่ได้อีกแล้ว

แล้วยิ่งถ้าโฟกัสกับคณะด้านคอมพิวเตอร์ หลายๆ คนอาจจะคิดว่าการเรียนในมหาลัยเขาจะสอนการเขียนโปรแกรมทั้งหมด ชนิดที่จบออกมาทำงานได้เลย จะสร้างเว็บหรือแอพพลิเคชันก็ทำได้เลย

แต่ก็ต้องแสดงความเสียใจด้วย! นั่นเพราะการเรียนในมหาลัยคุณจะแทบไม่ได้อะไรพวกนี้เลย

ขอยกตัวอย่างหลักสูตรของคณะเราเองละกัน

สำหรับคณะเรา มีวิชาที่สอนเขียนโค้ดหลักๆ แค่ 3 วิชา คือ...

  • การเขียนโปรแกรมพื้นฐาน (ภาษา C)
  • การเขียนโปรแกรมขั้นสูง (OOP ด้วยภาษา Java)
  • การเขียนเว็บ ตอนนั้นใช้ JavaScript, PHP

แค่นี้จริงๆ! 4 ปีมีวิชาเขียนโปรแกรมแค่ 3 ตัวเท่านั้น

นอกนั้นเป็นวิชาอื่นๆ เช่น Data Structure, Database, Network หรือพวกวิชาทฤษฎี แล้วพอมหาลัยจัดสอนแค่นี้ ซึ่งเอาตรงๆ เลยคือมันไม่พอแม้แต่นิดเดียวที่จะทำให้คนเรียนเขียนโปแกรมเป็น สำหรับเด็กที่คิดว่าแค่ตั้งใจเรียนในห้องก็พอแล้ว ก็จะค่อยๆ หลุด เริ่มพบว่าความรู้ที่เรียนในห้องเอามาเขียนโปรแกรมอะไรก็ไม่ได้ กว่าจะรู้ตัวว่าตัวเองพื้นฐานไม่แน่นก็แก้ไม่ทันแล้ว พาลทำให้เกิดความรู้สึกไม่ชอบการเขียนโปรแกรมไปด้วย

วิชาการเขียนโปรแกรมพื้นฐานนะ ไม่ใช่วิชาภาษา C!!

ขอเสริมนิดนึงเรื่องภาษาโปรแกรม หลายๆ คณะจะมีน้องๆ ที่บ่นประมาณว่าพอขึ้นปีสูงๆ มีวิชาที่ต้องใช้ภาษาที่ไม่เคยเรียนมาก่อน แถมไม่สอนด้วย เช่นปี1สอนภาษา C แต่ปี2ดันมีการบ้านที่ต้องใช้ Python แล้วก็บอกว่าอาจารย์ไม่สอน Python เลยแล้วก็มาสั่งงานนั่นโน่นนี่ เรื่องนี้ขออธิบายว่า

ตัววิชาการเขียนโปรแกรมพื้นฐาน เน้นหลักการ หรือแนวคิดการเขียนโปรแกรมตั้งหาก ไม่ได้เน้นสอนที่ตัวภาษา เช่น C หรือ Python เมื่อผ่านวิชานี้ไปแล้ว สิ่งที่คาดหวังคิด คุณจะต้องเอาหลักการของวิชานี้ไปแอพพลายกับภาษาอื่นๆ ทั้งหมดได้

ก็คือวิชาเขียนโปรแกรมจริงๆ มันไม่ใช่วิชาสอนการเขียนโปรแกรม มันคือวิชาสอนการคิดแบบ Logical Thinking และการคิด Problem Solving ตั้งหาก ซึ่งเรื่องนี้ควรจะย้ำให้เด็กเข้าใจมากๆ เลยนะ!

อ่ะ ทฤษฎีว่ามาซะสวยเลย แต่ชีวิตจริงล่ะ เป็นยังไง?

ไม่ใช่ว่าทุกคนจะเขียนโปรแกรมได้!

ต่อจากหัวข้อข้างบน พออาจารย์ไม่สอนแล้วเราจะทำยังไงให้เขียนโปรแกรมเป็นล่ะ?

ก็คือเราจะต้องหาข้อมูล/อ่านหนังสือ/ไปลงเรียนคอร์สสอนเขียนโปรแกรมเอาเองยังไงล่ะ ถึงจุดๆ นี้จะมีคนสองกลุ่ม คือ

  1. กลุ่มที่ชอบการเขียนโปรแกรม มองว่าการเขียนโปรแกรมเป็นศาสตร์ที่สนุก มีอะไรให้ศึกษาตลอดเวลา
  2. กลุ่มที่ไม่ได้ชอบการเขียนโปรแกรม ไม่ใช่ว่าทุกคนจะชอบการเขียนโปรแกรม เช่นเดียวกับวิชาเลขนั่นแหละ ที่หาคนเกลียดได้ง่ายกว่าคนชอบเยอะ

กลุ่มแรกส่วนใหญ่ ไม่ค่อยมีปัญหา ถ้าคนมีพรสวรรค์และเซ้นซ์ด้านโลจิคดีๆ ก็จะศึกษาและเข้าใจได้เร็วนะ แต่ถึงไม่มีพรสวรรค์ แต่ก็ยังใช้ความพยายามเข้าช่วยได้ แม้จะไม่ถึงกับเก่งได้เท่ากลุ่มมีสวรรค์ก็ตาม

ความเห็นส่วนตัวคือความพยายามเป็นเหมือนการบวก ยังไงก็สู้พรสวรรค์ที่เป็นเหมือนการคูณไม่ได้ ทว่าถ้าไม่มีพรสวรรค์แต่มีความพยายามก็ดีกว่าคนไม่ทำอะไรเลย

สรุปคือการเขียนโปรแกรมเป็นเหมือนกับการเล่นเกมพัซเซิล ต้องค่อยๆ แก้ปริศนาไปเรื่อยๆ จนเจอคำตอบ แต่แนวคิดของคนส่วนใหญ่คือชอบทำอะไรที่ง่ายๆ ไม่ซับซ้อน ไม่ต้องคิดอะไรมาก ทำให้ไม่ถูกโรคกับการเขียนโปรแกรมนั่นแหละนะ

ดังนั้น ถ้าคุณคนอ่านกำลังเรียนมหาลัยอยู่ แล้วพบว่าการเรียนในห้องไม่ช่วยอะไร ขอแนะนำให้ศึกษาเอง จะอ่านหนังสือหรือวีดีโอตาม youtube หรือจะไปลงเรียนตามคอร์สเขียนโปรแกรมก็จัดไป

แต่ เอ๊ะ ... ฉันเสียเงินมาเรียนแล้ว ยังต้องมาเสียเงินเรียนพิเศษเองเพิ่มอีกเหรอ? คณะหรืออาจารย์จะไม่สอนอะไรหน่อยเหรอ?

อ่านเซคชันต่อไปเลยครับ...


เรื่องต่อไป เราจะมามองในมุมของคณะและอาจารย์กันบ้างละนะ

อาจารย์สอนไม่เป็น

เขาว่ากันว่า ... คนที่สอนเราได้ดีที่สุดในมหาลัยคือรุ่นพี่ที่เพิ่งเรียนวิชานั้นผ่านไป หรือเพื่อนที่เก่งๆ ก็ได้ ส่วนอาจารย์อยู่ในลำดับสุดท้าย (ฮา)

อาจารย์มหาลัยส่วนใหญ่ เป็นนักทำวิจัย เขาเก่งและมีความรู้เยอะมากในเรื่องที่เขาทำวิจัยอยู่ แต่ปัญหาคือคนพวกนี้มักไม่ค่อยมีสกิลในการถ่ายทอดความรู้พวกนี้สู่คนอื่นเลย

แต่ที่เจ็บสุดๆ น่าจะเป็นเคสที่เด็กเรียนไม่รู้เรื่อง ก็เข้าไปถามอาจารย์ อาจารย์ก็บอกว่าให้ลองกลับไปอ่านสไลด์หรือ Text Book ดู หรือกลับไปคิดมาก่อนยังไม่เฉลยตอนนี้ คือเด็กอ่ะทั้งอ่านทั้งคิดจนมันไปต่อไม่ได้แล้วเลยมาถามนี่ไง แต่ดันเจอตอบมาแบบนี้ คือไม่ได้ความช่วยเหลืออะไรเลย จนงงว่าที่อาจารย์ไม่ตอบซะทีนี่คืออาจารย์รู้คำตอบจริงๆ หรือไม่รู้กันแน่

เอาเป็นว่าถ้ามองว่าเราจ่ายค่าเทอมเพื่อจ้างอาจารย์มาสอน แต่ผลออกมาได้แค่คนที่มานั่งอ่านสไลด์ให้ฟัง อันนี้รู้สึกไม่คุ้มค่าเทอมมากๆ

Note: ในเคสของเรา วิชาการเขียนโปรแกรมตัวแรก เราถือว่าโชคดี เพราะเจออาจารย์สอนเป็น อาจารย์ที่ไม่เคยใช้สไลด์สอน เขียนกระดานและอธิบายเองทุกคาบ ทำให้ได้พื้นฐานที่ดีมา (ขอขอบคุณอาจารย์ไว้ตรงนี้ด้วย) แต่วิชาหลังจากนั้นส่วนใหญ่ จะเจอแต่อาจารย์ที่มาเปิดสไลด์แล้วอ่านตาม

หลักสูตรจับฉ่าย ไม่เจาะลึกซักอย่าง

ตั้งแต่ตอนเรียนจนถึงตอนนี้ เรื่องนี้น่าจะเป็นสิ่งที่คณะเราโดนคอมเมนท์มากที่สุดล่ะ (ฮา) ด้วยตัวเนื้อหาที่ไม่ได้เจาะลึกอะไรซักอย่าง จะเขียนโค้ดหรือalgorithmก็ไปไม่สุดเท่าวิทยาศาสตร์คอม จะลงhardwareก็ไม่ลึกเท่าวิศวะคอม ด้านbusinessก็เรียนแค่ผิวๆ แต่ที่สำคัญที่สุดคือแทบจะไม่มีเรื่องไหนที่เอาไปใช้เวลาทำงานจริงได้เลย (เรื่องนี้ค่อนข้างจริงนะ หึหึ)

แต่ข้อนี้อาจจะเป็นข้อดีสำหรับคนที่อยากเรียนรู้หลายๆ เรื่อง เพราะได้ภาพมุมกว้างกว่า (อย่างที่บอกไง ว่าอาจารย์ก็ไม่ค่อยสอนอยู่แล้ว เรียนรู้ภาพกว้างๆ แล้วไปศึกษาต่อด้วยตัวเองในหัวข้อที่น่าสนใจดีกว่า)

สิ่งที่เรียกว่างานวิจัย

พอจบมาแล้วได้ทำงานพร้อมๆ กับมีสอนน้องๆ ไปด้วย เลยพอจะเข้าใจสิ่งที่เรียกว่า Academic vs Industry หรือช่องว่างระหว่างภาควิชาการและภาคอุตสาหกรรม

เริ่มจากความคิดแบบเก่าที่คิดว่า การจะมีความรู้ทำงานได้นั้น จะต้องเรียนในมหาลัย แต่โลกทุกวันนี้เปลี่ยนเร็วมาก สิ่งที่เราต้องใช้ในการทำงานนั้น มหาลัยสอนไม่ได้อีกต่อไป (สายอื่นไม่รู้ แต่สายคอมนี่น่าจะเห็นชัด)

ตำแหน่งที่ตลาดต้องการสุดๆ เช่น Developer (ทั้งสาย Web และ Mobile) แต่มหาลัยไม่สามารถสร้างให้เด็กเข้าใจหรือเขียนโค้ดสายนั้นเป็น หรือเอาจริงๆ อาจารย์บางคนยังไม่แม่นโค้ดเรื่องที่ตัวเองสอนอยู่เลย บางครั้งเจอเด็กที่เขียนโค้ดเก่งกว่า หรือใช้ Library หรือ Framework ที่ทันสมัยกว่าซะอีก

นั่นแหละมุมมองของทางมหาลัยส่วนใหญ่จะเน้นที่งานวิจัยมากกว่าการแอพพลายเข้ากับสิ่งที่ภาคธุรกิจต้องการ เช่น Data Structure ที่เป็นวิชาปราบเซียน คือเรียนยากมาก ต้องเขียนโค้ดเองทั้งหมดทั้งที่ในชีวิตจริง เราเรียกใช้ผ่าน Library หรือ API ของตัวภาษาตลาด จริงที่ถ้าเรารู้ว่ามันทำงานข้างในยังไง เราจะได้เรียกใช้ได้ถูกตามสถานการณ์ แต่ถ้าเป็นอย่างนั้นก็สอนด้วยสิ ว่า use case แบบไหนควรจะแก้ปัญหาด้วยอะไร (หรืออาจารย์ก็ไม่รู้เหมือนกัน เพราะเอาแต่อ่านตามสไลด์)

สรุปคือคณะชอบสอนสิ่งที่เจาะลึกในเชิงวิชาการ แต่ดันไม่เข้าใจว่าสิ่งที่เด็กและภาคธุรกิจอยากได้ ไม่ใช่เด็กที่รู้วิธีสร้าง Data Structure หรือ เขียน Algorithm เทพๆ ได้ด้วยตัวเอง

แต่เป็นเด็กที่รู้ว่าจังหวะไหนควรเรียกใช้ Data Structure ตัวไหน หรือปัญหานี้เราควรแก้ด้วย Algorithm ตัวนั้น แล้วก็ไปหาโค้ดสำหรับรูปหรือ Library ที่เหมาะสมมาใช้งานได้โดยไม่ต้องเขียนเอง

ในชีวิตจริง การลดการเขียนโค้ดด้วยตัวเองทำหมด เป็นอะไรที่ดีมาก เพราะประหยัดทั้งเวลา และลดโอกาสการเกิดบั๊ก เพราะพวกโค้ดที่อยู่บนอินเตอร์เน็ตส่วนใหญ่มีคนช่วยเทสเยอะแล้วว่ามันโอเค ใช้งานได้เลย (แต่คุณต้องมีความรู้พอที่จะเลือกให้เป็นนะ)

ไม่สอนสิ่งที่จะเจอเวลาทำงาน

ตอนนี้ภาคธุรกิจกำลังฮิต Node.js, Golang, React, Vue, Flutter ทำไมมหาลัยไม่เห็นสอนอะไรเลยล่ะ

เพราะมหาลัยมองว่าความรู้พวกนี้เป็นสาย Apply ไม่ใช่ Core หลักขององค์ความรู้

หมายถึงว่าถ้าฉันสอนการเขียนโปรแกรมพื้นฐาน พวกแกก็ควรเอาความรู้ตรงนี้ไปแอพพลายต่อกับภาษาใหม่ๆ พวกนั้นได้เองนะ

ถ้ามองในมุมนี้ก็ถูกแหละ! เพราะภาษาหรือ Library พวกนี้ อีกไม่กี่ปีก็อาจจะตายไป แล้วมี Library ตัวใหม่มาแทนที่ ยกตัวอย่างเช่น jQuery ที่ 10 ปีที่แล้วฮิตมาก ตอนนี้โดนแทนที่ด้วย React, Vue หรือ Angular ไปซะแล้ว

แต่ถ้ามหาลัยคิดแบบนั้น คุณก็ต้องยอมรับนะ ว่าเด็กที่จบจากคณะคุณ จะไม่พร้อมทำงานเลยแม้แต่นิดเดียว ภาคธุรกิจก็จะต่อว่าว่ามหาลัยมัวแต่ทำอะไรอยู่ คุณผลิตเด็กที่ไม่มีสกิลอะไรที่ฉันต้องการเลย เด็กก็จะต่อว่าคณะว่าฉันเสียเงินจ้างให้แกสอนตั้งมากมาย แต่จบมาดันไม่ได้อะไรเลยนอกจากใบปริญญา เอาไปสมัครงานได้ แต่ดันไม่มีความรู้พอจะทำงานเอาซะเลย

สรุป

  • หลักสูตรของมหาลัยส่วนใหญ่สอนหลักการมากกว่าสอนให้แอพพลายเข้ากับภาคธุรกิจตรงๆ
  • วิชาการเขียนโปรแกรมน้อยไป และอาจารย์ก็สอนไม่ดี กลายเป็นว่าแทนที่จะผลิต Developer ออกมาเยอะๆ แต่ดันไปสร้างเด็กที่เกลียดการเขียนโปรแกรมไปซะงั้น
  • เนื้อหาที่มหาลัยสอนมักจะไม่ค่อยอัพเดท ตามโลกธุรกิจไม่ทัน
  • ถ้าอยากทำงานภาคธุรกิจ เรียนมหาลัยอาจจะไม่คุ้มเงินลงทุนเท่าไหร่ แต่ต้องมีใบปริญญา ไม่งั้นจะสมัครงานยากหรือไม่ได้เลย (แต่ถ้าอยากเป็นอาจารย์หรือนักวิจัยก็อีกเรื่องนึง)
  • ไม่ว่าคุณจะเรียนคณะที่ไหนก็ตาม หากยังอยากตามโลกทัน คุณต้องอย่าหยุดศึกษาหาความรู้ด้วยตัวเอง
1866 Total Views 3 Views Today
Ta

Ta

สิ่งมีชีวิตตัวอ้วนๆ กลมๆ เคลื่อนที่ไปไหนโดยการกลิ้ง .. ถนัดการดำรงชีวิตโดยไม่โดนแสงแดด
ปัจจุบันเป็น Senior Software Engineer อยู่ที่ Centrillion Technology
งานอดิเรกคือ เขียนโปรแกรม อ่านหนังสือ เขียนบทความ วาดรูป และ เล่นแบดมินตัน

You may also like...