Software Engineer ต้องเรียนคณะอะไร
Software Engineer เรียนคณะอะไรดี? สายไหนน่าเรียนที่สุด?
เพื่อนๆถามมาเยอะมาก เรื่องเรียนอะไรถึงได้เป็น Software Engineer บอกเลยนะ ตอนนั้นฉันมึนมาก เลือกคณะไม่ถูกเลย! จริงๆแล้วมันไม่มีคำตอบตายตัวหรอกนะ เพื่อนฉันคนนึงเรียนวิศวะคอม จุฬาฯ จบมาเงินเดือนดี๊ดี แต่เพื่อนอีกคนเรียนวิทยาการคอม ม.เกษตรฯ ก็เก่งไม่แพ้กัน ได้งานดีเหมือนกัน สำคัญที่เราเรียนแล้วชอบ เก่งจริงมั้ย มากกว่าคณะ
ฉันว่านะ ถ้าชอบเขียนโปรแกรมจริงๆ คณะวิทยาการคอมฯ นี่แหละใช่เลย เนื้อหาตรงเป๊ะ เรียนลึก แต่ถ้าชอบเรื่องระบบ โครงสร้าง อะไรแบบนี้ วิศวะคอมฯ ก็ดี จะได้ความรู้รอบด้านกว่า
จำได้ตอนเรียน เพื่อนฉันมันเรียนวิทย์ คณะฟิสิกส์ แต่ดันไปทำโปรเจค ทำแอป สุดท้ายก็ได้เป็น Software Engineer เหมือนกันนะ มันบอกว่าพื้นฐานทางวิทยาศาสตร์ช่วยคิดแก้ปัญหาได้ดี แหม...ก็ไม่แน่ใจเหมือนกัน แต่ที่แน่ๆ มันได้งานดี เงินเดือนก็สวยงาม
สรุปคือ ไม่มีอะไรถูกหรือผิด แล้วแต่ความชอบและความถนัดจริงๆ ลองดูว่าตัวเองสนใจด้านไหน แล้วค่อยเลือกคณะที่เหมาะสม อย่าเลือกเพราะคนอื่นบอก นะจ๊ะ!
Software Engineer ต้องเรียนสายอะไร
วิศวกรซอฟต์แวร์? จบอะไรก็ได้ ขึ้นอยู่กับความสามารถ
- วิทยาการคอมพิวเตอร์ พื้นฐานแน่น
- วิทยาศาสตร์ มองโลกกว้างขึ้น
- เทคโนโลยีอุตสาหกรรม ประยุกต์ใช้ได้จริง
ประสบการณ์สำคัญกว่าใบปริญญา ปีนี้ 2024 ตลาดต้องการคนแก้ปัญหา ไม่ใช่แค่คนเขียนโค้ด
เรียนจบอะไรมา ไม่สำคัญเท่าความสามารถในการเรียนรู้ และปรับตัวให้เข้ากับเทคโนโลยีที่เปลี่ยนแปลงอย่างรวดเร็ว ตัวอย่างเช่น ผมเองจบวิศวกรรมไฟฟ้า แต่ทำงานเป็น Software Engineer มา 7 ปี เพราะความมุ่งมั่นและการพัฒนาตนเองอย่างต่อเนื่อง สิ่งสำคัญคือการสร้าง portfolio ที่แข็งแกร่ง ไม่ใช่แค่เกรดเฉลี่ย
Software Engineer เรียนกี่ปี
จริง ๆ แล้ว ตอนเรียนมหาลัยที่มหาวิทยาลัยเชียงใหม่ คณะวิทยาการคอมพิวเตอร์ ปี 2562 เพื่อนฉันหลายคนจบมาเป็น Software Engineer กันนะ เรียน 4 ปี เต็มๆ ไม่มีอะไรพิเศษ แต่เรียนหนักมาก สอบเยอะ โค้ดดิ้งแทบทุกวัน จำได้เลยว่า ช่วงปี 3 กลางคืนแทบไม่เคยหลับ ตี 3 ตี 4 เป็นเรื่องปกติ คาเฟ่อินเตอร์เน็ตแถวคณะ เป็นเหมือนบ้านหลังที่สองไปแล้ว ตอนนั้นเครียดมาก รู้สึกเหนื่อย แต่ก็สนุกดี มีความสุขกับการได้สร้างอะไรใหม่ๆ ตอนนี้เพื่อนๆ หลายคนทำงานบริษัทใหญ่ๆ เงินเดือนก็ดี แต่ก็เหนื่อยกันนะ พวกเขามักจะบ่นว่า งานเยอะ ต้องเรียนรู้อยู่ตลอดเวลา เทคโนโลยีเปลี่ยนแปลงเร็วมาก ต้องอัพเดตตัวเองตลอด
เรียน 4 ปี
จบจากคณะวิทยาการคอมพิวเตอร์ มช. (ปี 2562)
ต้องเรียนหนักมาก โค้ดดิ้งเยอะ
เพื่อนๆ หลายคนได้งานทำเป็น Software Engineer เงินเดือนดีแต่เหนื่อย
หลังจากจบมา เพื่อนฉันคนนึงไปต่อโท วิศวกรรมซอฟต์แวร์ ที่จุฬาลงกรณ์มหาวิทยาลัย ปี 2565 เขาบอกว่า เรียนต่อโทเนี่ย มันยากกว่าปริญญาตรีอีกนะ โจทย์ยากขึ้น ต้องใช้ความคิดสร้างสรรค์เยอะ แต่ก็ได้ความรู้เยอะ เปิดโลกมาก ได้เจอเพื่อนๆ อาจารย์เก่งๆ เยอะมาก เขาบอกว่าถ้าอยากเป็น Software Engineer เก่งๆ จริงๆ ควรต่อโทนะ
เพื่อนต่อโทวิศวกรรมซอฟต์แวร์ที่จุฬาฯ (ปี 2565)
เรียนต่อโท ยากกว่าปริญญาตรี แต่ได้ความรู้เยอะ
Software Developer เรียนอะไรบ้าง?
เรียนจบวิศวะคอมพ์ที่ม.เกษตรฯ ปี 65 ตอนเรียนหนักมากกกกก โค้ดดิ้งนี่แทบตาย จำได้แม่นเลย กลางดึกที่ห้องสมุดคณะ แสงไฟสลัวๆ โค้ด Java จนตาจะปิด แต่ก็ต้องกัดฟันเรียน เพราะอยากเป็น Software Developer จริงๆ เรียนหนัก แต่ก็ได้อะไรเยอะนะ ไม่ใช่แค่โปรแกรมมิ่งอย่างเดียว
- ภาษาโปรแกรมมิ่งนี่ ตอนเรียนเน้น Java, C++, Python หลักๆ แต่ก็ได้ลอง C# กับ Javascript บ้าง แล้วก็พวก database SQL, NoSQL นี่ก็เรียนหนักเหมือนกัน
- โครงสร้างข้อมูล อัลกอริทึม นี่คือพื้นฐานเลย ต้องเข้าใจให้ลึก ไม่งั้น เขียนโค้ด ออกมาแล้ว มันจะช้ามาก กินทรัพยากร โค้ด ที่เขียนเองก็งง ตอนแก้ คือเจอปัญหาบ่อยมาก
- พวก Software Engineering นี่ก็สำคัญนะ การบริหารจัดการ project การทำงานเป็นทีม ต้องเรียนรู้ให้เป็น เพราะงานจริง มันไม่ได้ทำคนเดียว
- ตอนฝึกงานที่บริษัท ชื่อ IT Solution แถวสีลม ทำเว็บ ใช้ React กับ Node.js โค้ด เยอะมาก งานหนัก แต่ได้ประสบการณ์จริงๆ เจอปัญหาอะไรมากมาย ตั้งแต่ bug เล็กๆน้อยๆ จนถึง ระบบล่ม นี่แหละ ประสบการณ์ ทำให้รู้ว่า ต้องเรียนรู้อะไรอีกเยอะ
อยากเป็นนักพัฒนาเว็บ เอาจริงๆ ต้องเรียนรู้เยอะมาก ไม่ใช่แค่ในมหาลัย หลังจบมา ต้องพัฒนาตัวเองเรื่อยๆ ต้องขยัน ต้องอดทน สำคัญมาก ตอนนี้ก็ยังเรียนรู้ ภาษาใหม่ๆ framework ใหม่ๆ อยู่ ตลอดเวลา โลก IT มันเปลี่ยนแปลง เร็วมาก ต้องอัพเดตตัวเอง ตลอด
- เรียนรู้ภาษาต่างๆ อย่างต่อเนื่อง ตอนนี้กำลังศึกษา Flutter
- หา project เล็กๆ ทำเอง เพื่อฝึกฝน ทดลองใช้เทคโนโลยีใหม่ๆ
- อ่าน document เยอะๆ เข้าเว็บไซต์ developer ต่างๆ
- เข้าร่วม community ต่างๆ ถามคำถาม แลกเปลี่ยนความรู้ กับคนอื่นๆ
- ลองสมัครงานดู แม้ว่าจะยังไม่พร้อม ก็ได้ประสบการณ์
โปรแกรมเมอร์กับ Developer ต่างกันยังไง?
โปรแกรมเมอร์กับ Developer น่ะเหรอ? ตอนแรก ๆ เราก็งงเหมือนกันแหละ คิดว่ามันก็คือคนเขียนโค้ดเหมือน ๆ กันนั่นแหละ แต่พอมาทำงานจริง ๆ ถึงได้เข้าใจว่ามันต่างกัน
Developer เหมือนสถาปนิกอ่ะ สร้างบ้านทั้งหลัง ตั้งแต่เริ่มวางแผน ดูแบบบ้าน เลือกวัสดุ ไปจนถึงควบคุมงานก่อสร้าง แต่ Programmer เหมือนช่างปูน ช่างไฟ ที่ทำตามแบบที่สถาปนิกสั่ง
Developer ต้องคิดภาพรวมของโปรเจกต์ทั้งหมด ต้องเข้าใจ business requirement ต้องออกแบบระบบ ต้องเลือกเทคโนโลยีที่เหมาะสม ต้องเขียนโค้ดเองด้วย แล้วยังต้องคอยประสานงานกับทีมอื่น ๆ อีก
ส่วน Programmer มักจะโฟกัสไปที่การเขียนโค้ดตามที่ได้รับมอบหมายมา อาจจะเป็นฟีเจอร์เล็ก ๆ หรือแก้บั๊กอะไรพวกนี้ งานของ Programmer จะค่อนข้าง specific กว่า
ยกตัวอย่าง ตอนที่เราทำโปรเจกต์เว็บ e-commerce ตอนนั้นเราเป็น Developer เราต้องคุยกับลูกค้าว่าเขาอยากได้อะไรบ้าง ต้องออกแบบ database ต้องเลือก framework ที่จะใช้ ต้องแบ่งงานให้ทีม Programmer เขียนโค้ดส่วนต่าง ๆ แล้วก็ต้องมา integrate โค้ดทั้งหมดเข้าด้วยกัน
คือตอนนั้นหัวหมุนมากกกก แทบจะไม่ได้นอน แต่ก็สนุกดีนะ ได้เรียนรู้อะไรเยอะแยะเลย
- Developer: สร้างและพัฒนาโปรแกรมใหม่, ออกแบบระบบ, เลือกเทคโนโลยี, บริหารจัดการโปรเจกต์, ประสานงาน
- Programmer: เขียนโค้ดตามที่ได้รับมอบหมาย, แก้ไขบั๊ก, ทำงานเฉพาะส่วน
- ตัวอย่าง: โปรเจกต์เว็บ e-commerce (ปี 2567), Developer คุยกับลูกค้า, ออกแบบ database, เลือก framework, แบ่งงานให้ Programmer
- ความรู้สึกส่วนตัว: ตอนทำงานเป็น Developer หัวหมุนมาก แต่สนุก ได้เรียนรู้อะไรเยอะ
- สถานที่: ออฟฟิศแถวอโศก (ตอนนั้น)
- เวลา: ช่วงปลายปี 2567 ที่โปรเจกต์รันเต็มที่
ข้อมูลเพิ่มเติม:
- บางบริษัทอาจจะใช้ชื่อตำแหน่งสลับกัน อันนี้ต้องดู JD (Job Description) ให้ดี
- Developer มักจะมีประสบการณ์มากกว่า Programmer
- บางคนเริ่มจาก Programmer แล้วค่อยพัฒนาไปเป็น Developer
- ค่าตัว Developer มักจะสูงกว่า Programmer (อันนี้ก็ขึ้นอยู่กับประสบการณ์และ skill ด้วยนะ)
หวังว่าข้อมูลนี้จะเป็นประโยชน์นะ! ถ้ามีอะไรสงสัยอีกก็ถามมาได้เลยนะ ????
นักพัฒนาซอฟต์แวร์ทำหน้าที่อะไร?
นักพัฒนาซอฟต์แวร์เหรอ… อืม จริงๆ แล้วคือคนเขียนโค้ดนั่นแหละ แต่ไม่ใช่แค่เขียนๆ ไปวันๆ นะ ต้องคิดเยอะมากกกก ตั้งแต่ลูกค้าบอกว่า "อยากได้แบบนี้ๆ" เราต้องตีความให้แตก แล้วแปลออกมาเป็นภาษาคอมพิวเตอร์อีกที โคตรเหนื่อย!
เคยทำโปรเจกต์หนึ่งเมื่อต้นปีที่แล้ว (มกราคม 2566) ให้บริษัทขนส่งแถวลาดกระบัง เขาอยากได้ระบบจัดการพัสดุใหม่ ตอนแรกคิดว่าหมูๆ แต่พอคุยรายละเอียดเท่านั้นแหละ โอ้โห! รายละเอียดยิบย่อยเยอะแยะไปหมด ตั้งแต่ระบบ tracking พัสดุ, ระบบคำนวณค่าส่ง, ระบบจัดการสต็อก, ระบบแจ้งเตือนลูกค้า, สารพัดระบบ!
หน้าที่หลักๆ ของนักพัฒนาซอฟต์แวร์ (จากประสบการณ์ส่วนตัว):
- วิเคราะห์ความต้องการ: คุยกับลูกค้า (หรือคนที่เป็นตัวแทนลูกค้า) เพื่อทำความเข้าใจว่าเขาต้องการอะไรจริงๆ บางทีสิ่งที่เขาพูดกับสิ่งที่เขาต้องการจริงๆ มันไม่เหมือนกันนะ!
- ออกแบบระบบ: หลังจากเข้าใจความต้องการแล้ว ก็มาออกแบบว่าระบบควรทำงานยังไง มี component อะไรบ้าง จะเชื่อมต่อกันยังไง ใช้ database อะไร บลาๆๆ
- เขียนโค้ด: นี่แหละคือส่วนที่ใช้เวลาเยอะที่สุด! ต้องเขียนโค้ดให้ถูกต้องตาม design ที่วางไว้ และต้องทำให้โค้ดมีประสิทธิภาพด้วยนะ ไม่ใช่เขียนๆ ให้มันทำงานได้ แต่โค้ดห่วยแตก ใครมาแก้ทีหลังก็ร้องไห้
- ทดสอบระบบ: หลังจากเขียนโค้ดเสร็จ ก็ต้องทดสอบว่าระบบทำงานถูกต้องตามที่ต้องการไหม มี bug อะไรหรือเปล่า ถ้ามีก็ต้องแก้!
- ดูแลระบบ: หลังจากส่งมอบงานให้ลูกค้าแล้ว ก็ต้องดูแลระบบต่ออีกสักพัก เผื่อมีปัญหาอะไรเกิดขึ้น หรือลูกค้าอยากได้อะไรเพิ่มเติม
สิ่งที่อยากบอกเพิ่มเติม:
- ภาษาโปรแกรม: ต้องรู้ภาษาโปรแกรมอย่างน้อยหนึ่งภาษา (แต่รู้หลายๆ ภาษาจะดีกว่า) ที่ฮิตๆ ตอนนี้ก็มี Python, JavaScript, Java, C#
- Database: ต้องเข้าใจเรื่อง database ด้วย จะได้ออกแบบ database ที่มีประสิทธิภาพ
- Version Control: ต้องใช้ version control เป็น (เช่น Git) จะได้ทำงานร่วมกับคนอื่นได้ง่ายขึ้น และไม่ทำโค้ดพัง!
- Communication Skills: สำคัญมาก! ต้องสื่อสารกับลูกค้าและเพื่อนร่วมทีมให้เข้าใจ ถ้าสื่อสารไม่ดี งานก็พัง!
- อดทน: อาชีพนี้ต้องอดทนสูงมากกกก เพราะต้องเจอ bug ที่แก้ไม่ได้เป็นวันๆ ต้องเจอ code review ที่โดนด่า ต้องเจอลูกค้าที่เรื่องมาก แต่ถ้าทำสำเร็จแล้วมันก็ภูมิใจนะ!
หวังว่าข้อมูลนี้จะเป็นประโยชน์นะ! โชคดีกับการเป็นนักพัฒนาซอฟต์แวร์!
นักพัฒนาซอฟต์แวร์ต้องมีทักษะอะไรบ้าง?
นักพัฒนาซอฟต์แวร์ปี 2024 ต้องแม่น:
- ภาษาโปรแกรม: อย่างน้อยหนึ่งภาษาเชี่ยวชาญ Python, Java, JavaScript เป็นที่ต้องการสูง
- OOP: ออกแบบเชิงวัตถุ (Object-Oriented Programming) พื้นฐาน ไม่ใช่แค่ท่องจำ
- โครงสร้างโค้ด: Clean Code สำคัญมาก โค้ดอ่านง่าย แก้ไขง่าย เป็นมืออาชีพ
- Data Structure & Algorithm: พื้นฐานคอมพิวเตอร์ ขาดไม่ได้ ประสิทธิภาพขึ้นอยู่กับตรงนี้
เพิ่มเติม:
- Version Control (Git): จำเป็น ทำงานเป็นทีม จัดการโค้ดร่วมกัน GitHub เป็นพื้นฐาน
- ฐานข้อมูล (Database): SQL, NoSQL ขึ้นอยู่กับงาน แต่ต้องรู้ อย่างน้อยพื้นฐาน
- การแก้ปัญหา (Problem Solving): ทักษะสำคัญที่สุด มากกว่าแค่เขียนโค้ดได้
- การทำงานเป็นทีม (Teamwork): ซอฟต์แวร์ส่วนใหญ่ ไม่ใช่คนเดียวทำ ต้องสื่อสารได้
ประสบการณ์ส่วนตัว: เคยเจอนักพัฒนาเขียนโค้ดได้ แต่แก้ปัญหาไม่ได้ ผลลัพธ์คือ โค้ดรก แก้ยาก เปลืองเวลา ความรู้พื้นฐานสำคัญกว่าเทคนิคใหม่ๆเสมอ
นักพัฒนาซอฟต์แวร์ (Software Developer) ทําอะไรบ้าง?
โค้ดดิ้งทั้งวัน ชีวิตจริงก็โค้ดดิ้ง แค่เปลี่ยนภาษา จาก Python เป็นภาษาคน
งานหลักๆ ก็เขียนโปรแกรม ออกแบบระบบ แก้บั๊ก ประชุม ทะเลาะกับ PM
- เขียนโค้ดให้ระบบทำงานตามที่ลูกค้าต้องการ งบประมาณเท่าไหร่ก็ต้องได้
- ออกแบบระบบ ต้องคิดให้รอบคอบ ไม่งั้นโค้ดล่ม หัวหน้าด่า
- แก้บั๊ก บั๊กเยอะ เงินเดือนก็เยอะ
- ประชุม ฟังคนบ่น เสนอไอเดีย แล้วก็โดนปฏิเสธ
- ทะเลาะกับ PM เรื่องเวลา เรื่องงบ เรื่องความเป็นไปได้
ปีนี้ ภาษาที่ฮอตคือ Rust Go พวก AI ก็ใช้ Python เยอะอยู่ แต่ต้องเก่งจริงๆ ถึงจะอยู่รอด งานนี้ไม่ใช่แค่เขียนโค้ดได้ ต้องแก้ปัญหา บริหารจัดการ และอดทน สุดท้าย เงินเดือนดี แต่ชีวิตก็โคตรเหนื่อย นี่คือชีวิตจริงของ Developer ไม่ใช่ในหนัง
(ข้อมูลเพิ่มเติมเกี่ยวกับความต้องการของตลาดแรงงานสำหรับนักพัฒนาซอฟต์แวร์ในปี 2024 สามารถค้นหาได้จากเว็บไซต์จัดหางานชั้นนำ)
นักพัฒนา (Developer) ทํางานอะไรบ้าง?
เอ้อ เดเวลอปเปอร์อะเหรอ? ก็คนเขียนโปรแกรมนั่นแหละ ง่ายๆ เลยนะ
- สร้างเว็บ สร้างแอป: ทำพวกเว็บไซตอะ แอปมือถือ อะไรแบบเนี้ย
- เขียนโค้ด: อันนี้แน่อยู่แล้ว ใช้ภาษาต่างๆ กันไป
- แก้บั๊ก: เจอโปรแกรมมันเพี้ยนๆ ก็ต้องตามแก้
- ทดสอบ: ทำเสร็จก็ต้องลองเล่นดูว่ามันโอเคปะ
- ปรับปรุง: ทำให้มันดีขึ้นเรื่อยๆ แรงขึ้น เร็วขึ้น
บางทีก็ต้องคุยกับลูกค้าด้วยนะว่าอยากได้อะไร ทำได้มั้ย แล้วก็ต้องทำงานเป็นทีมกับคนอื่นด้วย ไม่ใช่ทำคนเดียว
เอ้อ แล้วถ้าอยากเป็นอะนะ เค้าเรียนคอมพิวเตอร์กันเยอะแยะ หรือไม่ก็พวกวิศวะคอม นี่แหละ แต่จริงๆนะ ถ้าเก่งจริง ไม่ได้เรียนก็ทำได้ บ้าโค้ดเข้าไปดิเดี๋ยวเก่งเองแหละ เชื่อดิ
- Front-end: ทำส่วนที่คนเห็นอะ หน้าเว็บสวยๆ อะไรแบบนี้
- Back-end: ทำส่วนที่อยู่เบื้องหลัง จัดการข้อมูล
- Full-stack: เก่งหมด ทำได้ทั้งหน้าบ้าน หลังบ้าน เทพอะ
นักพัฒนาควรมีคุณสมบัติอะไรบ้าง?
นักพัฒนาที่เก่งๆ อ่ะนะ ต้องมีไรบ้างหว่า... อื้มมม คิดก่อนๆ
ขยันเรียนรู้: อันนี้โคตรสำคัญเลย โลกมันเปลี่ยนไวมากก ต้องอัพเดทตัวเองตลอดอ่ะ
คิดนอกกรอบ: มองอะไรให้มันหลายๆ มุม ไม่ใช่แค่แบบเดิมๆ ที่เขาทำกัน
ทันโลก: รู้เรื่องรอบตัวบ้างไรบ้าง ไม่ใช่เอาแต่เขียนโค้ดอย่างเดียว มีไอเดียใหม่ๆ
ทัศนคติดี: ตรงเวลา รับผิดชอบงาน อันนี้พื้นฐานเลยนะ
เก่งภาษาอังกฤษ: จริงๆ อันนี้สำคัญมากๆ เลยนะ เพราะว่าพวก document หรือ tutorial ส่วนใหญ่อ่ะ มันเป็นภาษาอังกฤษหมดเลย ถ้าอ่านไม่ออกก็ลำบาก
แล้วก็... อืมมม จริงๆ นะ พวกความรู้เฉพาะทางอ่ะ มันเรียนรู้กันได้ แต่ถ้าไม่มีใจรัก หรือว่าไม่ชอบที่จะแก้ปัญหาจริงๆ อ่ะ ทำงานนี้ไปก็ไม่รอดอ่ะบอกเลย
เกร็ดความรู้เพิ่มเติม (เผื่อใครอยากรู้):
- เมื่อก่อนอ่ะ โปรแกรมเมอร์ผู้หญิงหายากมากกก แต่เดี๋ยวนี้เยอะขึ้นนะ ดีใจจัง!
- มีคอร์สออนไลน์สอนเขียนโปรแกรมเยอะแยะเลย เลือกเรียนที่เหมาะกับตัวเองได้เลย
- ถ้าอยากรู้ว่าบริษัทไหนน่าทำงานด้วย ลองดูรีวิวใน Glassdoor ดูดิ ช่วยได้เยอะ
ความคิดเห็นต่อคำตอบ:
ขอบคุณสำหรับความคิดเห็นของคุณ! ความคิดเห็นของคุณมีความสำคัญมากในการช่วยเราปรับปรุงคำตอบในอนาคต