Agile Software Development คืออะไรครับ
Agile เป็น Model ในการพัฒนา Software รูปแบบนึงครับ
เป็น Model ที่แบ่งงานออกเ็ป็นส่วนๆ ย่อยๆ แล้วทยอยส่งให้ลูกค้าเป็นส่วนๆ
ถ้าพูดถึง Model เหล่านี้เราคงคุ้นเคยกับ Waterfall Model
เก็บความต้องการ -> ออกแบบระบบ ->
พัฒนา -> ทดสอบ -> ติดตั้ง
โดยมากจะนิยมกันแบบนี้ครับซึ่งก็ใช้ได้ผลหรือไม่ก็แล้วแต่งานแล้วแต่การบริหารจัดการ
ในส่วนนี้ผมจะไม่บอกว่าอะไรดีอะไรไม่ดี แต่จะเอาข้อดีข้อเสียของแต่ละแบบมาเล่าให้ฟัง
Waterfall Model ดีตรง แบ่งงานเป็นลำดับขึ้นตอนที่ชัดเจนว่าทำอะไรก่อนหลัง
แต่มีข้อเสียตรงที่กว่าลูกค้าจะได้ทดลองใช้งานต้องรอจนจบขั้นตอนสุดท้าย
แล้วการ เก็บความต้องการ ถ้าหากเป็นระบบใหญ่ๆ แล้วต้องเำก็บให้ละเอียดๆ เพื่อไม่ให้หลุดเนี่ยต้องใช้เวลานาน เรียกได้ว่าถ้าใช้ Agile อาจจะส่งมอบได้หลาย Phase แล้วก็เป็นได้
และอีกอย่างปัญหาที่เจอคือการเก็บ Requirement จะดีแค่ใหนละเอียดแค่ใหนตราบใดที่ลูกค้ายังไม่ได้ทดลองใช้ก็มักจะยังไม่รู้ความต้องการที่แท้จริง และอย่าว่าแต่ลูกค้าเลยครับตัวเราคนทำเองก็เหอะถ้ายังไม่ได้ลง Develop จริงๆก็ยังไม่รู้ข้อจำกัดหรือปัญหาที่จะเกิดขึ้น
ด้วยเหตุนี้จึงมักจะเกิดปัญหาตามมาบ่อยๆว่าพอถึงขึ้นตอน Test สิ่งที่ได้ไม่ตรงตามความต้องการของลูกค้า หรือมี Bug เกิดขึ้นมากมายซึ่งกว่าจะรู้ตัวก็เป็นช่วงท้ายของ Project แล้ว จะแก้ไขอะไรก็ไม่ทันการถ้าเกิดว่าโชคดีตอนเก็บความต้องการทำเอกสารไว้ดีหน่อยก็เอามายันกับลูกค้าได้ว่าทำตามที่เก็บความต้องการมาแต่แรกแต่มันก็คงเป็นแค่เครื่องมือที่เอาไว้ให้เราเอาตัวรอดไม่ให้ถูกปรับหรือโดนลูกค้าด่า ส่วนความซวยก็ตกที่ลูกค้าคนที่ให้ Requirement เรามานั่นแหละครับต้องทนใช้ Software ที่ไม่ตรงกับความต้องการโดยเลี่ยงไม่ได้
สรุปว่าปัญหาของ Waterfall Model คือ
1. ลูกค้าจะไม่รู้ความต้องการของตัวเองจนกว่าจะได้ทดลองใช้งาน
2. บางครั้งคน Develop ก็ยังไม่รู้ข้อจำกัดหรือปัญหาจนกว่าจะได้ลงมือ Develop
3. กว่าลูกค้าจะได้ทดลองใช้งานก็ตอนท้ายซึ่งแทบจะไม่มีเวลาเปลี่ยนแปลงแก้ไขอะไรอีกแล้ว T_T
Model นี้น่าจะเหมาะกับงานขนาดเล็กที่ไม่ซับซ้อนมาก
หรือเป็นงานที่ คนทำมีความชำนาญในด้านนั้นมากๆ หรืออาจจะเป็นงานที่มี Product อยู่แล้วสามารถให้ลูกค้าลองเล่นเพื่อเห็นภาพแต่แรก
เห่อๆ เขียนมาซะเยอะยังไม่มีอะไรที่เกี่ยวข้องกับ Agile ซักเท่าไรเลยแฮะ T_T บ่นเรื่อง Waterfall Model ซะเยอะ 55+ เอาเป็นว่า Agile ก็เอามาแก้ปัญหาข้างต้นแหละครับคือ เก็บความต้องการในภาพรวมมาก่อน แล้วแบ่งงานออกเป็นส่วนๆ ตามลำดับความสำคัญ แล้วก็ลงมือทำทีละส่วนเสร็จแล้วก็ส่งให้ลูกค้าทดลองใช้งาน เอาไว้เดี๋ยวจะมาเล่าต่อนะ ฝนเริ่มมืดมาแระกลับก่อนดีกว่า