ข้าม​ไป​ยัง​เนื้อหา

Goodhart’s Law

เมื่อ​ตัว​วัด​กลาย​เป็น​เป้า มัน​ก็​เลิก​เป็น​ตัว​วัด​ที่​ดี

“เมื่อ​ตัว​วัด (measure) กลาย​เป็น​เป้าหมาย (target) มัน​ก็​เลิก​เป็น​ตัว​วัด​ที่​ดี”

Goodhart’s Law ตั้ง​ชื่อ​ตาม Charles Goodhart นัก​เศรษฐศาสตร์​ชาว​อังกฤษ ผู้​เขียน​บทความ​เกี่ยว​กับ​นโยบาย​การเงิน​ของ​สหราชอาณาจักร​ใน​ปี 1975 คำ​กล่าว​ดั้งเดิม​ของ​เขา​ซับซ้อน​และ​เป็น​วิชาการ​กว่า​นี้​มาก คือ “Any observed statistical regularity will tend to collapse once pressure is placed upon it for control purposes” (ความ​สม่ำเสมอ​ทาง​สถิติ​ใด ๆ ที่​สังเกต​ได้ มัก​จะ​พัง​ทลาย​ลง​ทันที​ที่​มัน​ถูก​ใช้​เป็น​เครื่องมือ​ควบคุม) บริบท​ตอน​นั้น​คือ​รัฐบาล​อังกฤษ​ยุค Margaret Thatcher พยายาม​คุม​เงินเฟ้อ​ด้วย​การ​ตั้ง​เป้า​ปริมาณ​เงิน​ใน​ระบบ (money supply) แต่​ทันที​ที่​ตัวเลข​นั้น​กลาย​เป็น​เป้าหมาย​ที่​ธนาคาร​และ​นัก​ลงทุน​รู้​ว่า​ถูก​จับตา พฤติกรรม​ของ​ตลาด​ก็​เปลี่ยน​ไป​จน​ความ​สัมพันธ์​ทาง​สถิติ​เดิม​ใช้​ไม่​ได้​อีก​ต่อ​ไป

ถ้อยคำ​ที่​คน​จำ​กัน​ติดปาก​ทุก​วัน​นี้ — “เมื่อ​ตัว​วัด​กลาย​เป็น​เป้าหมาย มัน​ก็​เลิก​เป็น​ตัว​วัด​ที่​ดี” — จริง ๆ แล้ว​เป็นการ​เรียบเรียง​ใหม่​โดย​นัก​มานุษยวิทยา Marilyn Strathern ใน​บทความ​ปี 1997 ของ​เธอ ซึ่ง​เชื่อม​โยง​ข้อสังเกต​ของ Goodhart เข้า​กับ​ประวัติศาสตร์​การ​ตรวจสอบ (accountability) ใน​สถาบัน​ของ​อังกฤษ

น่า​สังเกต​ว่า​มี​แนวคิด​ใกล้​เคียง​กัน​ที่​เกิด​ก่อนหน้า​นั้น​ด้วย​ซ้ำ คือ Campbell’s Law (ราว​ปี 1969) ของ​นัก​สังคมศาสตร์ Donald T. Campbell ที่​ระบุ​ว่า “ยิ่ง​ตัว​ชี้​วัด​เชิง​ปริมาณ​ใด​ถูก​ใช้​ใน​การ​ตัดสิน​ใจ​ทาง​สังคม​มาก​เท่าไร มัน​ก็​ยิ่ง​ถูก​บิดเบือน​ได้​ง่าย​ขึ้น​เท่านั้น” ทั้ง​สอง​กฎ​พูด​ถึง​ปรากฏการณ์​เดียวกัน​จาก​คนละ​มุม และ​มัก​ถูก​อ้างอิง​คู่​กัน

