บุคลากรด้านซอฟต์แวร์ โดย ไม่มีผู้แต่ง
การวิเคราะห์ของแบรี บีม (Barry Boehm: 1988) จากประสบการณ์เกี่ยวกับโครงการพัฒนาซอฟต์แวร์ต่างๆ มากว่า ๒๐ ปี พบว่า คุณภาพของบุคลากรที่พัฒนาซอฟต์แวร์ โดยเฉพาะคุณภาพของหัวหน้าโครงการที่รู้จักพิจารณาว่า เรื่องใดมีความสำคัญ หรือมีความเสี่ยงสูง แล้วทำสิ่งนั้นก่อน สามารถจะบ่งบอกถึงความสำเร็จของโครงการและคุณภาพของซอฟต์แวร์ได้ ในขณะที่วิธีการพัฒนาหรือเครื่องมือที่ใช้จำเพาะแบบไม่สามารถรับประกันได้ ว่า การใช้วิธีจำเพาะแบบนั้นจะส่งผลให้ซอฟต์แวร์มีคุณภาพเสมอ ผลการศึกษาของนายเคอร์ทิส (B. Curtis : 1988) และนายแอนดรูว์ โนแลน (Andrew J. Nolan : 1988)ยืนยันได้ว่า ปัจจัยของความสำเร็จในการพัฒนาซอฟต์แวร์อยู่ที่การมีบุคคลที่มีคุณภาพในทีม งาน
ดังนั้น มนุษย์จึงเป็นกลไกสำคัญในการพัฒนาซอฟต์แวร์ในปัจจุบัน การพัฒนาซอฟต์แวร์ขนาดใหญ่ไม่ใช่จะมีเฉพาะโปรแกรมเมอร์เท่านั้นแต่จำเป็น ต้องมีทีมงานมาช่วยพัฒนาด้วย
ทีมงานพัฒนาซอฟต์แวร์
ทีมงานพัฒนาซอฟต์แวร์ อาจจะประกอบด้วยบุคลากรหลายตำแหน่ง ซึ่งมีหน้าที่และคุณสมบัติต่างๆ กัน ดังต่อไปนี้
– ผู้บริหารอาวุโส (senior manager) เป็นผู้กำหนดสาระสำคัญของโครงการพัฒนาซอฟต์แวร์
– หัวหน้าโครงการ (proJect manager)มี หน้าที่บริหารโครงการ จัดทีมงาน ประสานการทำงานแบบทีม ติดตามผลงาน ให้กำลังใจเข้าใจปัญหาในการบริหารงานทั้งด้านบุคคลและเทคนิคในการวิเคราะห์ สถานการณ์ต่างๆ ลำดับ
ความสำคัญของเรื่องที่จะต้องทำ และปรับแนวทางการดำเนินงานให้เหมาะสมกับสถานการณ์ได้
– นักวิศวกรรมข้อกำหนด (requirementengineer) มีหน้าที่วิเคราะห์ ชี้แจงโจทย์ปัญหาที่ซอฟต์แวร์จะต้องการ โดยสรุปให้เห็นคุณลักษณะซอฟต์แวร์ที่ต้องการ ขอบเขตหน้าที่ที่ซอฟต์แวร์ควรทำ ทบทวนความครบถ้วนของข้อกำหนดและความถูกต้องตามวัตถุประสงค์ ฯลฯ ในกรณีที่เป็นข้อกำหนดของซอฟต์แวร์ประเภทที่เสริมระบบงานธุรกิจ ผู้ที่ทำหน้าที่นี้เรียกว่านักวิเคราะห์ระบบ (system analyst) โดยมีหน้าที่ศึกษาระบบงาน ขั้นตอนในการทำงาน ลักษณะ
ข้อมูลที่ส่งต่อในแต่ละขั้นตอน และสอบถามความต้องการของผู้บริหาร หรือผู้ที่จะใช้ระบบ ฯลฯ แต่สำหรับกรณีที่เป็นข้อกำหนดซอฟต์แวร์สำเร็จรูปเพื่อจำหน่ายให้แก่บุคคล ทั่วไป ผู้ที่ทำหน้าที่นี้จะต้องศึกษาความต้องการของตลาดด้วย
– นักวิเคราะห์องค์ความรู้ (Knowledgeengineer) มีหน้าที่สอบถาม และรวบรวมองค์-ความรู้จากผู้เชี่ยวชาญในสาขาต่างๆ เพื่อให้ทราบถึงกฎเกณฑ์ (rule) ต่างๆ และวิธีวินิจฉัยปัญหาในสาขานั้นๆ องค์ความรู้นี้มักจำเป็นต้องมีใน
การพัฒนาซอฟต์แวร์ที่จำลองการทำงานของผู้เชี่ยวชาญ (Expert system) หรือระบบช่วยตัดสินใจ (Decision support system)
– นักออกแบบระบบ (designer) มีหน้าที่วางแนวทาง รายละเอียดขั้นตอน และวิธีการทำงานซอฟต์แวร์ เพื่อให้สามารถทำงานได้ตามข้อกำหนด รวมถึงการออกแบบวิธีประสานงานระหว่างคนกับคอมพิวเตอร์ ออกแบบวิธีจัดระเบียบข้อมูลในฐานข้อมูล ออกแบบหน้าจอแนวทางนำเสนอข้อมูลที่เป็นรูป เสียง บทความภาพเคลื่อนไหว ฯลฯ
– นักวิจัย (researcher) ในกรณีที่นำซอฟต์แวร์มาใช้แก้โจทย์ปัญหาที่ปัจจุบันยังไม่ทราบวิธีที่จะสั่ง ให้คอมพิวเตอร์แก้ให้เรา หรือทำแทนเรา เช่น วิธีที่ทำให้ซอฟต์แวร์อ่านลายมือภาษาไทยออก ผู้ที่ออกแบบระบบได้สำเร็จมักเป็นนักวิจัย (researcher) ที่ต้องคิดค้นวิธีการใหม่ๆไม่ใช่นักออกแบบระบบซอฟต์แวร์ธรรมดา
– นักเขียนโปรแกรม (Programmer) หรือโปรแกรมเมอร์ ทำหน้าที่เขียนซอฟต์แวร์ หรือชุดคำสั่งให้คอมพิวเตอร์ทำงานตามที่ได้ออกแบบไว้
– นักทดสอบคุณภาพระบบ (tester) มีหน้าที่จัดทำกรณีทดสอบ เพื่อทดสอบและประเมินคุณภาพของโปรแกรม ซึ่งรวมถึงความถูกต้องประสิทธิภาพ ฯลฯ ตามที่ระบุในข้อกำหนดของซอฟต์แวร์
– ผู้ประเมินคุณภาพการใช้งานของระบบ(usability engineer) ทำหน้าที่ตรวจสอบความสะดวกในการใช้งานของซอฟต์แวร์ ซึ่งสามารถทำได้ตั้งแต่เริ่มต้นออกแบบซอฟต์แวร์ความจำเป็นของบุคลากรแต่ละ ตำแหน่งจะขึ้นอยู่กับประเภท ขนาด และความซับซ้อนของซอฟต์แวร์ บางซอฟต์แวร์อาจไม่จำเป็นต้องมีบุคลากรครบดังที่กล่าวมานี้ บางซอฟต์แวร์อาจต้องการผู้เชี่ยวชาญเพิ่มเติม อย่างไรก็ตาม ทีมงานพัฒนาซอฟต์แวร์ยังต้องประสานงานกับบุคคลอื่นเช่น ผู้บริหารบริษัทซอฟต์แวร์ ผู้ใช้ซอฟต์แวร์ผู้บริหารองค์กรที่ว่าจ้างให้พัฒนาซอฟต์แวร์ ฯลฯ ปัจจุบัน การพัฒนาบุคลากรด้านซอฟต์แวร์ในประเทศไทยยังคงให้ความสำคัญต่อการพัฒนา โปรแกรมเมอร์มากที่สุด คือ สอนให้เขียนชุดคำสั่งในแต่ละภาษาคอมพิวเตอร์ไปเลย แต่ค่อนข้างจะละเลยผู้ที่วิเคราะห์ข้อกำหนดของซอฟต์แวร์ ผู้ที่ออกแบบซอฟต์แวร์และผู้ที่ทดสอบซอฟต์แวร์ โดยมักสรุปให้หน้าที่ทั้งหมดเป็นของโปรแกรมเมอร์นอกจากนี้ ประเทศไทยยังมีปัญหาในการเลื่อนขั้นบุคลากรด้านซอฟต์แวร์ โดยมักจะเลื่อนขั้นโปรแกรมเมอร์ที่อาวุโสให้เป็นนักวิเคราะห์ระบบ หรือหัวหน้าโครงการ ซึ่งที่จริงแล้ว ถือว่าผิดหลักเกณฑ์อย่างมาก เพราะมีคุณสมบัติที่ไม่เหมาะสม เนื่องจากโปรแกรมเมอร์ส่วนใหญ่มักเป็นคนเก็บตัว ชอบอยู่หน้าจอคอมพิวเตอร์ และมีความเชี่ยวชาญด้านเทคนิคมาก แต่นักวิเคราะห์ระบบต้องมีมนุษย์สัมพันธ์ดี รู้จักสอบถาม ส่วนหัวหน้าโครงการต้องเป็นผู้ที่มีความสามารถสูงในการวางแผนและบริหารงาน บุคคล การเลื่อนขั้นเช่นนี้อาจทำให้องค์กรต้องสูญเสียโปรแกรมเมอร์ที่ดี และได้นักวิเคราะห์ระบบที่ไม่เหมาะสมมาแทน
ที่กล่าวมาทั้งหมดนี้เป็นการอธิบายให้เข้าใจหลักการเบื้องต้นในการพัฒนา ซอฟต์แวร์เท่านั้นการพัฒนาซอฟต์แวร์ยังจะต้องมีกิจกรรมเสริมอีกมาก ได้แก่ การประเมินค่าใช้จ่ายของโครงการการประเมินเวลาที่ต้องใช้ การวัดคุณภาพของขั้นตอนการทำงาน การวัดคุณภาพผลงาน ฯลฯการพัฒนาอุตสาหกรรมซอฟต์แวร์ให้เจริญรุ่งเรืองได้ในประเทศไทยจึงไม่ใช่ เรื่องง่ายอย่างที่หลายคนคิด แต่ถ้าสามารถสร้างศักยภาพในส่วนนี้ได้อุตสาหกรรมซอฟต์แวร์ก็จะเป็น อุตสาหกรรมที่ช่วยส่งเสริมเศรษฐกิจของประเทศไทยได้อย่างมาก