ปัญหาการจัดหางาน

อ่าน 1 นาที

มีให้อ่านในภาษา English, Español, Português, 简体中文, 日本語, 한국어, Deutsch, Français, Tiếng Việt และ Te Reo Māori ด้วย

เป็นเวลานานที่คำถามเกี่ยวกับเอเจนต์เขียนโค้ดคือ พวกมันทำงานได้จริงหรือไม่ คำถามนั้นกำลังค่อย ๆ ปิดฉากลงอย่างเงียบ ๆ สำหรับงานที่กำหนดขอบเขตไว้ชัดเจน มีรีพอสิทอรีอยู่ตรงหน้าและสามารถรันเทสต์ได้ เอเจนต์ที่ดีจะส่งมอบการเปลี่ยนแปลงจริงที่ผ่านการรีวิว และในทันทีที่คุณเริ่มไว้ใจสิ่งนั้น คุณจะเจอปัญหาที่ไม่มีใครเตือนไว้ก่อน นั่นคือคุณคิดงานได้ไม่ทันที่จะทำให้พวกมันยุ่งอยู่ตลอดเวลา

การปฏิบัติงานไม่ใช่ข้อจำกัดอีกต่อไป

ผลิตภัณฑ์ซอฟต์แวร์มีงานให้ทำไม่มีที่สิ้นสุดเสมอ แบ็กล็อกไม่เคยว่างเปล่า รายการสิ่งที่อาจทำให้ดีขึ้นได้ไม่มีวันหมด ดังนั้นการพูดว่าทีมอาจหมดงานให้เอเจนต์ทำจึงฟังดูแปลก แต่ "มีงานไม่จำกัดอยู่" กับ "มีงานในรูปแบบที่เอเจนต์สามารถหยิบไปทำต่อจนเสร็จได้" เป็นข้อความสองอย่างที่แตกต่างกันมาก และช่องว่างระหว่างสองสิ่งนี้เองที่ทำให้ทีมติดขัด

เอเจนต์สามารถปฏิบัติงานที่ชัดเจนให้เสร็จได้ในเวลาไม่กี่นาที แต่การเขียนงานที่ชัดเจนนั้น—งานที่มีบริบทเพียงพอ ขอบเขตที่ถูกต้อง และคำนิยามของ "เสร็จสมบูรณ์"—ยังคงใช้เวลาของคนคนหนึ่งยี่สิบนาทีเท่าเดิมเหมือนที่เคยเป็นมา เมื่อการปฏิบัติงานเป็นส่วนที่ช้า สิ่งนี้ไม่เป็นปัญหา เพราะการเขียนสเปกคิดเป็นเพียงห้าเปอร์เซ็นต์ของความพยายามทั้งหมด ส่วนที่เหลืออีกเก้าสิบห้าเปอร์เซ็นต์คือการปฏิบัติงาน เมื่อค่าใช้จ่ายในการปฏิบัติงานลดลงเข้าใกล้ศูนย์ อัตราส่วนนี้ก็กลับตาลปัตร ตอนนี้การเขียนสเปกกลายเป็นครึ่งที่แพงกว่า และทีมที่เคยเลี้ยงเอเจนต์ได้หนึ่งตัวก็พบว่าไม่สามารถเลี้ยงได้ถึงสามตัว

คอขวดเคลื่อนขึ้นต้นน้ำ มาถึงตัวคุณ

นี่คือปัญหาการจัดหางาน ข้อจำกัดของการพัฒนาที่ขับเคลื่อนด้วยเอเจนต์ไม่ได้อยู่ที่ความสามารถของเอเจนต์ในการทำสิ่งต่าง ๆ อีกต่อไป แต่อยู่ที่ความสามารถขององค์กรในการผลิตสิ่งที่มีรูปแบบชัดเจนให้ทำ และข้อจำกัดนี้ตกอยู่กับคนที่หายากที่สุดที่คุณมี—คนที่มีบริบทเพียงพอที่จะบอกได้ว่าควรทำอะไรต่อไปและทำไม

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

เอเจนต์ต้องช่วยจัดหางาน

วิธีเดียวที่จะผ่านพ้นปัญหาการจัดหางานได้คือการเพิ่มปริมาณงานที่จัดหาให้ และคนที่นิยามงานนั้นไม่สามารถขยายตัวได้ ดังนั้นเอเจนต์ที่ปฏิบัติงานจึงต้องเริ่มช่วยสร้างงานขึ้นมาด้วย—ไม่ใช่ด้วยการคิดค้นงานที่ไร้ประโยชน์ขึ้นมาเอง แต่ด้วยการเปลี่ยนสัญญาณที่ไหลผ่านระบบของคุณอยู่แล้วให้กลายเป็นงานที่เป็นรูปธรรมและพร้อมลงมือทำได้ทันที

