มารู้จัก Agile Development กันเถอะ

Posted by kannique On October - 3 - 20093 COMMENTS
1 Star2 Stars3 Stars (No Ratings Yet)
Loading ... Loading ...

Agile

ใครที่รู้จัก Software Development Life Cycle (SDLC) แบบดั้งเดิม เช่น Waterfall หรือ Iterative อยู่แล้ว ก็ไม่ยากเลยครับที่จะทำความเข้าใจกับ Agile Development เพราะว่าเจ้านี่เป็นสมาชิกใหม่ในบ้าน SDLC นั่นเอง แล้วทำไมต้องมี Agile ขึ้นมาหละ? ส่วนตัวผมเองคิดว่าก็เพื่อเติมเต็มส่วนที่ SDLC เก่าๆทำได้ไม่ดีนั่นแหละครับ … แล้วของเก่าไม่ดียังไง?

Success

การที่จะพูดว่า Project นี้ประสบความสำเร็จหรือไม่ เราจะวัดจากอะไรดีครับ? คำตอบมีมากมายแตกต่างกันไปสำหรับแต่ละองค์กร ซึ่งส่วนใหญ่แล้วเนี่ยะก็จะหนีไม่พ้นที่จะกำหนดคำจำกัดความของความสำเร็จไว้ว่า Project นี้จะประสบความสำเร็จก็ต่อเมื่อ ทำเสร็จตรงตามเวลา (time) ค่าใช้จ่ายอยู่ในงบประมาณ (cost) และได้ผลงานที่มีคุณภาพตามที่ตั้งไว้ (quality) อ่านผ่านๆก็เหมือนดูดีครับ แต่ … มันมีความไม่ถูกต้อง ไม่ครอบคลุมอยู่ในประโยคนั้นด้วย

From CIO Magazine:

Projects that were found to meet all of the traditional criteria for success?time, budget and specifications?may still be failures in the end because they fail to appeal to the intended users or because they ultimately fail to add much value to the business.

… Similarly, projects considered failures according to traditional IT metrics may wind up being successes because despite cost, time or specification problems, the system is loved by its target audience or provides unexpected value. For example, at a financial services company, a new system… was six months late and cost more than twice the original estimate (final cost was $5.7 million). But the project ultimately created a more adaptive organization (after 13 months) and was judged to be a great success?the company had a $33 million reduction in write-off accounts, and the reduced time-to-value and increased capacity resulted in a 50 percent increase in the number of concurrent collection strategy tests in production.*

ข้อความข้างบนบ่งชี้ให้เห็นถึงปัญหาได้อย่างชัดเจนเลยครับ โดยสรุปก็คือถึงจะทำเสร็จตรงเวลาที่งบประมาณที่กำหนดและมีคุณภาพดี แต่สิ่งนั้นอาจจะไม่ได้เป็นที่ต้องการของตลาดอย่างแ้ท้จริง เราจะพูดได้ว่า Project นี้ประสบความสำเร็จหรือ?

ในทางตรงกันข้าม ถ้าทำเสร็จช้าไปครึ่งปี ใช้งบประมาณเกินไป 50% และทำ features ได้ไม่ครบ แต่ระบบนี้กลับเป็นที่ถูกใจลูกค้าและทำเงินได้มากกว่าที่ตั้งเป้าไว้หละ เราจะพูดว่า Project นี้ล้มเหลวหรอ?

ในโลกความเป็นจริงแล้วการจะกำหนดความหมายของ Project Success และ Project Failure มันมีอะไรมากกว่าแค่คำว่า Time Cost และ Quality ครับ ซึ่ง SDLC แบบเดิมๆยังคงมองภาพตรงนี้ได้ไม่ครอบคลุมนัก ดังนั้น Agile Development จะเข้ามาเติมเต็มช่องว่างนี้ได้ครับ แนวคิดของ Agile นั้นจะพยายามสร้างคำจำกัดความของคำว่า Project Success ใหม่ครับ โดยเน้นองค์ประกอบสามส่วน

1. Organizational Success

