เส้นทางของนักพัฒนาซอฟต์แวร์

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

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

ใช่มั้ยครับ? สำหรับคนที่ยังไม่เรียนจบคงจะยังไม่รู้ แต่คนที่กำลังทำงานด้านพัฒนาซอฟต์แวร์อยู่จะรู้สึกได้

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

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

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

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

road_ahead.jpg

ถ้าเราไม่ออกนอกลู่นอกทางซะก่อน 🙂 การเติบโตในหน้าที่การงานของนักพัฒนาซอฟต์แวร์ก็จะเป็นดังภาพข้างบนนั่นแหล่ะครับ โดยมีลำดับดังนี้

  1. โปรแกรมเมอร์ (Programmer) แน่นอนว่าคนที่เข้าทำงานพัฒนาซอฟต์แวร์ล้วนต้องทำงานในตำแหน่งนี้ครับ ไม่ว่าจะจบประกาศนียบัตรวิชาชีพชั้นสูง จนกระทั่งจบปริญญาโท ยังไงเริ่มต้น ก็ต้องผ่านตำแหน่งนี้ก่อน เพียงแต่ว่าจะอยู่แป๊ปเดียว หรืออยู่นานเท่านั้นเอง โดยจุดเด่นของคนประเภทนี้คือเชี่ยวชาญทางเทคนิคมากถึงมากที่สุด 🙂 แต่คุยกับ User ยังไม่ค่อยได้ แถมเก็บอารมณ์ยังไม่ค่อยได้ด้วย
  2. วิศวกรซอฟต์แวร์ (Software Engineer) ตำแหน่งนี้บางองค์กรก็มีครับ แต่บางองค์กรก็ไม่มีแล้วแต่นโยบาย โดยเมื่อเราทำงานเป็นโปรแกรมเมอร์ได้ซัก 1 – 3 ปีแล้ว ทางผู้บังคับบัญชาจะเริ่มมาเล็ง ๆ แล้วครับ ว่าใครบ้างหนอที่สมควรจะได้รับการอวยยศเลื่อนตำแหน่ง ถึงตอนนี้ผู้บังคับบัญชาจะเริ่มเอางานแปลก ๆ ที่ไม่เคยทำมาโยนให้แล้วครับ ยกตัวอย่างเช่น ให้เขียนพิมพ์เขียวการทำงาน, ให้เขียนแผนผังอธิบายการไหลของข้อมูล, ให้ออกแบบซอฟต์แวร์ระดับใหญ่ที่ต้องใช้กับหลาย ๆ ระบบ, เริ่มให้ไปคุยกับผู้ใช้ระบบซึ่งเป็นระดับบังคับบัญชา เป็นต้น ซึ่งการที่ต้องค่อย ๆ เปลี่ยนทักษะจากทางเทคนิคไปเป็นทางระบบ ในขณะที่งานทางเทคนิคก็ยังต้องทำอยู่เหมือนเดิม เป็นสิ่งที่ท้าทายมากนะผมว่า
  3. นักวิเคราะห์ระบบ (System Analyst) หลังจากที่เราต้องทำงานทั้งทางเทคนิคและทางระบบไปซักพักนึง บางทีก็อาจจะพักใหญ่ ๆ เลยล่ะครับ ถึงตอนนี้ทางผู้บังคับบัญชาจะเริ่มเห็นว่าเราพร้อมแล้ว ก็จะเลื่อนให้เราเป็นนักวิเคราะห์ระบบ โดยคราวนี้เราจะต้องทิ้งงานทางเทคนิคไปเกือบหมด แล้วหันมาทำงานด้านระบบแทน อาทิเช่น เขียน Work Flow, เขียน Data Flow Diagram, เขียน Context Diagram, ทำ Presentation อธิบายการทำงานของระบบ, เขียน Functional Specification, แจกจ่ายงานเขียนซอฟต์แวร์ให้กับโปรแกรมเมอร์ เป็นต้น นอกจากนี้ก็ยังต้องไปเจรจาต่อรองกับผู้ใช้ระบบ เพื่อการพัฒนาระบบใหม่ ๆ หรือดูแลระบบเก่า ๆ อีกด้วย จะเห็นว่ามันก็ยังเป็นงานที่เกี่ยวกับการพัฒนาซอฟต์แวร์อยู่ดีแหล่ะครับ เพียงแต่ยกระดับขึ้นมาในระดับของการจัดการเท่านั้นเอง
  4. ผู้จัดการโครงการ (Project Manager) กว่าจะได้อยู่ในตำแหน่งนี้ ไม่ใช่ง่าย ๆ ครับ ต้องเคี่ยวกรำเป็นอย่างมาก คนในตำแหน่งนี้ทิ้งวิญญาณทางเทคนิคไปนานแล้ว ที่เหลืออยู่ในจิตวิญญาณก็เป็นเรื่องของธุรกิจกับระบบล้วน ๆ คนในตำแหน่งนี้จะต้องรับผิดชอบทีมงานพัฒนาซอฟต์แวร์หลายสิบคน บางทีก็หลายร้อยคน, ต้องรู้ระบบทุกระบบที่ตนเองดูแลอยู่อย่างละเอียด, ต้องทำ Project Schedule เพื่อกำหนดกำลังพล กำหนดทรัพยากรในการทำงาน กำหนดระยะเวลาในการทำงาน รวมถึงกำหนดงบประมาณที่ต้องใช้จ่ายสำหรับการทำโครงการ, ต้องพูดคุยเจรจาการทำงานกับลูกค้าหรือผู้ใช้ระบบระดับบิ๊ก ๆ เป็นต้น จะเห็นได้ว่าตำแหน่งนี้ใหญ่โตและหนักอึ้งมาก ผมเองได้มีโอกาสร่วมงานกับผู้จัดการโครงการหลายบริษัท พบว่าคนเหล่านี้มีลักษณะร่วมอย่างหนึ่งก็คือ ควบคุมอารมณ์ได้ดีมาก, ไหวพริบปฏิภาณสูง และวาทศิลป์เป็นเลิศ