ทุกวันนี้ TaskGoblin ทำสิ่งนี้ในรูปแบบหนึ่งอยู่แล้ว ในสองจุดที่คุณอาจไม่เคยคิดว่าเป็น "การสร้างงาน"

  • ผลการตรวจรีวิวกลายเป็นงาน merge request ทุกอันที่เอเจนต์ตรวจรีวิวจะสร้างผลการตรวจที่เจาะจงและระบุตำแหน่งได้ชัดเจน เช่น ฟังก์ชันนี้มีบั๊กด้านความถูกต้อง เส้นทางนี้ยังไม่มีการทดสอบครอบคลุม สิ่งนี้ส่งกลิ่นของปัญหาด้านความปลอดภัย แต่ละรายการก็คืองานที่เขียนไว้ล่วงหน้าพร้อมคำนิยามของ "เสร็จสมบูรณ์" ในตัว เพียงตอบกลับด้วย @taskgoblin fix ผลการตรวจนั้นก็จะกลายเป็นการเปลี่ยนแปลงโค้ด ไม่มีใครต้องนั่งเขียนทิกเก็ตนั้นเลย เพราะการรีวิวได้จัดหามันให้แล้ว
  • ลูปที่ทำงานต่อเนื่องกลายเป็นงาน Loops คือเครื่องสร้างงานที่ทำงานตามนาฬิกา เช่น "ทุกวันทำการ ให้ค้นหางานที่ merge แล้วแต่ issue ที่เกี่ยวข้องยังเปิดอยู่ แล้วปิดมัน" หรือ "เฝ้าดู CI ที่ขึ้นสีแดงนานเกินไป" คำสั่งนี้เขียนเพียงครั้งเดียว แล้วมันจะสร้างงานที่เป็นรูปธรรมต่อไปเรื่อย ๆ—หรือไม่สร้างอะไรเลยอย่างถูกต้องเมื่อไม่มีอะไรต้องทำ—โดยไม่ต้องมีใครมาเติมคิวด้วยมือ

ในทั้งสองกรณี เอเจนต์ไม่ได้รอให้ใครมาบอกว่าต้องทำอะไร มันอ่านสถานะของระบบและเสนอสิ่งต่อไปที่เป็นรูปธรรมและทำให้เสร็จได้

ทำไมบริบทจึงเป็นทั้งหมดของเกมนี้

เหตุผลที่งานที่เอเจนต์เสนอมักมีคุณค่าต่ำไม่ใช่เพราะโมเดลไม่ฉลาดพอ แต่เพราะเอเจนต์ไม่รู้ว่าอะไรสำคัญสำหรับคุณ เมื่อมองไม่เห็นเจตนาของผลิตภัณฑ์ เอเจนต์จะเสนอการรีแฟกเตอร์ยี่สิบอย่างที่มันมองเห็นอย่างเต็มใจ แต่จะไม่เสนอการเปลี่ยนแปลงเพียงหนึ่งเดียวที่ขับเคลื่อนธุรกิจได้จริง—เพราะโค้ดบอกมันได้แค่ว่าอะไร เป็นไปได้ ไม่ใช่อะไร สำคัญ

นี่คือเหตุผลที่จุดสร้างงานที่มีประโยชน์คือจุดที่ยึดโยงกับเจตนาที่แท้จริง ผลการตรวจรีวิวมีความสำคัญเพราะมันตั้งอยู่บนการเปลี่ยนแปลงที่บางคนเลือกทำ ลูปตามกำหนดเวลามีความสำคัญเพราะมนุษย์คนหนึ่งตัดสินใจว่าการรักษาให้ issue และ merge สอดคล้องกันนั้นคุ้มค่าที่จะทำทุกวัน บริบทที่ทำให้งานที่ถูกเสนอนั้นคุ้มค่าที่จะทำไม่ได้อยู่ในโค้ดเพียงอย่างเดียว แต่อยู่ใน issue การสนทนา และการตัดสินใจต่าง ๆ รอบ ๆ โค้ดนั้น—และเอเจนต์ที่อาศัยอยู่ในระบบเหล่านั้น เช่นเดียวกับของเรา สามารถอ่านเจตนานั้นได้แทนที่จะเดาสุ่ม

ตอนนี้คุณค่าอยู่ที่ไหน

มีค่าที่จะพูดให้ชัดเจนว่าสิ่งนี้ทิ้งความได้เปรียบไว้ที่ใด เมื่อโมเดลต่าง ๆ บรรจบกันในความสามารถที่จะปฏิบัติงานได้เกือบทุกอย่าง คุณค่าที่ไม่สมส่วนจะหยุดสะสมอยู่กับผู้ที่มีเอเจนต์ที่ฉลาดที่สุด และเริ่มสะสมอยู่กับผู้ที่สามารถจัดหางานที่มีความหมายให้เอเจนต์ที่ดีได้อย่างต่อเนื่อง ท่าไม้ตายที่ชนะไม่ใช่โมเดลที่ฉลาดกว่า แต่คือการปิดวงจรระหว่างเจตนาที่กระจัดกระจายอยู่ในเครื่องมือต่าง ๆ ของคุณ กับเอเจนต์ที่สามารถลงมือทำตามเจตนานั้นได้ เพื่อให้ "เราควรทำอะไรต่อไป" ไม่ใช่คอขวดที่ตัวคุณเองเป็นอยู่อีกต่อไป

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