Agile เน้นความสำคัญในการสร้างคุณค่า (value) และลดค่าใช้จ่าย (cost) ให้กับองค์กร ซึ่งทั้งสองส่วนนี้มีผลโดยตรงกับการเพิ่มผลตอบแทนจากการลงทุน (Return On Investment)

เริ่มแรก Agile จะเน้นความสำคัญของ Business Expert เข้ามามีส่วนร่วมอย่างใกล้ชิดกับ Development Team เพื่อที่จะพัฒนาระบบที่เป็นที่ต้องการของตลาดอย่างแท้จริง และส่งมอบงาน (release) ให้ลูกค้าบ่อยๆเพื่อที่จะสร้างรายได้ให้องค์กรอย่างต่อเนื่อง

ในขณะเดียวกัน Agile จะช่วยลดค่าใช้จ่ายขององค์กรโดยการป้องกันความบกพร่องของระบบ (bug) ให้เกิดขึ้นน้อยที่สุดเพื่อตัดปัญหาค่าใช้จ่ายในการแก้ไข้และป้องกันการยกเลิก Project ระหว่างการพัฒนาซึ่งเป็นเรื่องที่เสียค่าใช้จ่ายโดยเปล่าประโยชน์

2. Technical Success

การเพิ่มคุณภาพของระบบ (Technical Success) จะส่งผลโดยตรงกับ Operational Success ครับ กระบวนการของ Agile ที่นิยมมากเรียกว่า Extreme Programming (XP) นั้นจะช่วยให้จุดนี้เ็ป็นจริงขึ้นมาได้โดยวิธีการต่างๆมากมาย เช่น Pair Programming, Continuous Integration, Automated Testing, และ Test-Driven-Development ซึ่งผมจะขยายความแต่ละวิธีการในโอกาสหน้าครับ

3. Personal Success

Agile มุ่งเน้นให้ทุกคนในทีมทำงานได้อย่างมีความสุขและบรรลุจุดมุ่งหมายของแต่ละตำแหน่งได้ เช่น

Executives and senior management: ได้ความคุ้มค่าจากการลงทุน (ROI) ใน Agile Project

Users, stakeholders, domain experts, and product managers: สามารถพัฒนาระบบที่มีคุณภาพตรงตามความต้องการที่แท้จริงของตลาด อีกทั้งยังสามารถส่งมอบระบบได้บ่อยขึ้น

Project and product managers: สามารถตอบสนองต่อความเปลี่ยนแปลงทางธุรกิจได้อย่างทันท่วงที และเพิ่มความพึงพอใจของลูกค้าต่อระบบ

Developers: มีความสุขที่ได้พัฒนาระบบที่มีคุณภาพ ไม่ต้องกังวลเรื่อง estimate และ schedule อีกต่อไป

Testers: มีความสุขที่ได้เป็นส่วนสำคัญของทีม มีส่วนร่วมในการพัฒนาระบบตั้งแต่ต้น บรรลุความท้าทายได้เรื่องของคุณภาพของงาน

ผมหวังว่าถึงตรงนี้เพื่อนๆคงจะมองเห็นความน่าสนใจของ Agile Development มากขึ้นนะครับ บทความหน้าผมจะเล่าต่อถึงเรื่องของหลักการและหลักปฏิบัติของ Agile ต่อไปครับ

ขอบคุณครับ

Related posts:

  1. Waterfall .. Iterative .. Agile เลือกใช้อะไรดี?
  2. ผลสำรวจ “ตอนนี้ใช้ Software Development Life Cycle แบบไหนกันอยู่ครับ?”
  3. Agile Development — First Chapter Videos
  4. Chapterpiece.Meeting.3: User Story for Agile Development
  5. ถามมา-ตอบไป Agile Development

3 Responses to “มารู้จัก Agile Development กันเถอะ”

  1. [...] มารู้จัก Agile Development กันเถอะ [...]

  2. [...] Waterfall ตรงนี้จะช่วยทำให้ Technical Success [...]

  3. [...] Agile ไว้ตัวเบ้อเริ่มเลย [...]

Leave a Reply