หลาย ๆ ๆ ๆ ปีก่อนผมเคยมีฐานะเป็นเพียง Programmer ครับ ผมรู้สึกภาคภูมิใจมากกับการสร้าง Software ยิ่ง Software ยาก ๆ หิน ๆ ยิ่งถือว่าท้าทาย ถ้าทำได้ทำสำเร็จก็จะรู้สึกมีความสุขกายสบายจิตมากเลยทีเดียว
กาลเวลาผ่านไปครับ มันไม่มีใครหรอกที่จะได้มีโอกาสย่ำเท้าอยู่กับที่ ต่อให้เป็นคนขี้เกียจ คนไม่ทะเยอทะยาน คนหมดอาลัยตายอยาก ก็ต้องมีการเปลี่ยนแปลง ผมเองก็เช่นกัน ต้องโตขึ้นครับ ต้องทำหลาย ๆ อย่างที่ตัวเองไม่เคยทำ ต้องเลื่อนตัวเองขึ้นมาเป็นนักวิเคราะห์ระบบ จนถึงตอนนี้แทบจะอยู่ในฐานะ Manager ของ Software Development Team
ผมเชื่อว่า Software Developer หลาย ๆ คนจะมีความรู้สึกร่วมอย่างนึง นั่นก็คือ รู้สึกว่าไม่ไว้ใจให้ใครเขียน Program และปักใจเชื่อว่าตนเองนั้น ถ้าได้รับมอบหมายงานสร้าง Software มาแล้ว ทำคนเดียวน่าจะให้ผลลัพท์ที่ดีมากกว่า ใช่มั้ยล่ะ? 🙂
ผมเองก็เคยคิดอย่างนั้น แต่ก็อย่างที่เรารู้ ๆ กันว่าองค์กรทุกองค์กรล้วนต้องการผลลัพท์จากระบบคอมพิวเตอร์ซึ่งมี Scale ใหญ่โต ดังนั้นลำพังการสร้าง Software ด้วยตัวเราเพียงคนเดียวคงได้ผลลัพท์ระดับ Tiny เป็นแน่แท้
น้ำน้อยแพ้ไฟ ฉันใด คนน้อยก็แพ้งานเยอะ ฉันนั้นครับ!!!!!
ทีนี้ในเมื่อเรารู้แล้วว่างานเยอะก็ต้องใช้คนเยอะ เราก็ต้องหาคนมาช่วยทำงานครับ แล้วคราวนี้แหล่ะเราก็ต้องใช้กระบวนการในการคิดที่แตกต่างจากที่เราเคยสร้าง Software คนเดียว นั่นคือเราต้องเปลี่ยนจาก Software Developer มาเป็น Software Development Manager ครับ
สิ่งสำคัญในการเป็น Software Development Manager มีหลายประการ ซึ่งสามารถร่ายเรียงได้ดังนี้ครับ
1. ต้องมีประสบการณ์ในการเขียน Program เพราะเราต้องสื่อสารกับ Software Developer จากประสบการณ์ที่ผมผ่านมาพบว่า Software Developer จะไม่เชื่อถือหรือเชื่อฟังเราเลยครับ ถ้าเราไม่ได้มีความรู้หรือทักษะทางด้านการพัฒนา Software เลย เราจะถูกดูถูกลึก ๆ ในใจ และจะถูกรู้สึกว่าเราไม่ได้เป็นพรรคเป็นพวกเดียวกับพวกเค้า เพราะดีแต่สั่ง แต่ไม่รู้อะไรเลย
2. ต้องมีประสบการณ์ในการวิเคราะห์ระบบมาก่อน เพราะ System Analyst เองก็เช่นกันครับ เขาจะไม่เชื่อฟังหรือเชื่อถือเราเลย ถ้าเราไม่สามารถอธิบายระบบให้เขาได้อย่างทะลุปรุโปร่ง เราจะถูกดูถูกและคลางแคลงใจ หากเราจัดกำลังพลในการทำงานโดยไม่สอดคล้องกับระบบที่เป็นจริงครับ
3. ต้องมีความเข้าใจการจัดกำลังพล ต้องรู้ว่าใครในทีมมีข้อดี ข้อด้อย ยังไงบ้าง ต้องรู้ว่าใครในทีมมีอุปนิสัยใจคอยังไง ต้องรู้ว่าเมื่อไหรควรจะใช้ใคร และเมื่อไหร่ควรจะยุติบทบาทของใคร ซึ่งตรงนี้ไม่แตกต่างจากการจัดกองทัพเลย
4. ต้องมองภาพรวมระดับใหญ่ จนถึงภาพเล็กระดับจุกจิกได้ เพราะถ้าไม่เข้าใจในทุก ๆ jigsaw puzzle แล้ว จะทำให้กลไกทุกอย่างรวนไปหมด จนกระทั่งผลลัพท์ที่อยากได้ไม่เป็นไปอย่างที่ต้องการ
5. ต้องใช้ Microsoft PowerPoint, Microsoft Visio ให้คล่อง ๆ เพื่อจะได้ทำ Presentation สำหรับอธิบายให้ผู้บริหาร และ Key User ได้ เพราะบุคลากรเหล่านี้ ถ้าเราอธิบายให้ฟังด้วยปากเปล่า หรือการ lecture บน white board อาจจะพาลเลิกฟังเราไปดื้อ ๆ ก็ได้
6. ต้องใช้ Microsoft Excel, Microsoft Project ได้ในระดับดี เพื่อจะได้ทำ sheet สำคัญ ๆ อันได้แก่ man hours ของทีมงาน, แผนงานในการทำงาน, Bill Of Material ต่าง ๆ ที่ต้องถูกจัดซื้อจัดหามาใช้ในโครงการ เป็นต้น
นอกจากนี้แล้ว วาทศิลป์ก็เป็นสิ่งสำคัญมาก ๆ เพราะอะไร? เพราะคนในทีมงานของเราจะไม่สามารถทำงานให้สอดคล้องได้เลย หากไม่มีการสื่อสารให้เข้าใจโดยทั่วกัน และการสื่อสารที่ดีที่สุดก็คือการพูด มันดีมาก ดีกว่าการเขียนซะอีก เพราะมันให้พลังได้มากกว่าการเขียนนั่นเอง
งาน Software Development Manager จึงเป็นงานที่เน้นใช้ปากทำงานมากกว่าใช้มือทำงาน !!!!
จากประสบการณ์ของผมพบว่า การพูดเพื่อให้ Software Development Team ทำงานให้สำเร็จลุล่วงนั้น ต้องใช้ทั้งหลายวิถีทางและหลายลีลามาก วิธีที่ผมมักใช้เป็นประจำภายหลังจากที่ได้รับคำสั่งจากผู้บังคับบัญชาให้ทำงานชิ้นใหญ่งานใดงานนึงนั่นก็คือ เรียกประชุมทีม Software Development Team เพื่ออธิบายถึง …
- สิ่งที่ผู้บริหารต้องการ รวมถึงผลลัพท์ที่ต้องการ
- กำหนดวิธีการทำงานซึ่งผมเป็นผู้คิดขึ้นเองเป็นส่วนใหญ่ โดยไม่ใช่แค่พูดปากเปล่า แต่ lecture บน white board ให้ดูเป็นฉาก ๆ ด้วย
- มอบหมายงานให้คนในทีมโดยไม่ต้องถามความพึงพอใจ เพราะผมรู้อยู่แล้วว่าใครเป็นใคร และใครเหมาะสมที่จะทำอะไร
- เปิดโอกาสให้คนในทีมซักถามถึงประเด็นทางระบบและเทคนิคต่าง ๆ ซึ่งตรงนี้เป็นจุดสำคัญ เพราะถ้าพูดผิด อาจหมายถึงความเข้าใจผิด และได้ผลลัพท์ที่พังในภายหลัง
- หลังจากประชุมจบและปล่อยให้แยกย้ายกันไปทำแล้ว ก็ต้องคอยเฝ้าดูการทำงานของคนในทีมเป็นระยะ ว่าจะมีใครในทีมที่มีปัญหาทางเทคนิค ทางระบบ หรือทางจิตใจอะไรบ้างหรือเปล่า
- หากพบว่าใครติดปัญหา ก็ต้องรุกเข้าไปช่วยแก้ปัญหาทันทีโดยไม่ลังเล
ในช่วงเวลาของการทำงานโครงการระดับแบบนี้ เราจะได้เจอหลาย ๆ สิ่งที่เราไม่เคยเจอครับ โดยเฉพาะเรื่องของคนใน Team เพราะเราอาจจะได้พบว่าคนที่เก่งในการสร้าง Software มาก ๆ อาจจะกลายเป็นคนเจ้าอารมณ์ฉุนเฉียว, เราอาจจะพบว่าคนที่เป็น System Analyst เปลี่ยนจากคนว่าง่าย กลายเป็นคนดื้อรั้น, เราอาจจะพบว่า Software Developer บางคนหมกเม็ดอะไรหลาย ๆ อย่างไว้ใน Code ของตัวเอง เพียงเพราะว่าถ้าออกแบบ Code ให้เข้าใจง่าย ๆ แล้ว Software Developer คนอื่นในทีมจะมาแย่งงานของตัวเอง
เราอาจจะได้พบว่า System Analyst บางคนกลายเป็นคนโอหัง ไม่ยอมฟังความคิดเห็นของ Software Developer คนอื่น, เราอาจจะเห็น Software Developer ทะเลาะกันเอง เพียงเพราะคนนึงใช้ Visual Basic .NET ร่วมกับ .NET Framework เต็มรูปแบบ ในขณะที่อีกคนนึงใช้ Visual C# .NET แต่กลับไม่ยอมใช้ .NET Framework เต็มรูปแบบ แล้วทำให้ join code ร่วมกันไม่ได้
สิ่งเหล่านี้เป็นบทบาทของ Software Development Manager ครับ ที่จะต้องเข้าไปเคลียร์ และการเคลียร์มันก็มีวิธีเดียว นั่นก็คือ “การพูด” นั่นเอง การพูดเพื่อให้คนใน Team เข้าใจงานของตนเอง, ยอมลดราวาศอก, สงบสติอารมณ์, ปลุกอารมณ์ให้ฮึกเหิม หรือ สร้างขวัญกำลังใจ ล้วนเป็นบทบบาทของ Software Development Manager ทั้งสิ้น
จะเห็นว่างาน Software Development Manager นั้น ถือเป็นงานใหญ่และจุกจิกขนานกันไป เพราะเราต้องประคอง Team งานทุกคนให้ร่วมเดินกันไปจนถึงเส้นชัยให้จนได้
ดังนั้น ใครที่เคยคิดจะสร้าง Software ขนาดใหญ่ด้วยคนเพียงคนเดียว ก็คงต้องเลิกคิดแล้วครับ เพราะมันเป็นไปได้ เพียงแต่เปอร์เซ็นต์มันน้อยเท่านั้นเอง