Software Engineer แปลว่าอะไร

จากชื่อจะเห็นว่ามีคำว่า Engineer หรือ วิศกร ซึ่งแก่นหลักของงานวิศวกรรม คือ การคำนึงถึงการสร้างตั้งแต่การเริ่มต้นวางแผน รับผิดชอบ ไปจนถึงการปิดจบโครงการ ซึ่งสำหรับงาน Software Engineer ก็มีการนำหลักการและทฎษฎีทางวิศกรรมมาประยุกต์ใช้ เช่น การมองและวิเคราะห์ปัญหาด้วยแนวคิดเชิงวิศวกรรม การคำนึงถึงสภาพแวดล้อมเดิมก่อนสร้างสิ่งใหม่ นอกจากนี้ยังต้องให้คำปรึกษากับลูกค้าเพื่อสร้าง Software ที่เหมาะสมกับลูกค้าที่สุด และทำงานร่วมกับ Programmer ดังนั้น Software Engineer ก็จำเป็นต้องมีทักษะด้านภาษา Coding โดยเฉพาะการอ่าน Code และความรู้เชิงโครงสร้างของการเขียน Code

— รายได้เฉลี่ยของ Software Engineer สูงสุด(ขึ้นอยู่กับบุลคลและประสบการณ์) อยู่ที่: 270,000 บาท/เดือน

Software Programmer

หนึ่งในอาชีพยอดฮิตของสาย Tech ที่หลายๆ คนคุ้นเคยกันดี หน้าที่ก็คือการสร้าง Software ผ่านการเขียนโปรแกรม (Programming) นั่นเอง ซึ่งการใช้ภาษา Coding ก็เป็นส่วนหนึ่งของงาน Programing ด้วยเช่นกัน หน้าที่หลักของ Programmer คือ การรับคำสั่งจาก Designer Engineer หรือ หัวหน้าทีม เพื่อเปลี่ยนความต้องการเหล่านั้นให้มาอยู่ในรูปแบบ Code เป็นอาชีพที่เหมาะสำหรับคนที่ชอบ Coding หรืออยากเริ่มต้นในสายงานนี้ เพราะสามารถต่อยอดไปเป็น Software Engineer หรือ สายงานอื่นๆ ได้อีกหลากหลายในอนาคต แน่นอนว่าทักษะด้านภาษา Coding เป็น A must ของอาชีพนี้ เพราะจำเป็นต้องใช้อ่าน และสร้างโค้ดที่เรียบร้อย รวมถึงการแก้ไขโค้ดที่ผิดพลาดอยู่เสมอ

— รายได้เฉลี่ยของ Software Programmer สูงสุด(ขึ้นอยู่กับบุลคลและประสบการณ์) อยู่ที่: 150,000 บาท/เดือน

Software Engineer แปลว่าอะไร

programmers discussing project Image by @pressfoto via freepik.com

โดยสรุปอาจจะกล่าวได้ว่า Software Engineer กับ Software Programmer เป็นอาชีพอีกคู่หนึ่ง ที่มีส่วนงานรับผิดชอบทับซ้อนกันใน มุม (aspect) และ ขอบเขตงาน (scope) ที่ต่างกัน ตัวอย่างเช่น Back-End Engineer กับ Back-End Programmer สำหรับทักษะด้านการ Coding นั้นถือเป็นทักษะจำเป็นสำหรับทั้งสองอาชีพ โดยตัวอย่างภาษาที่ควรรู้ ได้แก่ C ,C++, C#, Java, JavaScript, LISP, MATLAB, Perl, PHP, Python, R, Ruby และ SQL

Note: บทความนี้เป็นบทความที่นำเสนอมุมมองของการเรียน Software Engineering โอกาสในการทำงานส่วนต่าง ๆ ของสายนี้ รวมไปถึงเรียนแล้วเป็นยังไง ถ้าอยากเรียนแต่ทำบางสิ่งไม่ได้ จะทำยังไงดี ?

Software Engineering คืออะไร ?

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

นักวิศวกรรมซอฟแวร์ แต่ละคนก็อาจจะรับผิดชอบหน้าที่แตกต่างกันออกไปตามความถนัด มีทั้งผู้ที่ทำเว็บไซต์ หรือผู้ที่ทำแอปพลิเคชั่น หรือผู้ที่ทำระบบหน้าบ้าน เช่น รูปร่างหน้าตาของเว็บไซต์ หรือแอปพลิเคชั่นต่าง ๆ หรือบางคนอาจทำระบบหลังบ้าน ออกแบบฟังก์ชันการใช้งานระบบ เช่น ระบบฐานข้อมูลก็ดี หรือฟังก์ชันการใช้งานก็ดี ซึ่งทั้งหมดที่กล่าวไป เรียกสั้น ๆ ว่าขั้นตอนการพัฒนาระบบ (Development) โดยผู้พัฒนาระบบ (Developer) ต้องใช้ความสามารถด้านโปรแกรมเมอร์ (Coding Skill) ซึ่งก็คือภาษาคอมพิวเตอร์ต่าง ๆ เพื่อพัฒนาระบบ หรือเรียกง่าย ๆ ว่า การเขียนโปรแกรมออกมา

