หลังจากหยุดวิธีรื้อแบบเดิม ผมยังไม่อยากให้ AI กลับไปแก้โค้ดทันที เพราะปัญหาที่เห็นไม่ได้อยู่แค่ว่าไฟล์ไหนใหญ่เกินไป แต่อยู่ที่งานหลายหน้าที่มารวมกันจนไม่ชัดว่าแต่ละส่วนควรรับผิดชอบอะไร
ถ้าแบ่งไฟล์ก่อนโดยยังไม่รู้ว่าใครเป็นเจ้าของหน้าที่ เราอาจแค่ย้ายความสับสนก้อนเดิมไปวางไว้หลายที่ รอบใหม่นี้ผมจึงเริ่มจากคิดให้ครบก่อนว่าโครงเป้าหมายควรเป็นอย่างไร สิ่งใดต้องอยู่ตรงไหน และจะรู้ได้อย่างไรว่าการแยกนั้นยังรักษาสิ่งที่ Buddy ต้องทำไว้
เริ่มจากหน้าที่ ไม่ใช่เริ่มจากจำนวนไฟล์
พอผมตัดสินใจเริ่มใหม่ ผมต้องย้อนถามว่าส่วนกลางเดิมรับผิดชอบเรื่องอะไรบ้าง งานที่รวมอยู่ตรงนั้นมีทั้งการตัดสินใจว่าจะทำอะไร การจัดการข้อมูล การบันทึกผล และงานที่ตามมาหลังบันทึก ถ้าคิดเพียงว่าจะย้ายโค้ดก้อนไปไฟล์ใหม่ เราก็อาจยังไม่รู้ว่าเส้นแบ่งที่ดีควรอยู่ตรงไหน
ผมจึงวางภาพปลายทางก่อนว่าแต่ละหน้าที่ควรมีเจ้าของที่ชัดเจน ส่วนไหนประสานงาน ส่วนไหนดูแลการบันทึก ส่วนไหนจัดการสิ่งที่จะเกิดหลังบันทึก และเมื่อบางขั้นตอนไม่พร้อม ระบบควรหยุดหรือถามกลับอย่างไร การคิดเป็นหน้าที่ช่วยให้ผมกับ AI คุยจากสิ่งที่ระบบต้องทำ ไม่ใช่เริ่มจากชื่อหรือจำนวนไฟล์
ขอบเขตระหว่างส่วนก็สำคัญพอ ๆ กับหน้าที่ แต่ละส่วนควรรู้ว่าสิ่งใดรับเข้ามา สิ่งใดต้องส่งต่อ และเรื่องใดไม่ควรตัดสินใจแทนส่วนอื่น เมื่อเกิดผลผิด เราจะได้ย้อนดูว่าแต่ละช่วงทำตามความรับผิดชอบหรือไม่
ทำโพยให้ AI เห็นเส้นทางเดียวกับผม
เมื่อภาพเริ่มชัด ผมจึงลงรายละเอียดในเอกสารให้มากพอที่จะใช้คุยกับ AI ไม่ได้เขียนเพียงว่า “ช่วยแยกส่วนกลางให้สะอาดขึ้น” แต่ต้องกำหนดว่าพฤติกรรมใดที่มีอยู่แล้วและห้ามหายไป ส่วนใดที่ต้องเปลี่ยน และหลักฐานแบบไหนจะบอกได้ว่าการเปลี่ยนแปลงทำงานตามที่ตั้งใจ
เอกสารทำหน้าที่เหมือนโพยร่วมกัน ช่วยให้เรามองเห็นขอบเขตเดียวกัน แบ่งงานใหญ่เป็นส่วนที่ตรวจได้ และกลับมาตรวจคำตอบได้ว่าตรงกับโจทย์หรือไม่ ถ้ามีจุดที่ยังตัดสินใจไม่ได้ ผมอยากให้หยุดถามหรือปรับแผนก่อน มากกว่าปล่อยให้โค้ดกลายเป็นคำตอบแทนสิ่งที่ยังไม่ชัด
ผมยังเตรียมสิ่งที่ระบบเดิมทำได้ไว้เป็นจุดเทียบด้วย งานรื้อโครงสร้างไม่ได้ให้สิทธิ์เราตัดสิ่งที่ดูยุ่งออกเพียงเพราะทำให้โค้ดเรียบขึ้น เราต้องรู้ก่อนว่าทางเดิมทำอะไรได้บ้าง แล้วจึงตรวจได้ว่าของใหม่รักษาสิ่งสำคัญไว้หรือไม่
รอบนี้ยังเตรียมอยู่ ยังไม่ได้ลงมือแก้
จังหวะของตอนนี้คือการเตรียมงาน ณ จุดจบนี้ผมยังไม่ได้เริ่มแก้โค้ดหรือให้ AI ลงมือรื้อ ผมกำลังเตรียมภาพรวม หน้าที่ของแต่ละส่วน และวิธีตรวจให้พร้อมก่อน
การเตรียมแผนยังไม่ใช่ผลลัพธ์ของการรื้อ และยังตอบไม่ได้ว่าสิ่งที่วางไว้จะทำงานได้จริงหรือไม่ แต่มันทำให้ผมมีกรอบสำหรับมอบหมายงานและทบทวนสิ่งที่ AI ส่งกลับมา โดยไม่ปล่อยให้เป้าหมายเปลี่ยนไปทีละน้อยระหว่างลงมือ
