Update the Plan
พลาดเดดไลน์แล้วอย่าแค่เลื่อน — ประเมินใหม่และสื่อสารแผนใหม่
คืออะไร
หัวข้อที่มีชื่อว่า “คืออะไร”Update the Plan คือวินัยของทีมที่ว่า เมื่อความจริงของ project เบี่ยงไปจากแผนเดิม — ไม่ว่าจะพลาดเดดไลน์ พลาด milestone หรือแค่รู้สึกว่ากำลังช้ากว่าที่คิด — ห้ามตอบสนองด้วยการเลื่อนวันส่งมอบออกไปแบบไม่คิดอะไร (เช่น “เลื่อนอีกหนึ่งสัปดาห์” โดยไม่มีข้อมูลรองรับ) แต่ต้องหยุดแล้วทำสามอย่างตามลำดับ: ประเมินสถานะจริงของงานที่เหลือ อัปเดตแผนให้สะท้อนความจริงนั้น แล้วสื่อสารแผนใหม่ให้ผู้มีส่วนได้ส่วนเสียทุกฝ่ายรับรู้อย่างตรงไปตรงมา
หลักคิดเบื้องหลังคือประโยคสองประโยคที่มักถูกยกมาคู่กัน — “Hope is not a plan” (ความหวังไม่ใช่แผน) เตือนว่าการแค่หวังว่าจะทันตามเดิมไม่ได้เปลี่ยนความจริงของงานที่เหลือ และ “Failure to plan is planning to fail” (การไม่วางแผนก็คือการวางแผนที่จะล้มเหลว) เตือนว่าการเพิกเฉยไม่อัปเดตแผนเลยก็อันตรายไม่แพ้กัน DevIQ ไม่ได้บอกว่าต้องลงทุนวางแผนมหาศาล แต่ชี้ว่าการคิดล่วงหน้าระดับหนึ่งช่วยได้มาก และเมื่อแผนเดิมพังก็ต้องกล้าปรับให้ตรงกับความจริง
สิ่งสำคัญคือ Update the Plan ไม่ใช่แค่ “การขยับวันที่” แต่เป็น กระบวนการตัดสินใจ — บางครั้งคำตอบที่ถูกต้องอาจไม่ใช่การเลื่อนวันเลย แต่คือการตัดขอบเขตงาน (scope) ลง, จัดลำดับความสำคัญใหม่, เพิ่ม/สลับคน หรือแม้แต่ยกเลิก project นั้นไปเลยถ้าประเมินใหม่แล้วพบว่าไม่คุ้มค่าอีกต่อไป Martin Fowler อธิบายไว้ใน Purpose of Estimation ว่าประมาณการมีอายุสั้นมาก — เขาเปรียบกับผักกาดหอมว่า “good for a couple of days, rather wilty after a week” (ดีอยู่แค่สองสามวัน พอผ่านไปหนึ่งสัปดาห์ก็เหี่ยว) ดังนั้นการประมาณการเดิมที่วางไว้ตอนต้น project ไม่ใช่สัญญาที่ต้องยึดถือตลอดไป แต่เป็นข้อมูล ณ เวลาหนึ่ง ที่ต้อง refresh เมื่อความจริงเปลี่ยน
ทำอย่างไร
หัวข้อที่มีชื่อว่า “ทำอย่างไร”เมื่อพบว่ากำลังจะพลาดเดดไลน์หรือ milestone ให้ทำตามขั้นตอนต่อไปนี้แทนการเลื่อนวันแบบสุ่ม
- หยุดแล้วประเมินสถานะจริง (reassess) — อย่าเดา ให้ตรวจงานที่เหลือจริง ๆ เทียบกับ scope เดิม: อะไรทำเสร็จแล้ว อะไรยังไม่เริ่ม อะไรมี blocker ซ่อนอยู่ ใช้ velocity หรือ throughput จริงของทีมในรอบที่ผ่านมาเป็นฐาน ไม่ใช่ velocity ที่ “อยากให้เป็น”
- หาสาเหตุที่แผนเดิมพลาด — เป็นเพราะ scope โตขึ้นระหว่างทาง (scope creep) เพราะประเมินการณ์ผิดตั้งแต่แรก (planning fallacy) เพราะ dependency ภายนอกล่าช้า หรือเพราะมี technical debt/blocker ที่เพิ่งค้นพบ การรู้สาเหตุจะบอกว่าควรแก้ที่ scope, ที่กำลังคน, หรือที่วันที่
- สร้างแผนใหม่ที่เป็นไปได้จริง — พิจารณาทางเลือกทั้งสามแกนของ project management triangle คือ scope, resources (คน/เงิน) และ time โดยปกติควรปรับ scope หรือ resources ก่อนขยับ time เพราะการเลื่อนวันซ้ำ ๆ โดยไม่แก้ต้นตอจะกัดกร่อนความน่าเชื่อถือของทั้งทีม
- สื่อสารแผนใหม่อย่างตรงไปตรงมาและเร็วที่สุด — แจ้ง stakeholder ทันทีที่รู้ อย่ารอจนถึงวันเดดไลน์เดิมแล้วค่อยบอก ระบุสิ่งที่เกิดขึ้น (context) แผนใหม่ที่เป็นรูปธรรม และขั้นตอนที่กำลังทำเพื่อไม่ให้เกิดซ้ำ ความโปร่งใสแบบนี้สร้างความเชื่อใจได้มากกว่าการเงียบแล้วเลื่อนซ้ำไปเรื่อย ๆ
- เพิ่มความถี่ในการอัปเดตชั่วคราว — หลังพลาดครั้งหนึ่ง ให้รายงานความคืบหน้าถี่ขึ้น (เช่น รายวันหรือทุกสองวัน) จนกว่า project จะกลับเข้าร่องเข้ารอย เพื่อให้ stakeholder เห็นสัญญาณเตือนล่วงหน้าก่อนจะพลาดครั้งถัดไป
- ทำ retrospective สั้น ๆ หลังแผนนิ่งแล้ว — วิเคราะห์ว่าอะไรทำให้ประเมินผิด แล้วนำบทเรียนไปปรับกระบวนการประมาณการครั้งถัดไป แต่ทำขั้นนี้ หลัง จากที่แผนใหม่ถูกสื่อสารและอนุมัติแล้ว ไม่ใช่แทนที่การอัปเดตแผน
แนวทางแบบ agile ช่วยให้ปัญหานี้เกิดขึ้นน้อยลงตั้งแต่ต้น เพราะการทำงานเป็น iteration สั้น ๆ ที่ timebox ไว้ (ดู Timeboxing) ทำให้เห็นสัญญาณว่าช้ากว่าที่คิดได้เร็ว ตั้งแต่ iteration แรก ๆ แทนที่จะมารู้ตัวตอนใกล้ deadline ใหญ่ก้อนเดียวแบบ waterfall — Fowler เรียกสิ่งนี้ว่าการ “re-plan” ที่เกิดขึ้นเป็นธรรมชาติทุก iteration ใน Timeboxed Iterations โดยงานที่ยังไม่เสร็จในกรอบเวลาจะถูกนับว่า “not done” แล้วย้ายไปเป็น story ใหม่ในรอบถัดไป แทนที่จะขยาย iteration ออกไป
flowchart TD
Slip[ตรวจพบว่าจะพลาดเดดไลน์]
Assess[ประเมินสถานะงานที่เหลือจริง]
Cause[หาสาเหตุของความคลาดเคลื่อน]
Options[พิจารณา scope เงิน คน และเวลา]
NewPlan[สร้างแผนใหม่ที่ทำได้จริง]
Communicate[สื่อสารแผนใหม่ให้ stakeholder]
Monitor[ติดตามถี่ขึ้นจนกลับเข้าร่องรอย]
Retro[ทำ retrospective หาบทเรียน]
Slip --> Assess --> Cause --> Options --> NewPlan --> Communicate --> Monitor --> Retro
ตัวอย่าง
หัวข้อที่มีชื่อว่า “ตัวอย่าง”สมมติทีมกำลังทำ feature import ข้อมูลลูกค้าแบบ batch และประเมินไว้ว่าจะเสร็จใน sprint นี้ (สองสัปดาห์) แต่พบว่าเหลืออีกสามวันจะจบ sprint แล้วงานเสร็จไปเพียงครึ่งเดียวเพราะ endpoint ของระบบภายนอกที่ต้องเชื่อมต่อมี rate limit ที่ไม่ได้คาดไว้
แทนที่จะแค่บอกในที่ประชุมว่า “ขอเลื่อนไปอีกสัปดาห์” ทีมทำตามขั้นตอน Update the Plan โดยใช้ backlog item เป็นหน่วยติดตามสถานะ แล้วสื่อสารสรุปสั้น ๆ ให้ stakeholder เช่นบันทึกต่อไปนี้ซึ่งจำลองจาก field งานใน Azure Boards (ตัวอย่างประกอบ ไม่ใช่ code production):
// ตัวอย่างโครงสร้างข้อมูลสำหรับสรุปสถานะแผนงานที่ถูกอัปเดต// ใช้ประกอบการรายงานใน stand-up หรือ status emailpublic sealed class PlanUpdate{ public string MilestoneName { get; init; } = "Customer Batch Import"; public DateOnly OriginalDueDate { get; init; } public DateOnly RevisedDueDate { get; init; }
// สาเหตุของความคลาดเคลื่อน ระบุให้ตรงประเด็น ไม่ใช่ข้อแก้ตัวลอย ๆ public string RootCause { get; init; } = "Third-party API มี rate limit 100 req/min ที่ไม่ได้ระบุใน documentation " + "ทำให้ import 10,000 records ใช้เวลานานกว่าประเมินไว้ 3 เท่า";
// ทางเลือกที่พิจารณาแล้วก่อนตัดสินใจเลื่อนวันที่ public IReadOnlyList<string> OptionsConsidered { get; init; } = new[] { "ลด scope: import เฉพาะลูกค้าที่ active ก่อน แล้วทำ backlog ที่เหลือใน sprint ถัดไป", "เพิ่มคน: ดึง engineer อีกคนมาช่วยทำ retry/backoff logic", "เลื่อนวันที่: ขยับ due date ออกไป 4 วันทำการ", };
// การตัดสินใจสุดท้าย พร้อมเหตุผล public string Decision { get; init; } = "เลือกลด scope เป็นหลัก (import active customers ก่อน) " + "ร่วมกับเลื่อนวันที่ 4 วันทำการ เพื่อให้มีเวลาใส่ retry with exponential backoff";}จุดสำคัญของตัวอย่างนี้คือทีมไม่ได้ตอบด้วยตัวเลขวันที่ใหม่ตัวเดียว แต่แสดง root cause, ทางเลือกที่พิจารณา และ เหตุผลของการตัดสินใจ — ทำให้ stakeholder เข้าใจว่าทำไมแผนถึงเปลี่ยน ไม่ใช่แค่รับรู้ว่าเปลี่ยน ซึ่งเป็นหัวใจของการสื่อสารแผนใหม่อย่างมีคุณภาพ
ประโยชน์และข้อควรระวัง
หัวข้อที่มีชื่อว่า “ประโยชน์และข้อควรระวัง”ประโยชน์
- สร้างความน่าเชื่อถือ — การแจ้งล่วงหน้าพร้อมแผนที่เป็นรูปธรรม สร้างความเชื่อใจได้มากกว่าการเงียบจนถึงวันเดดไลน์แล้วขอเลื่อนแบบไม่มีเหตุผล
- จับปัญหาได้เร็วก่อนจะบานปลาย — การประเมินใหม่บ่อย ๆ ทำให้เห็นสัญญาณเตือนตั้งแต่ยังพอมีเวลาแก้ ตรงกันข้ามกับการปล่อยจนสายเกินแก้
- เปิดทางเลือกที่กว้างกว่าแค่ “เลื่อนวัน” — บังคับให้ทีมพิจารณา scope และ resource ควบคู่ไปด้วย ซึ่งบางครั้งเป็นคำตอบที่ดีกว่าการยืดเวลาเพียงอย่างเดียว
- ทำให้การตัดสินใจระดับองค์กรดีขึ้น — Fowler ยกตัวอย่างว่าการยกเลิก project กลางทางหลังพบว่าประมาณการใหม่บานเกินคุ้ม ถือเป็น “ความสำเร็จ” เพราะช่วยให้องค์กรย้ายทรัพยากรไปทำสิ่งที่คุ้มค่ากว่าได้ทัน
ข้อควรระวัง
- อย่าให้กลายเป็นข้ออ้างสำหรับ Death by Planning — การประเมินใหม่ต้องกระชับและนำไปสู่การตัดสินใจ ไม่ใช่การประชุมวางแผนไม่รู้จบจนไม่มีเวลาลงมือทำจริง ดู Death by Planning
- ระวัง planning fallacy ซ้ำสอง — งานวิจัยของ Kahneman และ Tversky ชี้ว่าคนมักประเมินเวลาต่ำกว่าจริงซ้ำ ๆ แม้จะรู้ว่า project คล้ายกันในอดีตก็เคยช้ากว่าประมาณการ วิธีลดผลกระทบคือใช้ “outside view” — อ้างอิงจากข้อมูลของงานประเภทเดียวกันในอดีต แทนที่จะประเมินจากความรู้สึกใน project นี้อย่างเดียว
- อย่าเลื่อนวันซ้ำ ๆ โดยไม่แก้ต้นตอ — ถ้าอัปเดตแผนแล้วยังพลาดซ้ำอีกในรอบถัดไปด้วยสาเหตุเดิม แปลว่าปัญหาไม่ได้อยู่ที่วันที่ แต่อยู่ที่กระบวนการประมาณการหรือขอบเขตงานที่ยังไม่ได้แก้จริง
- สื่อสารแต่เนิ่น ๆ ดีกว่าสื่อสารตอนสาย — การรอจนถึงวันเดดไลน์เดิมแล้วค่อยแจ้งว่าจะพลาด ทำลายเวลาที่ stakeholder ควรมีไว้ปรับแผนของตัวเองด้วย