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