หัวใจ​ของ​กฎ​นี้​คือ​ความ​แตก​ต่าง​ระหว่าง ตัว​วัด (measure) กับ สิ่ง​ที่​เรา​ต้องการ​วัด​จริง ๆ (the thing we actually care about) metric แทบ​ทุก​ตัว​เป็น​เพียง proxy หรือ​ตัวแทน​โดย​ประมาณ​ของ​คุณค่า​ที่​วัด​ตรง ๆ ไม่​ได้ ตราบ​ใด​ที่ metric ยัง​เป็น​เพียง​ข้อมูล​ประกอบ​เฉย ๆ ไม่มี​ใคร​แคร์​มัน​เป็น​พิเศษ ความ​สัมพันธ์​ระหว่าง metric กับ​คุณค่า​จริง​จึง​ยัง​คง​ซื่อสัตย์ แต่​ทันที​ที่​มัน​ถูก​ยก​ระดับ​เป็น​เป้าหมาย เป็น​ตัวเลข KPI ที่​ผูก​กับ​โบนัส การ​ประเมิน​ผล หรือ “ต้อง​ทำให้​ถึง” คน​ก็​จะ​หา​ทาง​ที่​สั้น​ที่สุด​ไป​สู่​ตัวเลข​นั้น ไม่ใช่​ทาง​ที่​นำ​ไป​สู่​คุณค่า​ที่แท้​จริง

ใน​วงการ​วิศวกรรม​ซอฟต์แวร์​มัก​แยก​กฎ​นี้​เป็น​สอง​ระดับ​ที่​ต่าง​กัน:

  • Weak Goodhart — คน​จงใจ “เล่น​กับ​ตัวเลข” (gaming the metric) เช่น แบ่ง bug หนึ่ง​ใบ​เป็น​หลาย​ใบ​เพื่อ​ให้​ยอด ticket ที่​ปิด​ได้​ดู​สูง​ขึ้น ทั้ง​ที่​รู้ตัว​ว่า​กำลัง​หลอก​ระบบ​วัดผล
  • Strong Goodhart — แม้แต่​คน​ที่​ไล่​ตาม​ตัวเลข​อย่าง​สุจริต​ใจ ไม่​ได้​ตั้งใจ​โกง​เลย ก็​ยัง​ทำร้าย​เป้าหมาย​ที่แท้​จริง​ได้ เพราะ proxy กับ​เป้าหมาย​จริง​ไม่​เคย​เหมือนกันเป๊ะ การ​เพิ่ม metric ให้​สูงสุด​จึง​มัก​ดัน​คุณค่า​จริง​ให้​ต่ำ​ลง​เมื่อ​เลย​จุด​หนึ่ง​ไป

นัย​ยะ​สำคัญ​คือ Goodhart’s Law ไม่ใช่​ข้อ​บกพร่อง​ที่​แก้ไข​ได้​ด้วย metric ที่ “ฉลาด​กว่า” เพราะ​ไม่​ว่า​จะ​ออกแบบ​ตัว​ชี้​วัด​ดี​แค่​ไหน มัน​ก็​ยัง​เป็น​เพียง​ตัวแทน​ที่​ไม่​สมบูรณ์​ของ​สิ่ง​ที่​วัด​ยาก​อย่าง​คุณภาพ​ซอฟต์แวร์ ความ​พึงพอใจ​ของ​ผู้​ใช้ หรือ​ทักษะ​ของ​ทีม สิ่ง​ที่​ทำได้​คือ​บริหาร​ความ​เสี่ยง​นี้ ไม่ใช่​กำจัด​มัน

ใน​บริบท Agile กฎ​นี้​ปรากฏ​ให้​เห็น​บ่อย​ที่สุด​ผ่าน velocity และ story point เดิมที story point ถูก​ออกแบบ​มา​เพื่อ​ช่วย​ทีม​วางแผน​ภายใน​ทีม​เอง เป็น​เครื่องมือ​สื่อสาร​ความ​ไม่​แน่นอน​ของ​งาน แต่​ทันที​ที่​ผู้​บริหาร​เริ่ม​เปรียบเทียบ velocity ระหว่าง​ทีม หรือ​ตั้ง​เป้า​ว่า “ทีม​ต้อง​ทำได้ N point ต่อ sprint” ทีม​ก็​จะ​ปรับ​ตัวเลข point ให้​สูง​ขึ้น​เรื่อย ๆ โดย​ไม่​ได้​ส่ง​มอบ​คุณค่า​เพิ่ม​ขึ้น​จริง (point inflation) นี่​คือ​ตัวอย่าง​คลาสสิก​ของ Strong Goodhart ที่​แม้​ทีม​จะ​ประมาณ​งาน​อย่าง​สุจริต​ใจ แต่​แรง​กดดัน​จาก​การ​ถูกวัด​เทียบ​กัน​ก็​ยัง​บิดเบือน​ตัวเลข​ได้​อยู่ดี

