Agile vs waterfall
อย่างที่เราทราบกันดีตั้งแต่ปี ค.ศ. 2021 มนุษย์มีการนำ Software มาใช้เพิ่มขึ้นอย่างมากในทุก ๆ อุตสาหกรรม จึงทำให้ Software กลายเป็นเป็นเครื่องมือหนึ่ง ที่สำคัญต่อการสร้างความได้เปรียบเชิงแข่งขัน และเพิ่มประสิทธิภาพการดำเนินการของห่วงโซ่อุปทานของภาคธุรกิจในเวทีโลก
เมื่อเราลองสังเกตการเปลี่ยนแปลงของโครงสร้าง GDP ในหลาย ๆ ประเทศพบว่า สัดส่วนของธุรกิจดิจิตอลใน GDP มีแนวโน้มเพิ่มขึ้นอย่างต่อเนื่อง รวมถึงพฤติกรรมการใช้ Internet ของมนุษย์ ที่มีทิศทางการเติบโตอย่างรวดเร็วไปทางเดียวกัน จึงปฏิเสธไม่ได้ว่า Software นั้นเป็นตัวแปรสำคัญหนึ่ง ที่น่าจับตามองที่จะช่วยให้ภาคธุรกิจ สร้างความได้เปรียบในการแข่งขัน รวมถึงการคิดค้นสินค้าและบริการในรูปแบบใหม่ ๆ อย่างที่ไม่เคยมีมาก่อน
เมื่อพูดถึงการพัฒนาผลิตภัณฑ์ซอฟต์แวร์ให้มีประสิทธิภาพ ผลิตภัณฑ์นั้นต้องสามารถตอบโจทย์ ทั้งสามส่วนดังนี้
1. การใช้งานของ User
2. ความเป็นไปได้ในเชิง Technical
3. ความเป็นไปได้ในมุมของธุรกิจ
อีกทั้งการตอบสนองของผลิตภัณฑ์ซอฟต์แวร์ของทั้งสามข้อดังกล่าว ควรตอบสนองให้เหมาะสมในช่วงเวลานั้น ๆ เนื่องจากปัจจุบัน การเปลี่ยนแปลงพฤติกรรมของผู้บริโภค และการเจริญเติบโตของเทคโนโลยีนั้น มีการเปลี่ยนแปลงอย่างรวดเร็วในเวลาสั้น ๆ จึงทำให้ส่งผลต่อความเป็นไปได้ทางธุรกิจโดยตรง ดังนั้นการพัฒนาซอฟต์แวร์ให้มีประสิทธิภาพในทุก ๆ ช่วงเวลานั้น เป็นสิ่งที่ท้าทายสำหรับภาคธุรกิจอย่างมากในปัจจุบัน
วันนี้ผมจะมาแนะนำ 2 Models หลัก ๆ ที่ใช้ในการพัฒนาซอฟต์แวร์ในยุคปัจจุบัน ก่อนอื่นเรามาเข้าใจความหมายในแต่ละโมเดลกันก่อน
1. Waterfall Model
โมเดลที่มีการมุ่งเน้นประสิทธิภาพและขั้นตอนของการพัฒนา โดยมีลักษณะการพัฒนาเรียงลำดับดังนี้ 1. Planning and Analysis 2. Design 3. Development 4. Testing 5. Deployment 6. Maintenance โดยลักษณะการดำเนินการของโมเดลนี้จะมีลักษณะการดำเนินการแบบเส้นตรง (Linear) โดยจะมีการดำเนินการให้เสร็จทีละขั้นตอนแบบ 100% จากนั้นค่อยเริ่มทำขั้นตอนถัดไป โดยผลลัพธ์ที่ได้จากการพัฒนาจะมุ่งเน้นประสิทธิภาพที่ตอบสนองกรอบแนวคิดที่ได้จากขั้นตอนแรก (Planning and Analysis) เท่านั้นโดยไม่คำนึงถึง Change หรือ Initiative ที่ได้เข้ามาระหว่างการพัฒนาเนื่องจากเป็นโมเดลที่มีการพัฒนาแบบไม่ย้อนกลับ จึงทำให้การดำเนินการภายใต้โมเดล นี้มักที่การกำหนด Budget, Timeline และ Scope ไว้อย่างชัดเจนเพื่อเป็นตัววัดผลในการควบคุมประสิทธิภาพของผลลัพธ์ให้ตรงกับกรอบแนวคิดที่ได้จากขั้นตอนแรก
2. Agile model
โมเดลการพัฒนาที่มุ่งเน้นประสิทธิผลและความยืดหยุ่น มากกว่าประสิทธิภาพ และขั้นตอนในการพัฒนาซอฟต์แวร์ โดยจะแบ่งการพัฒนาออกเป็น Iteration สั้น ๆ เพื่อให้ง่ายต่อการวัดผลในทั้งสามมุมที่ได้กล่าวไปด้านบนเพื่อให้มั่นใจว่า ประสิทธิผลของการพัฒนาซอฟต์แวร์นั้นตอบโจทย์ต่อทั้งสามมุมมองในทุก ๆ ช่วงเวลา จึงทำให้ Model ดังกล่าวที่ลักษณะที่คล้ายกับการพัฒนาควบคู่กับการทำ R&D เพื่อให้ตัวผลลัพธ์ของ Software นั้นสามารถตอบโจทย์ต่อการเปลี่ยนแปลงอันรวดเร็วในโลกปัจจุบันของทั้งสามมุมมอง
หลังจากที่เราได้เข้าใจความหมายของโมเดลการพัฒนาผลิตภัณฑ์ซอฟต์แวร์ในทั้งสองโมเดลกันแล้ว ในลำดับถัดไป ผมขอแนะนำวิธีการเลือกใช้โมเดลในการพัฒนาผลิตภัณฑ์ซอฟต์แวร์อย่างไรให้ตอบโจทย์ต่อวัตถุประสงค์ของการพัฒนาผลิตภัณฑ์ซอฟต์แวร์มากที่สุด
Photo credit : www.forbes.com/advisor/business/agile-vs-waterfall-methodology
การเลือกใช้ Waterfall Model
Waterfall model มักเหมาะกับการพัฒนาที่มีกรอบแนวคิดที่ชัดเจนในมุมมองดังนี้
1. การใช้งานของ User : เมื่อมั่นใจว่า ผลลัพธ์ของการพัฒนาผลิตภัณฑ์ซอฟต์แวร์นั้นจะสามารถตอบสนองต่อวัตถุประสงค์ของการใช้งานของ User ในทุก ๆ ช่วงเวลาระหว่างการพัฒนา
2. ความเป็นไปได้ในเชิง Technical : เมื่อมั่นใจว่า Technology ที่เลือกใช้นั้น ในการพัฒนาจะสามารถตอบสนองต่อวัตถุประสงค์ ในทุก ๆ ช่วงเวลาระหว่างการพัฒนา
3. ความเป็นไปได้มุมของธุรกิจ : เมื่อมั่นใจว่า ผลิตภัณฑ์ซอฟต์แวร์นั้นจะสามารถตอบโจทย์วัตถุประสงค์ของธุรกิจ ในทุก ๆ ช่วงเวลาระหว่างการพัฒนา
ตัวอย่างเช่น การพัฒนาระบบเก็บข้อมูลแบบดิจิตอลเพื่อแก้ปัญหาเฉพาะจุด
การเลือกใช้ Agile Model
Agile Model มักเหมาะกับการพัฒนาผลิตภัณฑ์ซอฟต์แวร์ในระยะยาว เนื่องจากการเปลี่ยนแปลงอันรวดเร็วของพฤติกรรมการใช้ผลิตภัณฑ์ซอฟต์แวร์ของผู้บริโภค การเจริญเติบโตของเทคโนโลยี และการเปลี่ยนแปลงของห่วงโซ่อุปทานของอุตสาหกรรม จึงทำให้ Agile Model สร้างความได้เปรียบในเชิงประสิทธิผล เนื่องจากการวัดผลแบบ Micro ใน Iteration สั้น ๆ จะส่งผลให้ภาคธุรกิจสามารถมั่นใจได้ว่า ผลลัพธ์ของผลิตภัณฑ์ซอฟต์แวร์นั้นจะตอบสนองต่อทั้งสามมุมมองในช่วงเวลานั้นอย่างแน่นอน นอกเหนือจากนั้น Agile model ยังสามารถสร้างความได้เปรียบในเชิงความยืดหยุ่นต่อการปรับเปลี่ยนผลิตภัณฑ์ซอฟต์แวร์ให้ตอบสนองต่อวัตถุประสงค์ที่เปลี่ยนแปลงในทุกๆช่วงเวลา ตัวอย่างเช่น การพัฒนา Digital Product หรือการพัฒนา Internal software ที่มีวัตถุประสงค์ในการดำเนินการในระยะยาว หรือมี Scale ที่ใหญ่ และอาศัยการพัฒนาที่ใช้เวลานาน
ทั้งนี้ทุก ๆ แนวปฏิบัติ เป็นหน้าที่ของภาคธุรกิจที่ต้องพิจารณาข้อดีข้อเสีย รวมถึงความเหมาะสมที่จะนำมาใช้บริหารการพัฒนาผลิตภัณฑ์ซอฟต์แวร์ เพราะความสำเร็จล้วนมีปัจจัยประกอบมากมายที่แตกต่างกันไป และหากภาคธุรกิจสามารถเลือกแนวทางปฏิบัติที่เหมาะสมในแต่ละโครงการได้ จะทำให้ภาคธุรกิจสามารถสร้างผลิตภัณฑ์ซอฟต์แวร์ที่มีประสิทธิภาพและประสิทธิผล ซึ่งจะนำไปสู่การสร้างความได้เปรียบของภาคธุรกิจในเวทีโลก