Agile Manifesto: 4 Keys value of Agile.
Agile Manifesto ประกอบไปด้วย 4 หัวข้อใหญ่ แต่ละหัวข้อเป็นการเปรียบเทียบกันระหว่างสองอย่างที่มีผลต่อการพัฒนา Software และชี้ให้เห็นว่าเราควรให้ความสำคัญกับเรื่องใดมากกว่ากัน เพื่อให้การพัฒนาประสบความสำเร็จ
Individuals and Interactions Over Processes and Tools.
- Individuals and Interactions : คงปฏิเสธไม่ได้ว่า ความสัมพันธ์ระหว่างบุคคลมีผลโดยตรงต่อการทำงานเป็นทีมเป็นอย่างยิ่ง ความสัมพันธ์ที่ดีมีผลทำให้การสื่อสารกันเป็นไปในทิศทางที่ดี การสื่อสารที่มีคุณภาพย่อมนำไปสู่ความสามัคคีร่วมแรงร่วมใจ และท้ายที่สุดย่อมก่อเกิดความไว้เนื้อเชื่อใจซึ่งกันและกัน เมื่อทีมมีสิ่งเหล่านี้ครบถ้วนย่อมไม่มีอุปสรรค หรือข้อจำกัดใด ๆ ที่จะยับยั้งไม่ให้ทีประสบความสำเร็จ จากผลการศึกษาวิจัยพบว่า ไม่มีการสื่อสารใด ที่จะมีประสิทธิภาพดีเท่ากับการพูดคุยทำความเข้าใจกันต่อหน้า แต่ก็ไม่ทุกทีมเสมอไปที่มีโอกาศนั่งทำงานด้วยกัน อยู่ในออฟฟิศเดียวกัน หลายทีมที่ทำงานร่วมกันแต่อยู่กันคนละที่ คนละทวีป นอกจากปัญหาเรื่องระยะทางแล้ว เวลาก็เป็นอุปสรรคไม่น้อย สำหรับ co-located ทีม ดังนั้นกระบวนการในการสร้างปฏิสัมพันธ์ย่อมแตกต่างไปจากทีมที่อยู่ที่เดียวกัน
- Processes and Tools: ถึงแม้ว่าเราจะให้ความสำคัญกับความสัมพันธ์ของคนในทีมมากกว่า Process หรือ Tools แต่ก็ใช่จะหมายความว่า Tools ไม่จำเป็นสำหรับทีมอีกต่อไป ประการสำคัญที่เราใช้เป็นเกณฑ์ในการพิจารณาว่าควรใช้ Process หรือ Tools อะไรบ้างก็คือ Process หรือ Tools นั้นสามารถช่วยให้ความสัมพันธ์ของคนในทีมดีขึ้นหรือไม่ หากสามารถช่วยให้เราบรรลุวัตถุประสงค์นั้นได้ง่ายขึ้น ก็ควรค่าแต่การนำมาใช้งาน
สิ่งที่สำคัญที่สุดคือทุกคนในทีมต้องมีความมุ่งมั่น ตั้งใจที่จะสร้างปฏิสัมพันธ์ที่ดีต่อกัน เพื่อให้บรรยากาศในการทำงานเป็นไปอย่างราบรื่น
Working software over comprehensive documentation
- Working Software : นักพัฒนาทุกคนล้วนคาดหวังว่าสิ่งที่เขาสร้าง หรือคิดค้นขึ้นมา มีประโยชน์และใช้งานได้จริง ความหมายของคำว่า Working Software ค่อนข้างที่จะกว้าง อะไรคือความหมายที่แท้จริงของคำ ๆ นี้ในมุมมองของ Agile กันแน่ ใช่หมายถึง Software ที่ไม่มีข้อบกพร่องหรือ Defects หรือไม่ หรือจะเป็น Software ที่ปราศจาก Bug ใช่หรือไม่ หรือจะเป็น Software ที่ผ่านการทดสอบในทุกขั้นตอนแล้วใช่หรือไม่? - สิ่งที่ Agile คาดหวังมากที่สุดคือคุณภาพของ Software และการที่เราจะได้มาซึ่ง Software ที่มีคุณภาพ ก็ต้องทำให้มันปราศจากข้อบกพร่อง, Bugs และผ่านการทดสอบอย่างละเอียดทุกขั้นตอน นอกจากตัว Software แล้ว สิ่งต่าง ๆ ที่จะสามารถช่วยให้การใช้งานมีประสิทธิภาพดีขึ้นเช่น user guides, help-system และอื่น ๆ ก็ถือเป็นส่วนที่สำคัญไม่ด้อยไปกว่ากัน ดังนั้น คำว่า Working Software ก็คือ Software with Quality บวกกับอะไรก็ตามที่จะช่วยให้การใช้ Software นั้น ๆ เป็นไปอย่างมีประสิทธิภาพ
- Comprehensive Documentation : ในมุมมองของ Agile แล้ว User manual, Installation guides, Help Systems หรือเอกสารใด ๆ ก็ตามที่จะช่วยให้การใช้งานมีประสิทธิภาพยิ่งขึ้น ล้วนเป็นส่วนหนึ่งของ Software ทั้งหมด คำว่า Comprehensive Document ในมุมมองของ Agile หมายถึงเอกสารต่าง ๆ ที่ไม่ได้มีส่วนช่วยให้การใช้งานมีประสิทธิภาพขึ้นหรือเอกสารที่ไม่ช่วยให้การทำงานหรือการสื่อสารภายในทีมดีขึ้น สำหรับแนวทางของ Agile เน้นหนักไปในเรื่องของ Communication มากกว่า Documentation ดังนั้นสิ่งที่เราต้องพิจารณาเมื่อจะต้องทำเอกสารคือ เรากำลังจะสื่อสารอะไร ถึงใคร และมีวิธีอื่นใดที่จะทำให้การสื่อสารของเราถึงผู้รับสารมีประสิทธิภาพกว่าการเขียนเอกสารหรือไม่
Customer Collaboration over Contract Negotiation
- Customer Collaboration : การมีส่วนร่วมของลูกค้าสำหรับ Agile จะเน้นหนักไปที่ "What" มากกว่าคำว่า "How". ลูกค้าต้องการอะไร ผลลัพท์แบบไหนที่จะทำให้ลูกค้าพึงพอใจ สำหรับการทำงานในรูปแบบเดิมเช่น Waterfall จะเน้นไปทั้งสองอย่าง ทำให้บ่อยครั้งที่เสียเวลาไปกับกับหา Solution เพื่อตอบสนองสิ่งที่ลูกค้าต้องการไปมากแต่เมื่อเริ่มการทำงานจริงกลับพบว่า Solution ที่เราทำบนกระดาษ ไม่อาจตอบสนองสิ่งที่ลูกค้าต้องการได้จริง หรือเมื่อเวลาเปลี่ยนไป สถานการณ์ที่เปลี่ยนไปทำให้ความต้องการของลูกค้าเปลี่ยนไป ทำให้เวลาที่ใช้ไปเสียเปล่า สำหรับแนวทางของ Agile แล้วลูกค้ามีส่วนร่วมกับการพัฒนาอย่างไกล้ชิด ทำให้เห็นผลลัพท์จากการพัฒนาได้อย่างทันท่วงที ทำให้สามารถพิจารณาหรือตัดสินใจได้ทันทีว่านั่นคือสิ่งที่ต้องการหรือไม่ ความเสี่ยงในการทำในสิ่งที่ลูกค้าไม่ต้องการจึงลดลง ส่งผลให้ความพึงพอใจของลูกค้าเพิ่มขึ้น
- Contract Negotiation : ข้อตกลงส่วนใหญ่ มักจะมองข้ามเรื่องความร่วมมือระหว่างลูกค้ากับผู้พัฒนาเพื่อที่จะทำให้การทำงานประสบความสำเร็จ โดยส่วนใหญ่จะเน้นหนักไปที่การลงโทษหากฝ่ายใดฝ่ายหนึ่งไม่สามารถทำตามข้อตกลงมากกว่า ดังนั้น Contract จึงกลายเป็นเสมือนเครื่องมือที่ทั้งสองฝ่ายใช้อ้างอิงการในต่อสู้กันมากกว่าที่จะใช้สำหรับช่วยให้ทั้งสองฝ่ายร่วมมือกันในการทำงานให้ประสบผลสำเร็จ สำหรับมุมมองของ Agile แล้ว Contract ควรจะเป็นสิ่งที่ช่วยให้ทั้งสองฝ่ายทำงานไปด้วยกันไปในทิศทางเดียวกันอย่างมีประสิทธิภาพ และรับผิดชอบต่อผลลัพท์ด้วยกัน มิฉะนั้นแล้วก็ไม่จำเป็นต้องมี Contract หากมันกลายเป็นเครื่องมือในการต่อสู้ของทั้งสองฝ่าย กลายเป็นอุปสรรคต่อการพัฒนา
Responding to Change over Following a Plan.
- Responding to Change : เมื่อพูดถึงการเปลี่ยนแปลงในมุมมองของ Agile แล้วไม่ใช่แค่การเปลี่ยนแปลงเพียงอย่างเดียว หากแต่หมายรวมไปถึงทิศทาง หรือ Direction ในการเปลี่ยนแปลงด้วย ในแง่ของ Software คือการเปลี่ยนแปลงเพื่อเพิ่มความพึงพอใจให้กับลูกค้า ส่งมอบสิ่งที่มีประโยชน์ต่อลูกค้าอย่างแท้จริง การเปลี่ยนแปลงนี้ไม่ได้จำกัดอยู่แต่กับเพียงความต้องการของลูกค้า หากแต่ยังรวมไปถึงกระบวนการ ทักษะ วิธีการต่าง ๆ ด้วย ในแง่มุมของการนำไปใช้งานแล้วมันคือ การสร้างกระบวนการการทำงานที่สามารถตอบสนองต่อการเปลี่ยนแปลงได้อย่างรวดเร็ว เพื่อลดความเสี่ยง ลดต้นทุน ลดเวลา และทรัพยากรต่าง ๆ ให้ได้มากที่สุด
- Following a Plan : สำหรับ Agile แล้วการทำงานตามแผนงานที่วางไว้มีประโยชน์หรือคุณค่าน้อยกว่า ความสามารถในการรับมือหรือตอบสนองต่อการเปลี่ยนแปลง แต่นั่นไม่ได้หมายความว่าการวางแผนจะไม่มีประโยชน์และไม่ควรทำ แต่แผนการทุกอย่างควรตั้งอยู่บนพื้นฐานที่จะช่วยให้ทีมทำงานได้อย่างมีประสิทธิภาพและประสิทธิผล ดังนั้นการวางแผนยังคงเป็นส่วนสำคัญที่จะทำให้การทำงานประสบความสำเร็จหรือล้มเหลว สำหรับ Agile การวางแผนประกอบด้วยแผนงานสำคัญ 5 แผนงาน ซึ่งรายละเอียดได้อธิบายไว้ในบท Agile Planning
และนี่คือบทสรุปของ Agile Manifesto ตามความเห็นส่วนตัวของผู้เขียน