flowchart LR
    Goal[เป้าหมายที่แท้จริง] -->|ประมาณด้วย| Metric[ตัววัด metric]
    Metric -->|ถูกยกเป็น| Target[เป้าหมายที่ต้องทำให้ถึง]
    Target -->|คนปรับพฤติกรรม| Gaming[เล่นกับตัวเลข หรือ over-optimize]
    Gaming -->|เบี่ยงเบนจาก| Goal
  • นโยบาย​การเงิน​อังกฤษ (ต้น​กำเนิด) — เมื่อ​รัฐบาล​กำหนด​เป้า​ปริมาณ​เงิน​ใน​ระบบ​เพื่อ​คุม​เงินเฟ้อ ความ​สัมพันธ์​ทาง​สถิติ​ระหว่าง​ปริมาณ​เงิน​กับ​เงินเฟ้อ​ที่​เคย​แม่นยำ​ก็​พัง​ทลาย เพราะ​ธนาคาร​และ​ตลาด​ปรับ​ตัว​รอบ​เป้าหมาย​นั้น​โดยตรง
  • การ​ศึกษา — กฎหมาย No Child Left Behind ของสหรัฐฯ ผูก​งบประมาณ​โรงเรียน​กับ​คะแนน​สอบ​มาตรฐาน ผล​คือ​มี​รายงาน​ว่า​โรงเรียน​บาง​แห่ง​เลื่อน​ชั้น​นักเรียน​ที่​ยัง​ไม่​พร้อม หรือ “สอน​เพื่อ​สอบ” (teaching to the test) แทนที่​จะ​สอน​เพื่อ​ความ​เข้าใจ​จริง
  • สาธารณสุข — โรงพยาบาล​ที่​ถูก​วัดผล​ด้วย “ระยะ​เวลา​พัก​รักษา​ตัว​เฉลี่ย” (length of stay) บาง​แห่ง​ลด​ตัวเลข​นี้​ด้วย​การ​ให้​ผู้ป่วย​ออก​จาก​โรงพยาบาล​เร็ว​เกิน​ไป จน​อัตรา​การกลับ​มา​รักษา​ซ้ำ (readmission) สูง​ขึ้น
  • การ​นับ​ตรวจ COVID-19 — เป้าหมาย “100,000 การ​ตรวจ​ต่อ​วัน” ของ​รัฐบาล​อังกฤษ​ถูก​วิจารณ์​ว่า​นับ​รวม “ความ​สามารถ​สูงสุด​ใน​การ​ตรวจ” ไม่ใช่​จำนวน​การ​ตรวจ​จริง​ที่​เกิด​ขึ้น ทำให้​ตัวเลข​ดู​ดี​กว่า​ความ​เป็น​จริง
  • Lines of code และ​จำนวน commit — เมื่อ​องค์กร​วัดผล​งาน​ด้วย​จำนวน​บรรทัด code หรือ​จำนวน commit นัก​พัฒนา​บาง​คน​เขียน code ยืดยาว​เกิน​จำเป็น​หรือ​แตก commit ให้​ถี่​ขึ้น​โดย​ไม่​ได้​เพิ่ม​คุณค่า​จริง
  • Code coverage และ​จำนวน bug ticket ที่​ปิด — การ​ตั้ง​เป้า coverage percentage ทำให้​บาง​ทีม​เขียน unit test ที่​ไม่ assert อะไร​มี​ความหมาย​เลย​เพียง​เพื่อ​ให้​ตัวเลข​ขึ้น ขณะ​ที่ integration test ที่​จำเป็น​จริง​กลับ​ถูก​ข้าม เช่น​เดียว​กับ​การ​ตั้ง​เป้า “ต้อง​ปิด 100 ticket ต่อ​เดือน” ที่​ดัน​ให้​ทีม​ปิด bug แบบ​ผิวเผิน​หรือ​แตก bug หนึ่ง​ใบ​เป็น​หลาย​ใบ​เพื่อ​ดัน​ยอด
