Tuesday, 10 July 2012

The Principle of Agile Development




วันนี้ผมได้อ่านบทความหนึ่งชื่อว่า The Principle of Agile Development เป็นหลักในการพัฒนา Software ที่มุ่งเน้นความพึงพอใจของลูกค้า โดยอาศัยการสื่อสารกับลูกค้าเป็นระยะๆในช่วงของการพัฒนางาน เห็นว่าเป็นบทความที่ดี ก็เลยอยากนำมาเล่าให้ฟัง ในบทความจะเขียนถึงหลักการสำคัญ 12 ข้อ ดังนี้ครับ

1. Customer Satisfaction

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

2. Adapt to Change Requirements

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

3. Deliver Frequently

การหมั่นส่งผลงานเป็นระยะๆจะช่วยสร้างความมั่นใจให้กับลูกค้า ซึ่งมีผลโดยตรงกับความสัมพันธ์ระหว่างเราและลูกค้า Agile Development เน้นการส่งผลงานให้กับลูกค้าอย่างต่อเนื่อง เป็นระยะๆ แต่ไม่จำเป็นต้อง Full Featured ซึ่งในแต่ละรอบที่ส่งงาน เราอาจจะเพิ่ม Feature ไปทีละหนึ่งอย่างไปเรื่อยๆ ซึ่งนอกจะทำให้ลูกค้าเห็น Progress จริงของงาน เรายังสามารถได้รับ Feed Back จากลูกค้าเพื่อนำกลับมาปรับปรุงแก้ไขให้ให้ตรงกับที่ลูกค้าต้องการมากที่สุด (ซึ่งการแก้ไขเปลี่ยนแปลงในขั้นตอนนี้ ถือว่าเป็นข้อดี อย่างน้อยก็ดีกว่าไปรู้ทีหลังแล้วต้องมาปรับแก้ ซึ่งจะทำได้ยากกว่าหรือใช้เวลานานกว่า)

4. Work Together Frequently

Agile มุ่งเน้นที่ความพึงพอใจของลูกค้า การให้ลูกค้าเข้ามามีส่วนร่วมในการทำงาน หรือมีการสื่อสารกันอย่างสม่ำเสมอจะทำให้เราได้รับ Feedback ที่จะสามารถนำไปปรับปรุงผลงานให้ตรงกับความต้องการของลูกค้ามากที่สุด

5. Build Project With Motivated Individuals

สร้างบรรยากาศในการทำงานที่ดี โดยการให้ความช่วยเหลือในด้านต่างๆ ไม่ว่าจะเป็นในเรื่องของเครื่องมือ อุปกรณ์อำนวยความสะดวก สถานที่ทำงาน และที่สำคัญที่สุดก็คือต้องเชื่อมั่นในทีมงานว่าจะสามารถทำงานได้สำเร็จตามวัตถุประสงค์ หลายๆบริษัทสูญเสียพนักงานที่ดีไปเพราะว่าไม่ได้ใส่ใจกับสิ่งเหล่านี้มากพอ ความเชื่อที่ว่า Developer สามารถที่จะแก้ไข File บน Production Server สูญหายไป ซึ่งเป็นสิ่งที่อาจต้องเรียกกลับคืนมา

6. Use Face to Face Communication

พยามพูดคุยกันโดยตรง อาจจะโดยการนัดเจอกัน หรือพูดคุยกันทางโทรศัพท์ ให้หลีกเลี่ยงการสั่งงานผ่าน E-Mail การสื่อสารโดยการพูดคุยกันโดยตรงจะช่วยทำให้ได้รับข้อมูลที่ถูกต้องมากที่สุด และเหนือสิ่งอื่นใดเราต้องเชื่อมั่นซึ่งกันและกัน ซึ่งการพูดคุยกันแบบ Face to Face จะสามารถสร้างความเชื่อมั่นระหว่างกันได้มากกว่า

7. Measure Progress with Working Software

ใช้ผลลัพธ์ของงานเป็นตัววัดผล โดยทั่วไป Software Developers มักจะมีความแตกต่างจาก Employees อื่นๆ  Developer ไม่ต้องการสร้าง Bad Software และมักจะเป็นเช่นนั้น ถ้าหากเราได้ให้อิสระในการทำงานในแบบที่ชื่นชอบ ตราบใดที่งานเสร็จตามที่ลูกค้าต้องการ ลูกค้าก็ยังคงได้รับความพึงพอใจ โดยไม่ได้สนใจว่าจะเราใช้วิธีการอย่างไร

8. Maintain Constant Pace

ประโยชน์ที่ดีที่สุดอย่างหนึ่งของ Agile Process ก็คือ สามารถคำนวณระยะเวลาของ Project ได้ค่อนข้างแม่นยำ หลังจากมีการส่งงานไป 2-3 การคาดคะเนระยะเวลาในการทำงานจะเริ่ม Stable ซึ่ง Dev Team จะสามารถคำนวณในการทำงานได้ค่อนข้างใกล้เคียงความเป็นจริง ซึ่งจะลดปัญหา Ridiculous Deadline ลงได้

9. Pay Attention to Industrial Progress

ปัจจุบันเทคโนโลยีใหม่ๆทั้งด้าน Hardware และ Software มีมาให้ใช้อยู่ตลอดเวลา การพัฒนา Software สมัยใหม่เราต้องคอยติดตามข่าวสาร เพื่อนำมาปรับปรุงเทคนิคในการทำงาน Refactoring มักจะเป็นวิธีการที่ถูกนำมาใช้ในการแก้ปัญหา แต่บางครั้งเราสามารถแก้ปัญหาได้ง่ายกว่าโดยการใช้เทคนิค และ Software Architecture ที่ทันสมัยกว่า

10. Simplicity is Essential

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

11. Self-Organize

สมาชิกในทีมจะต้องมีความรับผิดชอบในตนเองและต่อเพื่อนร่วมงาน และมุ่งมั่นที่จะพัฒนางานให้สำเร็จอย่างมีคุณภาพ

12. Reflect and Adjust

เราต้องคอยประเมินผลการทำงานเป็นระยะ เพื่อที่จะนำไปใช้ปรับปรุงการทำงานให้ดียิ่งขึ้น

โดยสรุปก็คือ Agile Development เป็นการพัฒนาที่แบ่งการพัฒนาออกเป็นส่วนเล็กๆ และส่งมอบให้ลูกค้าเป็นระยะๆ เพื่อได้รับ Feedback จากลูกค้า และนำมาปรับปรุงเพื่อให้ได้ผลลัพธ์ตามแบบที่ลูกค้าต้องการ ข้อดีของ Agile Development คือ สามารถคำนวณระยะเวลาการดำเนินงานได้ค่อนข้างแม่นยำ การพัฒนาในระบบ Agile การสื่อสารและ Environment ในการทำงานเป็นสิ่งที่สำคัญ หากเราสามารถสร้าง Friendly Environment ในการทำงานให้เกิดขึ้นได้สำเร็จ เราจะเห็นได้ว่า Agile Development สามารถช่วยให้งานเสร็จได้เร็วขนาดไหน

แหล่งที่มา: http://net.tutsplus.com/articles/general/the-principles-of-agile-development

No comments:

Post a Comment