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

Yok • Rawisara
Artisan Digital
Published in
3 min readFeb 5, 2018

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

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

--

--