// ตัวอย่างสัญญาณเตือน Goodhart's Law ใน code: การไล่ตาม code coverage เป็นเป้าหมาย
[Fact]
public void CalculateDiscount_ShouldNotThrow()
{
// test นี้เพิ่ม coverage percentage แต่ไม่ assert พฤติกรรมที่แท้จริงเลย
var result = OrderService.CalculateDiscount(100m, "VIP");
Assert.NotNull(result); // ผ่านเสมอ ไม่ว่าผลลัพธ์จะถูกหรือผิด
}
// สิ่งที่ควรทำแทน: assert คุณค่าทางธุรกิจจริง แม้ coverage number จะไม่เปลี่ยนมาก
[Fact]
public void CalculateDiscount_VipCustomer_Gets10PercentOff()
{
var result = OrderService.CalculateDiscount(100m, "VIP");
Assert.Equal(90m, result);
}
  • ใช้ metric เป็น​สัญญาณ ไม่ใช่​เป้าหมาย​สูงสุด — ตัวเลข​ควร​ช่วย​ให้​ทีม​ตั้ง​คำถาม ไม่ใช่​เป็น​สิ่ง​ที่​ต้อง​ยัด​ให้​ถึง​ไม่​ว่า​จะ​ด้วย​วิธี​ใด เมื่อใด​ก็ตาม​ที่ metric ผูก​กับ​โบนัส​หรือ​การ​ประเมิน​ผล​โดยตรง​และ​เข้มงวด ให้​ระวัง​ว่า​กำลัง​เปิด​ช่อง​ให้ Goodhart’s Law ทำงาน
  • ใช้​หลาย​ตัว​วัด​ประกอบ​กัน (portfolio of metrics) — metric เดี่ยว ๆ ถูก​เล่น​ได้​ง่าย​กว่า​ชุด metric ที่​ถ่วง​ดุล​กัน เช่น วัด velocity คู่​กับ defect rate และ customer satisfaction ไป​พร้อม​กัน แม้​วิธี​นี้​จะ​ไม่ใช่​ทาง​แก้​ที่​สมบูรณ์​แบบ เพราะ​ชุด metric เอง​ก็​อาจ​ถูก game ได้​เช่น​กัน​หาก​ซับซ้อน​พอ
  • ระวัง​ทั้ง weak และ strong Goodhart — อย่า​คิด​ว่า​ปัญหา​คือ “คน​โกง​ตัวเลข” เพียง​อย่าง​เดียว แม้​ทีม​ที่​สุจริต​ที่สุด​ก็​ยัง​ทำร้าย​เป้าหมาย​จริง​ได้​จาก​การ​ไล่​ตาม proxy อย่าง​เข้มข้น​เกิน​ไป
  • DORA metrics และ metric สมัย​ใหม่​ก็​ไม่​รอด — แม้แต่​ชุด​ตัว​ชี้​วัด DevOps ยอด​นิยม​อย่าง deployment frequency หรือ lead time for changes ก็​เป็น​เพียง “proxy ของ proxy ของ​เป้าหมาย” เท่านั้น การ​ไล่ deploy ให้​ถี่​ขึ้น​โดย​ไม่​สนใจ​คุณภาพ ก็​ทำให้​ตัวเลข​ดี​ขึ้น​ได้​โดยที่​ธุรกิจ​ไม่​ได้​ประโยชน์​จริง
  • ใช้​วิจารณญาณ​ทาง​วิศวกรรม​เป็น​หลัก — ไม่มี​สูตร​สำเร็จ​ที่​ขจัด Goodhart’s Law ได้​ทั้งหมด สิ่ง​ที่​ทำได้​ดี​ที่สุด​คือ​ให้​คน​ที่​มี​บริบท​และ​วิจารณญาณ​ตัดสิน​ใจ​ประกอบ​กับ​ตัวเลข ไม่ใช่​ปล่อย​ให้​ตัวเลข​ตัดสิน​ใจ​แทน
  • ตั้ง​เป้าหมาย​ที่​ระดับ​ผลลัพธ์ (outcome) ไม่ใช่​ระดับ​ผลผลิต (output) — เช่น วัด “ปัญหา​ของ​ผู้​ใช้​ถูก​แก้​จริง​หรือ​ไม่” แทน “จำนวน ticket ที่​ปิด” จะ​ลด​ช่องว่าง​ระหว่าง metric กับ​คุณค่า​ที่แท้​จริง​ลง​ได้​บ้าง