Software Engineering มีอะไรที่นอกเหนือไปจากการ Coding ?

รู้หรือไม่ว่า Software Engineering ที่เราเรียนมา หรืออาชีพที่ต้องไปทำงานนั้น อาจไม่ใช่แค่การมานั่งเขียนโปรแกรม (Coding) มันยังมีหน้าที่หลายอย่างให้เราทำและรับผิดชอบอีก เพราะจริง ๆ แล้ว Software Engineering ที่เราเรียนมา ประกอบกับการเรียนหลากหลายด้านมาก ไม่ว่าจะเป็น Software Process Improvement, Software Requirement Specification, Software Architecture, Software Quality Assurance หรือ แม้กระทั่ง Computer Programming เองก็ด้วย ซึ่งจริง ๆ แล้ว ทุกอย่างที่เรียนมาสามารถนำไปใช้และปฏิบัติได้จริงทั้งหมด เพราะขั้นตอนการทำงานของวิศวกรรมซอฟแวร์ จะถูกควบคุมด้วย “Software Development Life Cycle”

Reference: https://www.linkedin.com/pulse/what-software-development-life-cycle-sdlc-phases-private-limited/

จากรูปด้านบน ถ้าคิดง่าย ๆ คือ กว่าจะมาเป็นโปรแกรม หรือระบบอะไรก็ตามสักอย่าง จะต้องผ่านขั้นตอนการทำงาน ดังนี้

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

ฉะนั้น ถ้าอ่านมาถึงตรงนี้ เราจะรู้ว่า จริง ๆ แล้ว Software Engineering ไม่ได้มีแค่ในส่วนของการ Coding เพียงอย่างเดียว ยังมีการเก็บข้อมูลความต้องการของลูกค้า การออกแบบและพัฒนาระบบ หรือแม้กระทั่งการทดสอบระบบภายหลังจากการพัฒนาระบบเสร็จสิ้น ดังนั้น โอกาสในการทำงาน หลังจากการเรียนจบของสายนี้ ย่อมมีอีกหลายอย่าง ให้เราได้เลือกทำ เราอาจจะเขียนโปรแกรมไม่เก่ง แต่เรามีทักษะและศักยภาพที่สามารถพูดคุยกับบุคคลอื่น และแก้ไขปัญหาได้ หรือแม้กระทั่งการออกแบบระบบคร่าว ๆ โดยยังไม่ต้องลงมือเขียนโปรแกรม เช่น หลังจากคุยกับลูกค้าเพื่อเข้าใจความต้องการของลูกค้าแล้ว วิธีการไหน หรือฟังช์กันระบบแบบไหนที่ตรงกับความต้องการของลูกค้า หรือที่เราคิดว่าเป็นประโชยน์แก่ลูกค้า ก็สามารถออกแบบ เพื่อนำเสนอกับลูกค้าได้ หรือแม้กระทั่งการที่เราลองใช้ และทดสอบระบบหลังจากที่ระบบถูกพัฒนาจนเสร็จ ก็สามารถทำได้อีกด้วย

ดังนั้น ถ้าเรียน Software Engineering แล้ว Coding ไม่ได้ ถือว่าไม่ประสบความสำเร็จในการเรียนจริงหรือ ?

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

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

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

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

Software Engineer ทำหน้าที่อะไร

1. วิศวกรซอฟต์แวร์ (Software Engineer) ทำ งานวิจัย ออกแบบ พัฒนา และปรับปรุงระบบซอฟต์แวร์ ควบคู่ไปกับการพัฒนาฮาร์ดแวร์ให้ทันสมัย และตอบโจทย์การใช้งานในด้านต่างๆ ไม่ว่าจะเป็นการแพทย์ วิทยาศาสตร์ และอุตสาหกรรมหลากหลายชนิด รายได้ประมาณ 90,000 ดอลล่าร์ต่อปี

Software Engineer เรียนเกี่ยวกับอะไร

วิศวกรรมซอฟต์แวร์ คือหลักสูตรที่เรียนเกี่ยวกับการออกแบบและพัฒนาซอฟต์แวร์หรือที่เราเรียกกันติดปากว่า “การเขียนโปรแกรม” โดยเป็นการเรียนรู้ในกระบวนการพัฒนาโปรแกรมตั้งแต่ต้นจนจบ เริ่มตั้งแต่การประเมินความต้องการของลูกค้า, การออกแบบโครงสร้างของโปรแกรม, การวางแผนกระบวนการพัฒนา, การ Coding, การทดสอบโปรแกรม เป็นต้น

Developer กับ Software Engineer ต่างกันยังไง

4) Software developer คือนักพัฒนาซอฟต์แวร์ มีหน้าที่ code โปรแกรม แต่เพิ่มการdesign ,Architecture ,UML. แต่บางคนเรียกรวมหรือสลับกับ programmer ก็ได้ 5) Software Engineer คือเรียนรู้กระบวนการทำซอฟต์แวร์ตั่งแต่ต้นทางยันปลายทาง เหมาะสำหรับคนทำ Software House เป็นอย่างยิ่ง

วิศวกรรมซอฟต์แวร์มีความสำคัญอย่างไร

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