เมื่อทราบอย่างนี้แล้ว ผมหวังเป็นอย่างยิ่งนะครับ ว่าคนที่จะทำงานทางด้านพัฒนาซอฟต์แวร์ หรือปัจจุบันกำลังทำงานด้านพัฒนาซอฟต์แวร์อยู่ จะเข้าใจว่าทางเดินของคนอย่างพวกเรานั้น จะไปทางไหน และไปทางที่ว่าแล้วจะต้องใช้ชีวิตยังไง

Related Posts

2 thoughts on “เส้นทางของนักพัฒนาซอฟต์แวร์

  1. ก็อย่างงี้แหละ ผมเรียนหลักสูตรพัฒนาซอฟต์แวร์ของจุฬาอ่ะ เค้าก็สอนราวๆนี้แหละแต่รายวิชาที่เหมือนจะแบบที่พี่ไท้แกว่ามาก็ประมานนี้ ปีแรกๆก็มีพวกprogต่างๆปีถัดๆมาก็เริ่มมี SE, SA ตอนนี้ปีสุดท้ายเรียน Software Project Management อยู่ ตรง SE กะ SA ยังพอจะชอบอยู่ แต่พอเรียน Software Project Management รู้สึกมันเข้าใกล้ธุรกิจแล้ว เลยแหม่งๆนิดหน่อย แต่ก็ยังเรียนได้อยู่แต่มิดเทอมก็เกือบตกมีนแล้ว T_T

  2. ทางทษฎีก็ว่ากันแบบนี้แหล่ะค่ะ

    แต่ทางปฏิบัติจริง ๆ อย่างบริษัทที่เคยทำนะคะ
    ให้คนจบด้านนิเทศมาเป็น ผู้จัดการโครงการเลยค่ะ ไม่มีความโปรแกรมเมอร์ใด ๆ ทั้งสิ้น

    อย่าเชื่อที่เรียนมามากเลยนะคะ ชีวิตจริงไม่ได้เป็นดั่งหนังสือเสมอไป

    ต้องปรับตัวเองให้เข้ากับชีวิตจริงให้มากที่สุดค่ะ

ใส่ความเห็น

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