เมื่อกล่าวคำอำลากับ Agile
(lewiscampbell.tech)- การทบทวนเชิงวิพากษ์ที่มองว่าวิธีการ Agile ซึ่งครอบงำอุตสาหกรรมซอฟต์แวร์มาอย่างยาวนาน แท้จริงแล้วเป็นเพียงหลักการที่คลุมเครือและการนำปัญหาที่ถูกแก้ไปแล้วมาห่อใหม่
- ภาพความขัดแย้งกับ Waterfall แทบจะเป็นภาพลวงตา และแนวคิดหลักอย่าง การพัฒนาแบบวนซ้ำและการมีส่วนร่วมของลูกค้า ก็ถูกเสนอไว้แล้วในงานวิจัยตั้งแต่ทศวรรษ 1970
- Agile ถูกนิยามมาโดยตลอดว่าเป็นเพียง สิ่งตรงข้ามกับโมเดล Waterfall แต่ข้อจำกัดของโมเดล Waterfall ก็เป็นเรื่องที่รู้กันอย่างกว้างขวางอยู่แล้วตั้งแต่ทศวรรษ 1970
- เมื่อไม่นานมานี้ จากการมาถึงของ large language model (LLM) ทำให้ Spec-Driven Development กลับมามีความสำคัญอีกครั้ง และการพัฒนาแบบยึดเอกสารเป็นศูนย์กลางกำลังกลับมาโดดเด่น
- คำขวัญของ Agile ที่ว่า “ซอฟต์แวร์ที่ใช้งานได้สำคัญกว่าเอกสารที่ครอบคลุม” กำลังเปลี่ยนไปเป็นความเข้าใจใหม่ว่า “เอกสารที่ครอบคลุมคือสิ่งที่สร้างซอฟต์แวร์ที่ใช้งานได้”
- ถึงเวลาแล้วที่จะก้าวข้ามความคลุมเครือที่ Agile ทิ้งไว้ และ กลับไปสู่หลักการที่ชัดเจนกับแนวทางเชิงวิศวกรรม
> RIP Agile, we hardly knew ye.
> And I mean that literally - because no one was ever clear on what it was.
> ลาก่อน Agile ขอให้พักผ่อนอย่างสงบ เราแทบไม่เคยรู้จักคุณจริง ๆ เลย
> และพูดอย่างตรงตัวก็คือ เพราะไม่เคยมีใครอธิบายได้ชัดว่าแท้จริงแล้วมันคืออะไร
ปัญหาเรื่องตัวตนของ Agile
- Agile เป็นกระแสขนาดใหญ่ที่แผ่ไปทั่วทั้งอุตสาหกรรมซอฟต์แวร์ แต่ในความเป็นจริงมันเป็นแนวคิดที่แพร่หลายออกไปทั้งที่ความหมายยังไม่ชัดเจน
- ทุกครั้งที่มีคนตั้งคำถาม ก็มักจะได้รับคำตอบซ้ำ ๆ ว่า “นั่นไม่ใช่ Agile ที่แท้จริง”
- หากลองอ่าน Agile Manifesto (2001) จริง ๆ จะพบว่าแทบไม่มีแนวทางที่เป็นรูปธรรม และอยู่ในระดับของ ถ้อยคำคติพจน์ที่คลุมเครือ เช่น “ความร่วมมือกับลูกค้าสำคัญกว่าการต่อรองสัญญา”
- หลักการอย่าง “ยินดีต้อนรับการเปลี่ยนแปลงความต้องการแม้อยู่ในช่วงท้ายของการพัฒนา” นั้น ไม่สมจริงในเชิงธุรกิจ
- ภายใต้คำกล่าวอ้างเรื่อง “True Agile” ปัญหาที่เกิดขึ้นในทางปฏิบัติมักถูกปัดออกไปว่าไม่เกี่ยวกับตัว manifesto
- หากอุตสาหกรรม Agile เองก็ไม่ได้ปฏิบัติ Agile อย่างถูกต้อง และตัว manifesto ก็แทบไม่มีความหมายชัดเจน ก็ยิ่งน่าสงสัยว่าแก่นแท้ของ Agile คืออะไรกันแน่
"ผีของ Waterfall หลอกหลอนวงการซอฟต์แวร์"
- Agile ถูกนิยามมาตลอดด้วยสิ่งที่มัน ไม่ใช่ นั่นคือ Waterfall โดยมีโครงตรรกะว่าถ้าไม่ทำ Agile ก็แปลว่ากำลังทำ Waterfall และ Waterfall ใช้ไม่ได้ผล
- แต่ความจริงที่ว่า Waterfall ใช้ไม่ได้ผลนั้น เป็นเรื่องที่รู้กันอยู่แล้วตั้งแต่ 1970 และ Winston W. Royce ก็ได้อธิบายเหตุผลไว้อย่างชัดเจน
- Royce เสนอทางเลือกไว้ว่า ให้เริ่มจากการออกแบบโปรแกรม, สร้าง software prototype เพื่อขัดเกลาความต้องการ, และให้ลูกค้ามีส่วนร่วมอย่างเป็นทางการ ลึกซึ้ง และต่อเนื่อง
- ทั้งหมดนี้ภายหลังถูกอ้างว่าเป็นนวัตกรรมของ Agile แต่ความจริงคือมันถูกเขียนไว้แล้วตั้งแต่ ปี 1970 ซึ่งเป็นปีถัดจากการลงจอดบนดวงจันทร์
- เชิงอรรถ 1: โปรแกรมเมอร์ของ Apollo Guidance Computer สร้างความสำเร็จระดับนั้นได้อย่างไร ทั้งที่ไม่มี story point และไม่เคยรู้หลักการอย่าง “ความใส่ใจอย่างต่อเนื่องต่อความเป็นเลิศทางเทคนิคช่วยเสริมความคล่องตัว”
งานวิจัย Bell-Thayer ปี 1976 กับประวัติศาสตร์ของการพัฒนาแบบวนซ้ำ
- งานวิจัยของ Bell และ Thayer ในปี 1976 เป็นเอกสารที่ ใช้คำว่า "Waterfall" เป็นครั้งแรก และตัวคำนี้เองก็ถูกใช้ในฐานะตัวอย่างของสิ่งที่ไม่ควรทำ
- ข้อสรุปจากการศึกษาเชิงประจักษ์ในงานนั้นคือ ข้อบกพร่องของความต้องการจะถูกค้นพบในกระบวนการพัฒนาซอฟต์แวร์ ก็ต่อเมื่อพยายามให้การออกแบบตอบสนองความต้องการนั้นจริง ๆ
- การพัฒนาแบบวนซ้ำไม่ใช่เรื่องใหม่ และได้ถูกขัดเกลาต่อเนื่องมาหลายสิบปีก่อน Agile
- แม้ก่อนที่ manifesto จะอ้างว่าปลดปล่อยวงการ แต่ Waterfall ก็ไม่ใช่เทคโนโลยีล้ำสมัยอยู่แล้ว และก็แทบไม่มีใครสงสัยอย่างจริงจังถึงประสิทธิผลของ requirements และ specification
การกลับมาของ Spec-Driven Development และหลังยุค Agile
- ด้วยการแพร่หลายของ large language model (LLM) กระแสที่โปรแกรมเมอร์หันกลับมาเขียน specification กำลังชัดเจนขึ้นอีกครั้ง
- LLM เปราะบางต่ออินพุตที่กำกวม ดังนั้นการอธิบายปัญหาให้ชัดเจนจึงกลายเป็นวิธีที่ช่วยให้สร้างโค้ดที่ถูกต้องได้
- หาก Agile เน้นว่า “ซอฟต์แวร์ที่ใช้งานได้สำคัญกว่าเอกสารที่ครอบคลุม” การพัฒนาแบบขับเคลื่อนด้วยสเปกก็เสนอข้อความตรงกันข้ามว่า “เอกสารที่ครอบคลุมสร้างซอฟต์แวร์ที่ใช้งานได้”
- Royce เคยชี้ไว้แล้วตั้งแต่ปี 1970 ว่า “การจัดทำเอกสาร, specification, และการออกแบบ คือแนวคิดเดียวกันจนกว่าจะเริ่มเขียนโค้ด และถ้าเอกสารแย่ การออกแบบก็จะแย่ด้วย”
- เขาเน้นด้วยว่า หากไม่มีเอกสาร ก็ไม่มีการออกแบบ
- เมื่อย้อนกลับไปดูงานวิจัยในปี 1970 และ 1976 จะเห็นได้ว่า Agile Manifesto ปี 2001 ไม่ได้มอบข้อค้นพบใหม่ใด ๆ
- Agile เพียงแทนที่แนวทางเชิงวิศวกรรมเดิมด้วย นิยามที่คลุมเครือและการห่อเชิงพาณิชย์ โดยไม่ได้สร้างความก้าวหน้าที่แท้จริง
- บทความวิชาการของวิศวกรเหล่านั้นกลับมีความหมายที่ชัดเจนกว่ามาก
- ในช่วงเวลาที่การพัฒนาซอฟต์แวร์ยังคงเปลี่ยนแปลงและวิวัฒน์ต่อไป ตอนนี้อาจถึงเวลาที่ต้อง ส่ง Agile เข้าสู่หน้าประวัติศาสตร์และเปลี่ยนไปสู่มุมมองใหม่
- เราควรกลับไปหาหลักการที่ชัดเจนและวิธีคิดเชิงวิศวกรรมที่จริงจัง ซึ่งวิศวกรในอดีตได้ทิ้งไว้ให้
21 ความคิดเห็น
ผมไม่เข้าใจว่าทำไมถึงยกย่องวิธีวิทยาเหล่านี้ราวกับเป็นคัมภีร์ ผู้เขียนต้นฉบับเองก็แค่มีแนวทางต่างออกไป แต่ผมคิดว่าในแง่ความยึดติดแบบหลักการตายตัวก็ไม่ได้ต่างกัน
ผมว่าบทสรุปค่อนข้างแรงไปหน่อยนะครับ ปัญหาอาจอยู่ที่การทำให้เป็นเชิงพาณิชย์หรือทำให้เป็นแบบแผนมากเกินไป แต่ก็ไม่ได้แปลว่าเครื่องมืออย่าง sprint หรือ backlog จะหมดประโยชน์ไปเสียทีเดียว อีกทั้งมันยังช่วยให้วัฒนธรรมการประชุมที่เป็นแนวราบและมุ่งเป้าไปที่เป้าหมายตั้งหลักได้ด้วยครับ จริงอยู่ว่า SDD มีความสำคัญมากขึ้น แต่ตัวสเปกนั้นเองก็ยังสามารถเขียนร่วมกับ AI ได้อย่างรวดเร็วและร่วมมือกันอยู่ดี ดังนั้นก็ยังคงเป็น agile อยู่ครับ เพียงแค่ sprint ที่เคยยาว 2 สัปดาห์ถูกย่นเหลือไม่กี่ชั่วโมงเท่านั้น แต่แก่นแท้ของการขัดเกลาแบบวนซ้ำก็น่าจะยังเหมือนเดิมครับ
เห็นด้วยครับ
แค่เรื่องการทลายการตัดสินใจแบบบนลงล่าง และการปรับปรุงซ้ำ ๆ ในรอบสั้น ๆ ก็ทิ้งสารที่มีความหมายไว้ให้เราอย่างมากแล้ว (แน่นอนว่าเทคนิค/เครื่องมือการจัดการโปรเจ็กต์ก็เช่นกัน)
บทสรุปที่ว่า 'ตัว Agile เองไม่ได้มอบมุมมองใหม่ และเหมารวมคนที่สนับสนุน Agile ทั้งหมดว่าเป็นพวกคลั่ง Agile แบบไร้เหตุผล' ดูจะรุนแรงเกินไปหน่อยครับ
เห็นด้วยครับ Agile ยังคงใช้ได้อยู่ ดูเหมือนเป็นคำพูดลอย ๆ ของคนที่ไม่เคยอยู่หน้างานจริงมากกว่า
เป็นบทความที่งี่เง่านะครับ ประเด็นสำคัญคือเราต้องเขียน spec. ให้มีความ agile ตั้งแต่ตัวมันเอง... Agile คือการปรับตัวให้เข้ากับการเปลี่ยนแปลงของความต้องการจากลูกค้าอย่างรวดเร็ว
เพราะมีคนที่มีความเข้าใจผิดและจินตนาการแบบครึ่ง ๆ กลาง ๆ เกี่ยวกับ Agile แบบนี้แหละ ทั้ง Agile และวัฒนธรรมการพัฒนาถึงได้ค่อย ๆ ผิดเพี้ยนไป
การเขียน spec ให้เป็น agile เองนี่หมายความว่าอะไรกันแน่?
ประเด็นสำคัญของบทความนั้นคือ ตั้งแต่แรกก็ยังไม่เข้าใจเลยว่า agile คืออะไรกันแน่ พูดกันแต่ว่า agile มีลักษณะแบบนี้ และควรทำแบบนั้นแบบนี้ แต่กลับไม่ค่อยเห็นบทความที่ยกให้ดูชัด ๆ ว่า นี่คือผลิตภัณฑ์ที่สร้างขึ้นด้วยวิธีการแบบ agile จริง ๆ แม้แต่พอไปอ่าน manifesto ก็ยังรู้สึกคลุมเครืออยู่เลย ถ้าแสดงให้ดูสักครั้งจะเป็นอย่างไรครับ
นี่เป็นเนื้อหาพื้นฐานที่มักปรากฏอยู่ในหนังสือเกี่ยวกับแนวทาง Agile ส่วนใหญ่ เช่น Extreme Programming ของ Kent Beck และ Scrum ของ Jeff Sutherland เป็นต้น จะดูจาก user story ก็ได้ คนส่วนใหญ่มักไม่ค่อยรู้ว่ารากฐานของ Agile คือสปรินต์ระยะสั้นและเดโมเพื่อให้ปรับตัวต่อความต้องการของลูกค้าได้อย่างรวดเร็ว
ข้อ 3 และ 4 ครับ การเขียนสเปกให้ละเอียดนั้นลงลึกได้ไม่สิ้นสุด สิ่งสำคัญคือมันมีระดับที่เหมาะกับแต่ละองค์กร จากประวัติการสร้างบริการที่ประสบความสำเร็จ เท่าที่ผมเข้าใจ ใน 99% ของกรณี ประเด็นสำคัญคืออย่าทุ่มแรงไปกับการเขียนสเปกให้เป๊ะเกินไปจนเกินจำเป็น คือไม่จมอยู่กับสิ่งนั้นนั่นเอง ดูได้จากกรณีอย่าง Summoners War, Dungeon & Fighter, Zigbang, Lineage ว่ามันถูกสร้างขึ้นมาอย่างไร
ถ้าวัฏจักรแบบวอเตอร์ฟอลหมุนครบได้ภายในวันเดียวล่ะ?
ช่วงนี้ผมเห็นกรณีแบบนี้บ่อยขึ้น
น่ากลัวตรงที่ดูเหมือนจะเห็นบ่อยที่สุดเลย...
ในประเทศเรา Agile ไม่ได้เป็นอะไรมากไปกว่าเครื่องมือไว้กดดันกำหนดการของนักพัฒนา
ในบางเกณฑ์ ทุกคนก็ล้วนเป็น Agile กันทั้งนั้นนะครับ ไม่รู้ว่าเคยมีช่วงเวลาไหนที่เราปล่อยขึ้นใช้งานได้เร็วและรับฟีดแบ็กได้เหมือนยุคนี้หรือเปล่า
นอกจากการปล่อยออกรอบสั้น ๆ แล้ว ก็ไม่รู้ว่า Agile ยังเหลืออะไรบ้าง
แบ็กล็อกกับสปรินต์เองก็มีอยู่ก่อนแล้วในรูปแบบอื่น และการสื่อสารกับลูกค้าก็มีหลายส่วนที่ไม่สอดคล้องกับความเป็นจริง สุดท้ายเลยคิดว่า เมื่อเทียบกับ Agile แล้ว การปรับปรุง DevOps กลับช่วยยกระดับการพัฒนาได้มากกว่า
บทความนี้เองก็ไม่ Agile!
คงไม่ถึงกับไม่มีโอกาสต้องอ่านโค้ดเลย ดังนั้นในมุมนี้คำพูดที่ว่าโค้ดสำคัญกว่าดูจะยังใช้ได้อยู่ และในฐานะที่เอกสารเป็นชุดคำสั่ง LLM ซึ่งเป็นผู้ลงมือพัฒนา ต้องเป็นฝ่ายอ่าน ดังนั้นในมุมนี้ก็เห็นด้วยครับ ดังนั้นข้อสรุปก็น่าจะเป็นว่าทั้งสองอย่างสำคัญพร้อมกันไม่ใช่หรือครับ
ตอนนี้ปัญหาของผลิตภัณฑ์ที่สร้างด้วย LLM คือหนี้ทางเทคนิคที่สะสมในช่วงปฏิบัติการจริง เพื่อให้ดำเนินงานต่อเนื่องได้ นักพัฒนาจำเป็นต้องเข้ามาเกี่ยวข้องกับโค้ด และถ้าเป็นเช่นนั้น อย่างน้อยในตอนนี้ผมคิดว่าโค้ดยังต้องสามารถทำหน้าที่แทนเอกสารได้อยู่ครับ
ขอถ่ายทอดข้อโต้แย้งอย่างระมัดระวังว่า ผมมองว่าโค้ดไม่สามารถทดแทนเอกสารได้ ภาษาการเขียนโปรแกรมในตอนนี้ยังไม่มีความอุดมสมบูรณ์ของการสื่อความและพลังในการถ่ายทอดแบบภาษาธรรมชาติ และในทางปฏิบัติแล้ว โค้ดที่มีมากขนาดนั้นจะอ่านกันหมดเมื่อไรกัน?
การหวังว่าจะมีโค้ดที่ทดแทนเอกสารได้เป็นทั้งความหวังและความปรารถนา แต่ก็เป็นเหมือนหอคอยบาเบลที่ไม่มีวันปีนขึ้นไปถึง
ผมว่าตั้งใจทำ OOAD ให้ดีเสียยังดูดีกว่า
ในทางกลับกัน ผมมองว่าการให้ภาษาธรรมชาติมาแทนที่โค้ดก็คงเป็นเรื่องยากเช่นกัน ภาษาธรรมชาตินั้นยิ่งเร็วกว่าโค้ดก็ยิ่งเป็นนามธรรมมากเกินไป สุดท้ายแล้วเพื่อให้คอมพิวเตอร์ประมวลผลได้ ก็ยังต้องเติมรายละเอียดลงไปอยู่ดี และดูเหมือนว่าการให้ภาษาธรรมชาติทำหน้าที่นี้จะค่อนข้างฝืน
ในการเขียนซอฟต์แวร์ ปัญหาไม่ได้อยู่ที่ความเป็นนามธรรม แต่อยู่ที่ความกำกวม ภาษาธรรมชาตินั้นโดยเนื้อแท้แล้วมีความกำกวม และยังตีความได้หลายความหมายด้วย ดังนั้นความพยายามที่จะเขียนโค้ดด้วยภาษาธรรมชาติจึงอาจไปได้ไม่ดีนัก สภาพการณ์เป็นเช่นนี้แล้ว การที่ภาษาธรรมชาติจะมาแทนที่โค้ดได้ก็ยิ่งแทบเป็นไปไม่ได้
ผม/ฉันเข้าใจและเห็นด้วยกับความเห็นที่คุณกล่าวมา
มีส่วนที่ชัดเจนว่าไม่สามารถแทนที่ด้วยโค้ดได้
ในความหมายนั้น หากจะอธิบายให้ต่างออกไปเล็กน้อย สิ่งที่ผม/ฉันอยากสื่อคือ โค้ดที่อ่านง่ายมากจะช่วยให้ไม่จำเป็นต้องสร้างเอกสารขึ้นมา
เพราะเอกสารที่สะสมเพิ่มขึ้นเมื่อซอฟต์แวร์ดำเนินไปในระยะยาว ก็สร้างภาระทางการรับรู้ให้กับนักพัฒนาเช่นกัน แก่นสำคัญคือการลดงานที่ต้องสลับดูทั้งโค้ดและเอกสารไปมา
ผม/ฉันคิดว่าไม่สามารถเหลือไว้แต่โค้ดเพียงอย่างเดียวได้ทั้งหมด
ผม/ฉันคิดว่ามันอาจแตกต่างกันไปตามบริบทและสถานการณ์ที่เผชิญอยู่
ขอบคุณสำหรับคอมเมนต์ครับ/ค่ะ
ความคิดเห็นจาก Hacker News
ผมสังเกตเห็นปรากฏการณ์ที่น่าสนใจผ่าน Agile
ถ้าล้มเหลว ก็มักจะถูกตีความว่า “ทำไม่มากพอ”
ผมเห็นรูปแบบเดียวกันนี้ในคลาวด์, ไมโครเซอร์วิส, นโยบายรัดเข็มขัด และเรื่องอื่น ๆ — สาเหตุของความล้มเหลวมักถูกอธิบายว่าเป็นเพราะ ลงมือไม่พอ ไม่ใช่เพราะแนวทางนั้นอาจผิดตั้งแต่ต้น
ถ้าทีมลองทำ Agile แล้วไม่เวิร์ก ก็จะมีตรรกะแบบป้องกันตัวว่า “นั่นไม่ใช่ Agile ที่แท้จริง” สุดท้าย Agile ก็กลายเป็นแนวคิดที่ไม่มีวันล้มเหลวได้
Agile Manifesto พูดถึงแค่คุณค่าและหลักการเท่านั้น ปัญหาคือวัฒนธรรมองค์กรที่พยายามยัดมันให้กลายเป็น process แบบฝืน ๆ
โครงสร้างที่ทำให้เราหันกลับมามองตัวเองเมื่อเกิดความล้มเหลวไม่ใช่เรื่องแย่เสมอไป ในแง่ที่กระตุ้นให้เกิดการทบทวนตนเองแทนการโทษปัจจัยภายนอก มันอาจเป็นระบบที่ดีต่อสุขภาพก็ได้
roadmap ที่สัญญาไว้กับลูกค้า กับการตอบสนองอย่างยืดหยุ่นนั้นอยู่ร่วมกันได้ยาก ความจริงคือองค์กรที่ยึดแผนเป็นศูนย์กลางแค่เลียนแบบ Agile เท่านั้น
ถ้าล้มเหลว ก็จะสรุปกันว่า “น่าจะต้องใช้เอเจนต์ให้มากกว่านี้” ฟังดูเหมือนมุกที่ว่า “token ไม่มีทางพออยู่แล้ว”
ผมเริ่มกลัว การทำ Agile ให้เป็นทางการเกินไป
ผมเคยบริหารทีมขนาด 40 คนได้สำเร็จ แต่ Agile ที่แท้จริงสรุปได้แค่สี่ประโยค — ผู้คน, ซอฟต์แวร์ที่ใช้งานได้, ความร่วมมือกับลูกค้า, และการตอบสนองต่อการเปลี่ยนแปลง
ปัญหาคือ ‘Agile ตัวใหญ่’ กลับกลายสภาพเป็น process ที่ไม่ยืดหยุ่น
พอคนมากขึ้น การจัดแนวเป้าหมายก็ยากขึ้น และสุดท้ายก็ต้องพึ่งการควบคุมกับขั้นตอนต่าง ๆ
ถึงขั้นจำกัดสิทธิ์ในการสร้าง ticket ซึ่งห่างไกลจากความยืดหยุ่นมาก
ถ้าเอกสารไม่เพียงพอ การบำรุงรักษาก็แทบเป็นไปไม่ได้ และสุดท้ายก็ไหลไปสู่ การพัฒนาแบบ YOLO
Agile ในบริษัทใหญ่ที่ผมเคยอยู่คือ คำโกหก
เพื่อนร่วมงานคนหนึ่งเคยพูดว่า “ถ้าทำงานของ sprint ถัดไปล่วงหน้า ก็จะส่งทันตลอด”
นั่นหมายความว่า Agile ทำงานเป็น ระบบผลิตตัวชี้วัด มากกว่าจะเป็นระบบทำงานจริง
ผู้จัดการพอใจแค่เห็นตัวเลขเพิ่มขึ้น และตัวผลิตภัณฑ์ก็กลายเป็นแค่ของแถมจากสถิติ
มันคุ้มค่าที่จะกลับไปอ่านต้นฉบับของ Agile Manifesto
นั่นคือจุดร่วมเพียงหนึ่งเดียวที่ทุกคนเห็นพ้องกัน เราต้องไม่ลืมว่า Waterfall ก่อนยุค Agile นั้นเลวร้ายแค่ไหน
มันเป็นอาวุธที่ช่วยยุติยุคที่บังคับให้ยึดตามกำหนดการและผลลัพธ์ตายตัว
เพราะถ้าทีมทำงานกันเองได้อย่างอิสระ ตำแหน่งของพวกเขาก็จะถูกคุกคาม
อย่างที่ Kent Beck พูดไว้ใน “Extreme Programming” Agile คือความพยายามจะหลีกเลี่ยง ทรราชย์ของความเชื่อว่าตัวเองมองเห็นทุกอย่างได้หมด
Waterfall ในอดีตพยายามคาดการณ์ทุกอย่างตั้งแต่ช่วงออกแบบ และเพิกเฉยต่อการเรียนรู้กับ feedback
แต่เมื่อเวลาผ่านไป พิธีกรรมและรูปแบบ ของ Agile กลับเข้ามาบดบังแก่นแท้
ผมยังชอบ Agentic programming อยู่ แต่สุดท้ายสิ่งสำคัญคือ บทบาทของมนุษย์ในการเชื่อมโยงบริบท
บทความต้นฉบับทำให้สับสน
ผู้เขียนบอกว่า Agile ไม่ได้สร้างอะไรใหม่ แต่พอ LLM เขียนโค้ดได้กลับบอกว่า Agile ตายแล้ว
แต่หัวใจของ Agile คือ การยอมรับว่าสเปกไม่สมบูรณ์และค่อย ๆ ปรับปรุงแบบวนซ้ำ
หลักการนี้ยังใช้ได้อยู่
Agile เป็นเพียงรูปแบบหนึ่งของแนวคิดนั้น ปัญหาคือมีการนำไปใช้แบบแย่ ๆ มากมาย
ผลิตภัณฑ์ที่ดีสุดท้ายก็มาจากวงจร สเปก → เรียนรู้ → แก้ไข
ขั้นตอนอย่าง Backlog Grooming, Sprint Review กลับยิ่ง กดการเปลี่ยนแปลง
การพัฒนาแบบอิงสเปก น่าจะอยู่ได้ไม่นาน
การสร้างซอฟต์แวร์ที่ใช้งานได้แล้ววนปรับซ้ำยังเร็วกว่า — ซึ่งสุดท้ายก็คือการหวนกลับไปหา Agile
คุณภาพของสเปกดีขึ้น และการรีวิวก็ง่ายกว่าการอ่านโค้ด
ดู GitHub link
ใน manifesto ไม่มีคำอย่าง Daily Standup หรือ Agile Coach
แก่นของมันคือ “อย่า micromanage โปรแกรมเมอร์”
หรือก็คือ จงมอบสภาพแวดล้อมและความไว้วางใจให้กับคนที่มีแรงจูงใจ
ผู้ก่อตั้งอย่าง Kent Beck, Martin Fowler เดิมตั้งใจให้มันเป็น แนวทางที่ยืดหยุ่น
แต่เมื่อเวลาผ่านไปมันก็ถูก ทำให้เป็นธุรกิจ และเกิดผู้ติดตามแบบศรัทธาสุดโต่งขึ้นมา จนความสับสนยิ่งหนักกว่าเดิม
ความสำเร็จหรือไม่สำเร็จสุดท้ายขึ้นอยู่กับ ความสามารถและทัศนคติของผู้คน
ความยาวของ sprint ก็ควรปรับตามสถานการณ์ และถ้าไม่มีสเปก ทีมก็ควรช่วยกันสร้างขึ้นมาเอง
ต่อให้เป็นยุค AI ถ้ายังมี คนที่ใช้ Agile อย่างชาญฉลาด มันก็ยังใช้ได้อยู่
ผมสงสัยว่า “เขียน spec” จริง ๆ หมายถึงอะไร
ทุกโปรเจกต์ Agile ที่ผมเคยทำมี เอกสารการออกแบบ และ ticket ก็ต่อยอดมาจากเอกสารนั้น
การพัฒนาแบบอิง ticket โดยไม่มีเอกสารน่าจะเป็นนรกแน่ ๆ
ทุกคนตีความเข้าข้างตัวเองหมด
วิธีที่ยึด ticket เป็นศูนย์กลางกลับใกล้เคียง Agile แบบบริสุทธิ์มากกว่า
Agile ปลอมทำเหมือนว่าเอกสารที่ PO หรือ PM เขียนขึ้นคือความจริง
วิธีที่คุณพูดมานั่นแหละใกล้เคียงที่สุดกับความหมายของ ‘การเขียนสเปก’ ที่ผมตั้งใจจะสื่อ