[สรุปหนังสือ XP 2nd Edition by Kent Beck] : บทที่ 1 What is XP?
Nov 4 · 2 min read

Extreme Programming (XP) คือ เป็นระเบียบวิธี (Methodology) หนึ่งในการพัฒนาซอฟเเวร์ โดยจุดเด่นที่เเตกต่างจากระเบียบวิธีอื่น คือ
- รอบการพัฒนาที่สั้นลง (Short Development Cycle) ทำให้เห็นผลเร็ว, ชัดเจน เเละให้ feedback อย่างต่อเนื่อง
- เป็นวิธีการทำงานเเบบค่อยๆ เพิ่ม (Incremental Planning Approach)
- ตารางการทำงานสามารถปรับเปลี่ยนได้ตามความต้องการของธุรกิจที่เปลี่ยนไป (Flexible Schedule Ability Responding to Business Change)
- ใช้ Automated Test (ที่เขียนโดยโปรเเกรมเมอร์, ลูกค้า หรือเทสเตอร์) ในการมอนิเตอร์กระบวนการพัฒนา
- ใช้การพูดคุยเเบบเห็นหน้าเห็นตากัน (Oral Communication), Test, เเละ Source Code ในการสื่อสารเกี่ยวกับระบบ
- ใช้กระบวนการการออกเเบบอย่างค่อยเป็นค่อยไป (Evolutionary Design Process)
- เน้นที่การร่วมมือกันทำงานอย่างใกล้ชิดของทุกคนที่เกี่ยวข้อง
ใน 2nd Edition เล่มนี้ ได้อธิบายความเกี่ยวกับ XP เพิ่มเติมจาก 1st Edition ว่า
- XP is lightweight => ใน XP จะทำงานเท่าที่จำเป็นเพื่อที่จะส่งคุณค่าให้ลูกค้า เเละไม่สามารถทำงานทีละมากๆ เเละเร็วๆ ได้ เเต่ในขณะเดียวกันก็จะไม่หยุดกระบวนการทำงานกลางคัน ทำให้จำเป็นต้องศึกษาเกี่ยวกับความรู้ทาง Technical ให้เข้าใจทั้งหมดการเริ่มกระบวนการ
- XP is a methodology addressing for software development => XP เป็นระเบียบวิธีที่เน้นข้อจำกัดเรื่องการพัฒนาซอฟเเวร์, เเต่ไม่ได้มีข้อกำหนดปฎิบัติเกี่ยวกับ Project Management, Financial justification of Projects, operations, marketing, or sales
- XP can work with team of any size => XP สามารถใช้ได้กับการทำงานในทุกๆ ขนาดโครงการ (เเต่การปฎิบัติงานอาจจะปรับเปลี่ยนไปตามจำนวนคนที่เข้าร่วมโครงการ)
- XP adapts to vague or rapidly changing requirements => XP ปรับเปลี่ยนไปได้ตามสถานการณ์ เเละความต้องการที่เปลี่ยนไป
นอกจากนี้ XP ยังเป็นวิธีการทำงานในโลกการทำงานพัฒนาซอฟเเวร์ในโลกยุคสมัยปัจจุบัน ที่เน้นทางทั้งเรื่องของทักษะการทำงานที่ดี เเละการประสบความสำเร็จในความสัมพันธ์ระหว่างคนทำงานด้วย
XP จะตั้งสมมติฐานว่า
- คนในทีมต้องมองตัวเองเป็นส่วนหนึ่งของทีม โดยมีเป้าหมาย (One Goal) การทำงาน เเละเเผนการทำงานที่พร้อมปฎิบัติเดียวกัน
- คนในทีมทุกคนอยากทำงานร่วมกัน
- การเปลี่ยนเเปลงสามารถเกิดขึ้นได้โดยที่มีต้นทุนไม่เเพง
- ทุกคนในทีมต้องการเติบโตขึ้น, พัฒนาทักษะการทำงาน เเละความสัมพันธ์
- ทุกคนในทีมต้องการสร้างการเปลี่ยนเเปลงเพื่อให้ไปถึงเป้าหมายที่ตั้งไว้ร่วมกัน
XP ได้ออกเเบบการทำงานเพื่อครอบคลุมความเสี่ยงในกระบวนการพัฒนาซอฟเเวร์ครอบคลุมประเด็นต่างๆไว้ดังนี้
- ตารางการทำงานเลื่อน / Schedule Slips -> เนื่องจาก XP จะเเบ่งการทำงานเป็น Cycle สั้นๆ ดังนั้นขอบเขตในการเลื่อนจำกัดอยู่เเค่ในช่วงเวลา เช่นในเเต่ละรอบการทำงาน(Iteration) XP จะวางเเผนเป็นงานสั้นๆ ดังนั้นทีมจะเเก้ไขได้ในระหว่าง cycle โดยต้องเลือกการทำงานที่สำคัญมากที่สุดก่อน (High Priority Feature First)
- ยกเลิกโครงการ / Project Canceled -> เนื่องจากปกติ XP จะเน้นการทำงานที่เอาส่วนของธุรกิจนำส่วนของงานพัฒนาโดยการเลือกทำงานที่ตอบโจทย์ทางธุรกิจมากที่สุดก่อน ดังนั้นจะมีความผิดพลาดได้น้อย
- ระบบใช้งานไม่ได้ / System goes sour -> XP จะเน้นที่การสร้างเเละใช้ Automated Test ที่เน้นการทดสอบเป็นส่วนๆ (ซึ่งทำให้สามารถทดสอบระบบได้ทุกๆ ครั้งที่มีการเปลี่ยนเเปลง) ถ้ามีปัญหาก็จะค่อยๆเเก้ไม่สะสมปัญหา
- ระบบมีข้อบกพร่อง / Defect Rate -> ใน XP จะทดสอบการทำงานทั้งในมุมมองของโปรเเกรมเมอร์ที่ทดสองเเบบฟังก์ชันต่อฟังก์ชัน เเละมุมของลูกค้าที่ทดสอบทุกฟีเจอร์งาน ดังนั้นข้อบกพร่องในมุมต่างๆ จะถูกพบได้เร็ว
- ความเข้าใจผิดทางธุรกิจ / Business Misunderstood -> ใน XP จะกำหนดให้คนทางภาคธุรกิจเป็นคนสำคัญอันดับเเรกอยู่เเละ โดยสเปกของโครงการจะสามารถเปลี่ยนเเปลงได้ระหว่างการพัฒนาโดยการเรียนรู้จากคนจากภาคธุรกิจ เเละทีมพัฒนาจะปรับงานให้ทันเมื่อธุรกิจเปลี่ยน
- ทำผิดฟีเจอร์ / False Feature Rich -> ใน XP จะทำงานโดยเรียงตามลำดับความสำคัญอยู่เเล้ว
- คนทำงานลาออก / Staff Turnover -> ใน XP จะมีการกำหนดข้อตกลงให้โปรเเกรมเมอร์ต้องรับผิดชอบที่จะทำงานให้เสร็จ เเละมีการกำหนดประมาณการณ์ช่วงเวลาไว้ตลอด ดังนั้นจึงมีโอกาสน้อยที่คนจะออกไปกลางคัน นอกจากนี้ XP ยังสนับสนุนการสื่อสารของ เเละการประสานงานของคนในทีม
โดยสรุปเเล้ว XP คือ
- การยกเลิกการทำงานเก่าที่ไม่มีประสิทธิภาพทั้งในด้านเทคนิค เเละความสัมพพันธ์ของคนทำงาน เเละเเทนที่ด้วยวิธีการทำงานเเบบใหม่
- เน้นให้คนทำงานพอใจกับตัวเองในพยายามของวันนี้
- เน้นการเติบโต พัฒนาให้ดีขึ้นเรื่อยๆ
- เน้นให้ทุกคนมุ่งมั่นเพื่อเป้าหมายร่วมของทีม
- เน้นการสนองความต้องการของคนโดยผ่านการพัฒนาซอฟเเวร์