สิบเอ็ดข้อที่ล้มเองได้ สิบข้อที่เป็นแค่ข้อความ
หลังวันทำงานหนักวันที่ 9 ตุลาคม ห้อง AI สิบเจ็ดห้องของเราเขียนทบทวนงานของตัวเอง ให้ห้องอื่นมาอ่านแย้ง แล้วห้องหนึ่งรวบรวมกติกาที่ทุกห้องเขียนขึ้นใหม่วันนั้นมาแยกเป็นสองกองด้วยคำถามเดียว คือถ้าข้ามกติกานี้ไป จะมีอะไรล้มไหม บทความนี้เล่าว่าแยกแล้วได้อะไร และทำไมตัวเลขสิบเอ็ดต่อสิบยังใจดีเกินไป
ห้อง AI ของเราเขียนกติกาให้ตัวเองได้เร็วมาก พลาดครั้งหนึ่ง ห้องก็เขียนบทเรียนหนึ่งบรรทัด แล้วเติมข้อใหม่ลงคู่มือของตัวเอง วันที่ 9 ตุลาคมซึ่งเป็นวันงานหนัก ทุกห้องทำแบบนี้หลายรอบ
คืนนั้นเราถามคำถามที่ตามมา กติกาที่เขียนเพิ่มทั้งวัน มีกี่ข้อที่ทำงานจริง
วิธีตรวจ
แต่ละห้องเขียนบันทึกทบทวนวันของตัวเอง ว่าทำอะไร พลาดอะไร เปลี่ยนอะไร แล้วมีห้องอื่นเข้ามาอ่านและเขียนข้อแย้งต่อท้าย จากนั้นห้องหนึ่งรับหน้าที่รวบรวม บันทึกรวบรวมลงเวลาไว้ราวตีหนึ่งยี่สิบของวันที่ 10 และบอกว่าใช้บันทึกของสิบเจ็ดห้องพร้อมข้อแย้งเป็นวัตถุดิบ
ห้องรวบรวมทำสามอย่าง
อย่างแรก หากติกาที่ซ้ำกัน หลายห้องเจอปัญหาเดียวกันและต่างคนต่างเขียนวิธีแก้ ตารางของห้องรวบรวมมีแปดแถว แถวละหนึ่งชนิดของปัญหา แต่ละแถวเลือกหนึ่งฉบับเป็นตัวหลัก แล้วให้ฉบับอื่นชี้มาที่ตัวหลักแทนการเขียนซ้ำ แถวที่ซ้ำมากที่สุดมีคู่มือห้าฉบับชี้มาที่ตัวหลักตัวเดียว
อย่างที่สอง แยกกติกาเป็นสองกอง
อย่างที่สาม เลือกว่ากติกาข้อไหนควรถูกสร้างเป็นเครื่องมือก่อน
คำถามเดียวที่ใช้แยก
หัวข้อของสองกองเขียนเกณฑ์ไว้ในวงเล็บ กองแรกชื่อว่าด่าน นิยามว่า "ล้มเองได้" คือเป็นสคริปต์หรือตัวดักคำสั่งที่มีรหัสออกและผ่านการทดสอบแล้ว กองที่สองชื่อว่าข้อความ นิยามว่า "ไม่มีอะไรล้มถ้าข้ามไป"
ผลคือกองแรกสิบเอ็ดรายการ กองที่สองสิบรายการ
กองที่สองไม่ได้แปลว่ากติกาแย่ หลายข้อเป็นกติกาที่จับปัญหาจริงได้ในวันนั้น มันแค่ทำงานต่อเมื่อห้องจำได้ว่าต้องทำ
รายการสิบเอ็ดต่อสิบนั้นนับเฉพาะกติกาที่เขียนหรือแก้ในวันนั้น ถ้ามองคู่มือทั้งชั้น ภาพเอียงกว่ามาก บ่ายวันที่ 10 เรานับคู่มือที่ทุกห้องใช้ร่วมกันได้ 141 เล่ม มี 14 เล่มที่มีไฟล์สคริปต์อยู่ข้างในอย่างน้อยหนึ่งไฟล์ อีก 127 เล่มเป็นข้อความล้วน ตัวเลขนี้หยาบ คู่มือที่มีสคริปต์ไม่ได้แปลว่าสคริปต์นั้นเป็นด่าน และคู่มือข้อความล้วนหลายเล่มก็เป็นความรู้อ้างอิงที่ไม่จำเป็นต้องมีด่าน แต่มันบอกสัดส่วนคร่าว ๆ ว่ากติกาส่วนใหญ่ของเราอยู่ในรูปไหน
ทำไมสิบเอ็ดยังใจดีเกินไป
อ่านรายการของกองแรกให้ละเอียด สี่ในสิบเอ็ดรายการมีวงเล็บกำกับจากห้องรวบรวมเอง รายการหนึ่งถูกเขียนว่ายังมีช่องที่จับไม่ได้ รายการหนึ่งปล่อยผ่านเมื่อได้รับค่าว่าง รายการหนึ่งยังไม่มีชุดทดสอบ และรายการหนึ่งยังไม่ได้รวมเข้าสายหลัก
รายการสุดท้ายนั้น ห้องที่มาแย้งเขียนไว้แรงกว่า ว่า ณ เวลาที่ตรวจ มัน "เป็นข้อความหรือความตั้งใจ ยังไม่ใช่ด่าน" บ่ายวันที่ 10 เราไปดูเอง คำขอรวมโค้ดของเครื่องมือตัวนั้นยังเปิดค้างอยู่
ห้องรวบรวมยังมีหัวข้อแยกสำหรับช่องโหว่ที่ห้องแย้งหาเจอในตัวด่านเอง หัวข้อนั้นเอ่ยถึงด่านหกตัว หนึ่งตัวถูกกำกับว่าแก้แล้ว
และด่านที่ไม่มีข้อบกพร่องเลยก็ยังอาจไม่ได้อยู่ในทางที่งานเดินผ่าน เราเล่าไว้ในอีกบทหนึ่งถึงด่านที่ทำงานถูกต้อง แต่ต้องมีคนจำไปเรียกเอง ผู้แย้งเรียกมันว่าข้อความที่มีสคริปต์แนบ
ถ้านับเฉพาะรายการที่ไม่มีวงเล็บกำกับและไม่อยู่ในหัวข้อช่องโหว่ ตัวเลขจะน้อยกว่าสิบเอ็ด เราไม่ได้ให้ตัวเลขนั้น เพราะการไม่มีข้อบกพร่องที่บันทึกไว้ ไม่ได้แปลว่าไม่มีข้อบกพร่อง
กติกาข้อไหนควรเป็นเครื่องมือก่อน
หัวข้อที่สามของบันทึกรวบรวมใช้เกณฑ์เดียว คือข้อความที่ทำให้พลาดมาแล้วตั้งแต่สองห้องขึ้นไป
มีหกรายการที่เข้าเกณฑ์ แต่ละรายการระบุสิ่งที่จะสร้าง ห้องที่โดน และเจ้าของ รายการที่โดนมากที่สุดมีหกห้อง คือการตรวจว่าผลที่โมเดลรับงานรายงานกลับมา ตรงกับผลเมื่อรันจริงไหม
เกณฑ์นี้ตัดการถกเถียงออกไปมาก ไม่ต้องเถียงว่ากติกาข้อไหนสำคัญ นับแค่ว่าข้อไหนถูกข้ามแล้วเสียหายมาแล้วกี่ห้อง
สิ่งที่การให้ห้องอื่นมาแย้งให้เรา
ห้องที่เขียนด่านมักทดสอบด่านกับกรณีที่ตัวเองนึกออก ห้องที่มาแย้งลองกรณีที่เจ้าของไม่ได้นึก ด่านหนึ่งในกองแรกถูกบันทึกว่า "แก้แล้วหลังการแย้ง" อยู่ในตารางของห้องรวบรวมเอง
การแย้งยังเปลี่ยนกองได้ ห้องหนึ่งที่กติกาอยู่ในกองข้อความตอบข้อแย้งว่ารับ แล้วสร้างส่วนหนึ่งของกติกานั้นเป็นด่านจริงในคืนเดียวกัน ห้องเขียนตรง ๆ ด้วยว่าขั้นที่เหลือยังเป็นรายการตรวจด้วยมือ เพราะต้องใช้วิจารณญาณ
อะไรทำให้ทำแบบนี้ได้ในคืนเดียว
บันทึกรวบรวมมีหนึ่งบรรทัดที่ดูเป็นรายละเอียดทางเทคนิค แต่เป็นเงื่อนไขของทั้งเรื่อง คู่มือของทุกห้องอยู่ในที่เก็บเดียวกัน แก้ครั้งเดียวถึงทุกห้อง
ถ้าคู่มือของแต่ละห้องแยกกันอยู่ การให้ห้าฉบับชี้มาที่ตัวหลักตัวเดียวจะเป็นงานประสานห้าห้อง
สิ่งที่เรายังไม่รู้
- ทั้งวันมีเหตุพลาดกี่ครั้งที่มาจากกติกาที่เป็นแค่ข้อความ แต่ละห้องนับราคาของตัวเอง ไม่มีตัวเลขรวม
- หกรายการที่ควรสร้างก่อน ถูกสร้างแล้วกี่รายการ บันทึกรวบรวมหยุดที่ตีหนึ่ง เราตรวจเองได้หนึ่งรายการว่ายังไม่ได้ฝังในเครื่องมือสั่งงาน
- ด่านในกองแรกแต่ละตัวอยู่ในทางที่งานเดินผ่านเอง หรือต้องมีคนเรียก บันทึกบอกไว้แค่ตัวเดียว
- ด่านที่สร้างแล้วลดการพลาดซ้ำได้จริงไหม ยังไม่มีข้อมูลก่อนหลัง
- บันทึกทบทวนของห้องโครงสร้างพื้นฐานยังไม่ได้เขียนตอนรวบรวม ภาพฝั่งนั้นจึงขาด
ข้อคิดที่เอาไปใช้ได้
- ถามกติกาทุกข้อด้วยคำถามเดียว: ถ้าข้ามไป จะมีอะไรล้มไหม ถ้าไม่มี มันคือข้อความ ไม่ว่าจะเขียนดีแค่ไหน
- ป้ายว่า "ด่าน" ก็ต้องตรวจ สี่ในสิบเอ็ดรายการของเรามีข้อกำกับ และหนึ่งรายการยังไม่ได้รวมเข้าสายหลักด้วยซ้ำ
- เลือกสิ่งที่จะสร้างจากจำนวนห้องที่พลาด ไม่ใช่จากความรู้สึกว่าสำคัญ เกณฑ์ "สองห้องขึ้นไป" ทำให้ได้รายการสั้นหกข้อจากกติกาหลายสิบข้อ
- ให้คนที่ไม่ได้เขียนด่านเป็นคนลองทำให้ด่านพลาด เจ้าของด่านทดสอบกรณีที่ตัวเองนึกออก
- เก็บคู่มือที่ใช้ร่วมกันไว้ที่เดียว การรวมของซ้ำทำได้ในคืนเดียวเพราะข้อนี้
คำถามที่พบบ่อย
แยกกติกาที่เป็นด่านจริงกับกติกาที่เป็นแค่ข้อความอย่างไร
กองแรกชื่อว่าด่าน นิยามว่า "ล้มเองได้" คือเป็นสคริปต์หรือตัวดักคำสั่งที่มีรหัสออกและผ่านการทดสอบแล้ว กองที่สองชื่อว่าข้อความ นิยามว่า "ไม่มีอะไรล้มถ้าข้ามไป"