The Mythical Man-Month ทำไมเพิ่มคนแล้วโปรเจกต์ซอฟต์แวร์ยิ่งช้า: บทความว่าด้วยวิศวกรรมซอฟต์แวร์
ทำไมการเพิ่มโปรแกรมเมอร์ในโปรเจกต์ซอฟต์แวร์ที่ล่าช้ามักทำให้งานยิ่งช้า และสถาปนิกหลักคนเดียว การสร้างทีละขั้น เอกสารชัดเจน และการทดสอบรอบคอบ ช่วยคุมระบบซับซ้อนให้ตรงแผนได้อย่างไร

สารบัญ
1. บทนำ
1 นาที 36 วินาที
ถ้าโปรเจกต์ซอฟต์แวร์ของคุณกำลังล่าช้า การจ้างคนเพิ่มเพื่อหวังให้มาช่วยกู้สถานการณ์ มีแนวโน้มจะทำให้งานยิ่งช้าหนักกว่าเดิม คำเตือนนี้คือหัวใจสำคัญของหนังสือ The Mythical Man-Month ทำไมเพิ่มคนแล้วโปรเจกต์ซอฟต์แวร์ยิ่งช้า ซึ่งรวบรวมบทความที่ Frederick P. Brooks กลั่นกรองมาจากประสบการณ์หลายปีในการบริหารการพัฒนาซอฟต์แวร์ OS/360 ของ IBM ในช่วงแรกเริ่ม กฎของ Brooks ชี้ชัดว่า การเพิ่มคนเข้าไปในโปรเจกต์ที่ช้ากว่ากำหนดอยู่แล้ว มักจะผลักเส้นชัยให้ถอยห่างออกไปอีก นั่นเป็นเพราะส่วนที่ยากที่สุดของการทำซอฟต์แวร์คือการคิด และกระบวนการคิดก็ไม่ใช่สิ่งที่จะมาหั่นแบ่งให้คนหลาย ๆ หัวช่วยกันทำได้อย่างลงตัว
จากจุดตั้งต้นนี้ หนังสือได้ขยายความต่อไปว่า ซอฟต์แวร์จะออกมาดีได้ก็ต่อเมื่อคนในทีมเข้าใจปัญหาตรงกันเป็นหนึ่งเดียว โดยมีสถาปนิกหลักเพียงคนเดียวคอยกำกับดูแล ค่อย ๆ ต่อยอดงานทีละขั้นให้ใช้งานได้จริง มีการจดบันทึกเหตุผลไว้ให้คนที่มาทำงานต่อเข้าใจ และผ่านการทดสอบอย่างดีก่อนที่จะมีใครต้องพึ่งพาระบบนี้ แต่ละแนวคิดล้วนพุ่งเป้าไปที่ปัญหาซ้ำซากซึ่งคนทำงานคุ้นเคยกันดี ตั้งแต่โปรเจกต์ที่อัดคนเข้ามาจนแน่นแต่กลับเดินหน้าได้ช้า ไปจนถึงการเปิดตัวระบบที่พังตั้งแต่วันแรก และทุกแนวคิดยังมีวิธีปฏิบัติที่หัวหน้าทีมหรือคนทำงานสามารถนำไปลองใช้ได้จริงก่อนจะถึงกำหนดส่งงานครั้งต่อไป
2. เลิกกู้โปรเจกต์ที่ล่าช้าด้วยการเพิ่มคน
2 นาที 50 วินาที
การได้โปรแกรมเมอร์ใหม่ 5 คนเข้ามาช่วยงานที่กำลังจะส่งไม่ทัน ฟังดูเหมือนจะช่วยยกภูเขาออกจากอก แต่ Brooks กลับมองต่างออกไป เหตุผลของเขาซ่อนอยู่ในโครงสร้างสองชั้นของทุกโปรเจกต์ ซึ่งจะตัดสินว่าคนที่เพิ่มเข้ามาจะช่วยหรือยิ่งถ่วง
3. หาสาเหตุความล่าช้าให้เจอก่อนจ้างใคร
2 นาที 31 วินาที
เมื่อใกล้จะถึงกำหนดส่ง การจ้างคนเพิ่มมักจะดูเหมือนการตัดสินใจที่เด็ดขาด แต่การทบทวนงานอย่างตรงไปตรงมาเพียงสั้น ๆ มักจะเผยให้เห็นว่าปัญหาที่แท้จริงอยู่ในจุดที่คนใหม่เข้าไปช่วยไม่ได้ แถมความล่าช้ารอบต่อไปก็กำลังรออยู่แล้ว
4. สถาปนิกหนึ่งคนช่วยให้ระบบซับซ้อนไม่แตกเป็นเสี่ยง
2 นาที 50 วินาที
ต่อให้มีผู้เชี่ยวชาญฝีมือเยี่ยมมารวมตัวกัน ก็ยังอาจสร้างระบบที่จบลงด้วยความขัดแย้งและส่งงานไม่ทันกำหนดได้ Brooks จึงวางบทบาทหนึ่งไว้เป็นหัวใจของการแก้ปัญหานี้ พร้อมกับเอกสารที่คนในบทบาทนี้ต้องคอยดูแล ซึ่งจะไม่มีวันเขียนเสร็จ
5. ส่งโครงที่ใช้งานได้ก่อนแล้วค่อยขัดเกลา
2 นาที 47 วินาที
สตาร์ตอัปที่กำลังขับเคี่ยวกับคู่แข่งย่อมอยากเปิดตัวแบบไร้ที่ติ และแผนงานบนกระดาษก็ดูครบถ้วนดี แต่หนังสือเล่มนี้ชี้ว่าแผนพวกนั้นส่วนใหญ่เป็นแค่การคาดเดา พร้อมเสนอวิธีสร้างงานที่เปลี่ยนปัญหาไม่คาดคิดให้เป็นการปรับแก้เล็กน้อย
6. จดเหตุผลไว้ว่าโค้ดมีอยู่เพื่ออะไร
2 นาที 39 วินาที
การทำเอกสารอาจฟังดูเป็นงานที่น่าเบื่อที่สุดของการทำซอฟต์แวร์ แต่ Brooks กลับผูกเรื่องนี้เข้ากับหลักการที่ตัดสินว่าระบบที่ขยายใหญ่ขึ้นจะยังคงเป็นการออกแบบเดียวกัน หรือจะค่อย ๆ กลายเป็นเมืองที่ไม่มีใครหาทางเจอ
7. ทดสอบก่อนที่ผู้ใช้จะเจอรอยรั่ว
2 นาที 31 วินาที
หลังจากทุ่มเทสร้างงานมาหลายเดือน การรีบเปิดตัวไปก่อนแล้วค่อยตามแก้ทีหลังฟังดูน่าสนใจ แต่ถังน้ำมันรั่ว สะพานที่ยังไม่ผ่านการทดสอบ และร้านอาหารเปิดใหม่ จะอธิบายว่าทำไมการเดิมพันแบบนี้ถึงแพ้ และการทดสอบควรตรวจเช็กอะไรกันแน่
8. บทสรุป
2 นาที 00 วินาที
สิ่งที่ Brooks ตีแผ่ออกมาก็คือความเชื่อผิด ๆ ที่ฟังดูสบายใจ ซึ่งมองว่างานซอฟต์แวร์ก็เหมือนงานทั่วไป ที่ยิ่งระดมคนและกดดันมากเท่าไร งานก็จะยิ่งเสร็จเร็วขึ้นเท่านั้น แต่บทความของเขากลับชี้ไปในทางตรงกันข้าม ความยากที่แท้จริงของซอฟต์แวร์อยู่ที่กระบวนการคิด และความคิดก็เป็นสิ่งที่เอามาแบ่งแยก เร่งรัด หรือปล่อยทิ้งไว้โดยไม่จดบันทึกไม่ได้เลย
ทางออกแทบทุกข้อในหนังสือเล่มนี้ ล้วนมีไว้เพื่อปกป้องสิ่งสำคัญที่เปราะบางมากเพียงสิ่งเดียว นั่นคือการที่คนในทีมมองเห็นภาพของปัญหาตรงกัน การมีสถาปนิกหลักเพียงคนเดียวจะช่วยรักษาภาพรวมนี้ไว้ท่ามกลางผู้เชี่ยวชาญหลายฝ่าย การวางโครงร่างระบบที่ใช้งานได้จริงอยู่เสมอจะช่วยให้งานเติบโตได้โดยไม่พังลงมาเสียก่อน การจดบันทึกเหตุผลในการตัดสินใจจะช่วยส่งต่อความเข้าใจนี้ไปถึงคนที่เข้ามาทำงานทีหลัง และการทดสอบระบบจะช่วยนำงานที่ทำเสร็จแล้วไปวัดผลกับผู้ใช้จริง ซึ่งเป็นกลุ่มคนที่ซอฟต์แวร์นี้สร้างขึ้นมาเพื่อรับใช้
ครั้งต่อไปที่ตารางงานเริ่มเลื่อนออกไป จงยั้งความอยากที่จะจ้างคนเพิ่มไว้ก่อน ให้หาสาเหตุให้เจอว่าความล่าช้าที่แท้จริงอยู่ตรงไหน และมีงานส่วนไหนที่ต้องพึ่งพากันจนอาจทำให้สถานการณ์แย่ลงไปอีก แล้วถ้าจำเป็นต้องเพิ่มคนจริง ๆ ก็ให้ค่อย ๆ ทยอยรับเข้ามา ส่วนเวลาเริ่มโปรเจกต์ใหม่ ให้สร้างเวอร์ชันที่บางที่สุดแต่ทำงานได้ครบตั้งแต่ต้นจนจบขึ้นมาก่อน จากนั้นค่อย ๆ ขยายงานด้วยการเติมส่วนที่ใช้งานได้จริงเข้าไปทีละชิ้น และอย่าลืมจดบันทึกไว้ด้วยว่าทำไมถึงตัดสินใจทำเรื่องสำคัญแต่ละเรื่องออกมาแบบนั้น
การได้โปรแกรมเมอร์มาเพิ่มอีก 5 คนอาจให้ความรู้สึกเหมือนมีทีมกู้ภัยเข้ามาช่วย แต่ Brooks ก็เตือนสติเราไว้ว่า ในโปรเจกต์ที่กำลังล่าช้า คนเหล่านี้มักกลายเป็นตัวถ่วงที่ทำให้งานล่าช้ารอบใหม่เสียเอง
เกี่ยวกับหนังสือเล่มนี้
หนังสือเล่มนี้เกี่ยวกับอะไร?
คนทำซอฟต์แวร์ทุกทีมคงคุ้นเคยกับสถานการณ์นี้ดี เมื่อกำหนดส่งงานเริ่มเลื่อนออกไป ทางออกแรกที่ดูชัดเจนที่สุดก็คือการหาคนมาเพิ่ม แต่ Frederick P. Brooks ซึ่งเคยบริหารการพัฒนาซอฟต์แวร์ OS/360 ของ IBM ในช่วงแรก กลับชี้ว่าสัญชาตญาณนี้มักให้ผลตรงกันข้าม กฎอันโด่งดังของเขาระบุว่า การเพิ่มคนเข้าไปในโปรเจกต์ที่ล่าช้าอยู่แล้ว มักจะทำให้งานยิ่งช้าลงไปอีก หนังสือเล่มนี้อธิบายว่า งานซอฟต์แวร์แบ่งออกเป็นสองชั้น ชั้นแรกคืองานเตรียมเครื่องมือและโครงสร้างพื้นฐาน ซึ่งแบ่งกันทำได้ ส่วนชั้นที่สองคือการแก้ปัญหาหลักจริง ๆ ซึ่งต้องใช้ความคิดที่ลึกซึ้งและสร้างสรรค์ ถ้าแบ่งให้คนใหม่ไปช่วยทำ ภาพรวมของงานก็จะแตกเป็นเสี่ยง ๆ จากข้อสังเกตนี้ หนังสือได้วางแนวทางสร้างซอฟต์แวร์ไว้หลายข้อ เริ่มจากการหาสาเหตุของความล่าช้าก่อนจะเพิ่มคน การตั้งสถาปนิกหลักเพียงคนเดียวเพื่อดูแลการออกแบบให้เป็นหนึ่งเดียวกัน การสร้างเวอร์ชันบาง ๆ ที่ใช้งานได้ขึ้นมาก่อนแล้วค่อยขยายทีละขั้น การจดบันทึกเหตุผลเบื้องหลังการตัดสินใจ และการทดสอบทั้งระบบการทำงานและประสบการณ์ของผู้ใช้ก่อนเปิดตัว เนื้อหาทั้งหมดนี้จะช่วยให้คุณมีกรอบคิดที่ชัดเจนเรื่องโปรเจกต์ที่ล่าช้า การจัดโครงสร้างทีม และคุณภาพงาน ซึ่งใช้ได้กับทุกทีมที่สร้างงานซับซ้อน
ข้อมูลหนังสือ
หนังสือเล่มนี้เหมาะกับใคร
ผู้นำทีมที่ถูกกดดันให้จ้างคน
ผู้จัดการฝ่ายวิศวกรรมและหัวหน้าทีมที่กำลังเจอปัญหาส่งงานไม่ทันกำหนด และถูกกดดันให้จ้างคนเพิ่ม
ผู้ก่อตั้งที่มีทีมเล็ก
ผู้ก่อตั้งสตาร์ตอัปที่กำลังวางแผนเปิดตัวผลิตภัณฑ์ชิ้นแรกด้วยทีมขนาดเล็ก
ว่าที่สถาปนิกหรือหัวหน้าทีม
นักพัฒนาซอฟต์แวร์ที่กำลังก้าวขึ้นมาเป็นสถาปนิกหรือหัวหน้าทีม ซึ่งต้องคอยดูแลให้ผู้เชี่ยวชาญหลายฝ่ายทำงานภายใต้กรอบการออกแบบเดียวกัน
เกี่ยวกับผู้เขียน
Frederick P. Brooks
Frederick P. Brooks Jr. (ค.ศ. 1931 ถึง 2022) เป็นทั้งสถาปนิกคอมพิวเตอร์ วิศวกรซอฟต์แวร์ และนักวิทยาศาสตร์คอมพิวเตอร์ สมัยที่ทำงานอยู่กับ IBM เขาได้ร่วมออกแบบสถาปัตยกรรมของคอมพิวเตอร์รุ่น Stretch และ Harvest ทั้งยังเคยดำรงตำแหน่ง Corporate Project Manager ดูแลคอมพิวเตอร์ตระกูล System/360 และบริหารการพัฒนาซอฟต์แวร์ OS/360 ในระยะแรก ต่อมาในปี 1964 เขาได้ก่อตั้งภาควิชาวิทยาการคอมพิวเตอร์ที่ University of North Carolina at Chapel Hill และเป็นหัวหน้าภาควิชานี้อยู่ถึง 20 ปี ส่วนรางวัลเกียรติยศที่เขาได้รับก็มีทั้ง National Medal of Technology และ ACM Turing Award
คะแนนและรีวิว
สรุปคะแนนรีวิว
ความคิดเห็นจากผู้อ่าน
ผู้ฟังมองว่าผลงานชิ้นนี้ให้ข้อสังเกตที่ยอดเยี่ยมและถือเป็นหนังสือที่วิศวกรซอฟต์แวร์ต้องอ่าน โดยชี้ให้เห็นถึงคุณค่าที่สำคัญและแนวคิดที่ไม่ล้าสมัย หนังสือเล่มนี้ได้รับการยกย่องว่าเป็นตำราหลักในด้านการเป็นผู้นำโปรเจกต์และการพัฒนาซอฟต์แวร์ ซึ่งมีผู้ฟังคนหนึ่งเน้นย้ำว่ามีประโยชน์อย่างยิ่งสำหรับการดูแลงานขนาดใหญ่และซับซ้อน สำนวนการเขียนได้รับเสียงตอบรับที่หลากหลาย และมุมมองเกี่ยวกับความเก่าของเนื้อหาก็แตกออกเป็นสองฝั่ง ระหว่างคนที่มองว่าเป็นผลงานชิ้นเอกเหนือกาลเวลา กับคนที่รู้สึกว่าเนื้อหาค่อนข้างตกยุคไปบ้างแล้ว
รีวิวยอดนิยม
หยิบเล่มนี้มาอ่านตอนเป็นหัวหน้านักพัฒนาปีแรก แล้วให้ความรู้สึกเหมือน Brooks มานั่งอยู่ข้างๆ ในห้องด้วยกันเลย แม้ว่าเทคโนโลยีในเรื่องจะเก่าไปหลายสิบปีแล้ว แต่จิตวิทยามนุษย์ในการบริหารโปรเจกต์ไม่ได้เปลี่ยนไปเลยสักนิด การเปรียบเปรยอันโด่งดังเรื่องที่ว่าผู้หญิงเก้าคนช่วยกันคลอดลูกในเดือนเดียวไม่ได้ ทุกวันนี้ก็ยังเฉียบคมไม่ต่างจากยุค 70 เราเองก็ยังพยายามระดมยัดคนเพิ่มเข้าไปแก้ปัญหาเดดไลน์ที่กำลังจะพัง แล้วสุดท้ายมันก็พังไม่เป็นท่าใส่หน้าเราทุกครั้งไป เอาจริงๆ บทความ 'No Silver Bullet' ควรเป็นสิ่งที่ผู้บริหารทุกคนต้องอ่าน โดยเฉพาะคนที่คิดว่า AI หรือเฟรมเวิร์กใหม่ๆ จะเข้ามาแก้ปัญหาพื้นฐานระดับองค์กรได้ทั้งหมด บางช่วงเนื้อหาอ่านยากและอัดแน่นไปบ้าง และตัวอย่างเรื่อง OS/360 ก็มาจากยุคสมัยอื่นของวงการคอมพิวเตอร์อย่างเห็นได้ชัด อย่างไรก็ตาม แก่นความรู้เรื่องความสมบูรณ์ของแนวคิดและโมเดลทีมศัลยแพทย์ยังคงใช้ได้จริงอย่างไม่น่าเชื่อ คุณแค่ต้องมองข้ามเรื่องบัตรเจาะรูและการใช้ภาษาที่ไม่ได้ครอบคลุมคนทุกกลุ่มไปให้ได้ แล้วจะเห็นความหลักแหลมที่ซ่อนอยู่ข้างใต้
ดูเพิ่มเติมแค่บท 'No Silver Bullet' บทเดียวก็คุ้มค่าตัวหนังสือแล้วสำหรับใครก็ตามที่จริงจังกับการบริหารงานวิศวกรรม เราอยู่ในอุตสาหกรรมที่วิ่งไล่ตามเทคโนโลยีใหม่ๆ ที่ฮือฮาอยู่ตลอดเวลา แต่ Brooks คอยเตือนเราว่าความซับซ้อนคือส่วนหนึ่งที่แยกไม่ออกจากงานนี้ การเพิ่มคนเข้าไปในโปรเจกต์ซอฟต์แวร์ที่ล่าช้ามีแต่จะทำให้มันช้าลงไปอีก นี่คือกฎธรรมชาติที่เหล่าผู้จัดการก็ยังไม่ยอมรับกันอยู่ดี ผมชอบการเปรียบเทียบในเล่มมาก ตั้งแต่เรื่องสัตว์ยุคก่อนประวัติศาสตร์ในบ่อยางมะตอยไปจนถึงความเป็นเอกภาพทางสถาปัตยกรรมของมหาวิหาร สำนวนการเขียนมีความเป็นวรรณกรรมอย่างน่าประหลาดใจสำหรับหนังสือสายเทคนิค ซึ่งช่วยให้เนื้อหาส่วนที่หนักๆ เกี่ยวกับประวัติศาสตร์ของ IBM 360 ย่อยง่ายขึ้นเยอะ คือหนังสือเล่มนี้มันเก่าอย่างเห็นได้ชัดแหละ และสะท้อนบรรทัดฐานทางสังคมในยุคนั้น ซึ่งอ่านแล้วก็อาจจะหงุดหงิดใจได้บ้าง แต่ถ้าคุณโฟกัสไปที่แง่มุมทางสังคมวิทยาของวิธีที่ทีมสร้างระบบอันซับซ้อน คุณจะได้พบกับความรู้อันลุ่มลึกในนี้มากกว่าอ่านบล็อกเกี่ยวกับ Agile ทั่วๆ ไปรวมกันสิบเว็บเสียอีก มันมีเหตุผลอยู่ว่าทำไมเล่มนี้ถึงเป็นตำราระดับรากฐาน
ดูเพิ่มเติมในที่สุดก็ได้ฤกษ์อ่านหนังสือคลาสสิกเล่มนี้จนจบ แล้วบอกตามตรงว่าตกใจมากที่โลกของการบริหารโปรเจกต์แทบไม่ได้เปลี่ยนไปเลย คำคมอันโด่งดังที่ว่าโปรเจกต์ล่าช้าไปเป็นปีได้ยังไง 'ก็ช้าไปทีละวันไงล่ะ' เป็นประโยคที่ผมอยากจะสักไว้ที่หน้าผากตัวเองเลย คนเรามักจะมองข้ามความล่าช้าเล็กๆ น้อยๆ ได้ง่ายมาก จนกระทั่งมันสะสมพอกพูนกลายเป็นหายนะที่แก้ไขไม่ได้ Brooks มีความสามารถอันน่าทึ่งในการนำปัญหาทางสังคมวิทยาที่ซับซ้อนมาเปลี่ยนเป็นอุปมาที่ชัดเจนและนำไปใช้ได้จริง ฉบับครบรอบ 20 ปีมีการเพิ่มบทสะท้อนความคิดที่ยอดเยี่ยมเกี่ยวกับไอเดียดั้งเดิมของเขาเข้าไปด้วย ซึ่งพิสูจน์ให้เห็นว่าเขาพร้อมจะยอมรับในจุดที่ตัวเองเคยคิดผิด ส่วนตัวผมมองว่าช่วงที่ถกกันเรื่อง 'Second System Effect' เป็นส่วนที่มีประโยชน์ที่สุดในหนังสือรวมบทความเล่มนี้แล้ว มันเป็นคำเตือนที่วิศวกรอาวุโสทุกคนต้องได้ฟังก่อนจะเริ่มโปรเจกต์ใหญ่ตัวใหม่แกะกล่อง แม้จะมีการอ้างอิงที่ล้าสมัยไปบ้างอย่างเรื่องเทปแม่เหล็ก แต่ข้อมูลเชิงลึกทางจิตวิทยานั้นเป็นอมตะอย่างแท้จริง เทคลีดทุกคนควรมีติดชั้นหนังสือไว้สักเล่ม
ดูเพิ่มเติมให้ตายเถอะ รู้งี้ผมน่าจะได้อ่านเล่มนี้เมื่อสิบปีก่อน แทนที่จะต้องมาเรียนรู้บทเรียนราคาแพงพวกนี้ด้วยตัวเองแบบเจ็บปวด ผมอยากจะเหมาหนังสือเล่มนี้สักร้อยเล่มแล้วเอาไปแจกให้ลูกค้าทุกคนที่ถามว่าทำไมเราถึงแค่ 'เพิ่มคนเข้าไป' เพื่อให้ทันเดดไลน์ไม่ได้ มันน่าหงุดหงิดนะที่ผ่านการพัฒนาซอฟต์แวร์มาสี่ทศวรรษแล้ว แต่เราก็ยังไม่จำบทเรียนเหล่านี้กันอีกตั้งมากมาย Brooks อธิบายเรื่องภาระในการสื่อสารและความจำเป็นของการมีวิสัยทัศน์ที่เป็นหนึ่งเดียวได้อย่างชัดเจนแจ่มแจ้ง จนทำให้คุณต้องสงสัยว่าทำไมพวกเราถึงยังต้องมาดิ้นรนกับเรื่องพื้นฐานพวกนี้อยู่ บทที่ว่าด้วยเรื่อง 'No Silver Bullet' คือผลงานชิ้นเอกทางตรรกะที่ผ่าทะลุคำโฆษณาชวนเชื่อทางการตลาดทั้งหมดของอุตสาหกรรมเทค บอกตามตรงว่าผมไม่สนใจหรอกว่าตัวอย่างในเล่มจะเป็นเรื่องเมนเฟรมและไมโครฟิช เพราะองค์ประกอบด้านมนุษย์นั้นเหมือนกับสิ่งที่ผมเห็นอยู่ทุกวันเป๊ะๆ มันเป็นผลงานชิ้นเอกของวรรณกรรมสายเทคนิคที่ให้ความสำคัญกับผู้คนซึ่งอยู่เบื้องหลังโค้ด ถ้าคุณทำงานด้านซอฟต์แวร์แล้วยังไม่ได้อ่านเล่มนี้ คุณกำลังพลาดสิ่งสำคัญและทำร้ายตัวเองอย่างมหันต์ นี่คือรากฐานของวิชาชีพเราทั้งหมด
ดูเพิ่มเติมเคยสงสัยไหมว่าทำไมโปรเจกต์ซอฟต์แวร์ถึงยังล้มเหลวด้วยวิธีเดิมๆ เหมือนเมื่อห้าสิบปีก่อน การได้อ่านบทแรกเรื่อง 'The Tar Pit' ทำให้ผมตระหนักว่าปัญหาการดิ้นรนพื้นฐานของการเขียนโปรแกรมเป็นเรื่องสากลและเหนือกาลเวลา Brooks ถ่ายทอดความรู้สึกของการจมดิ่งลงไปในความยุ่งเหยิงของระบบที่ต้องพึ่งพากันและข้อกำหนดที่เปลี่ยนไปมาได้อย่างสมบูรณ์แบบ คำเตือนของเขาเกี่ยวกับ 'Second System Effect' ที่นักออกแบบมักจะใส่ลูกเล่นและฟีเจอร์ทุกอย่างเท่าที่จะจินตนาการได้จนล้นเกินในโปรเจกต์ถัดไป เป็นอะไรที่แทงใจดำสุดๆ ผมเคยเห็นเหตุการณ์แบบนี้เป๊ะๆ เกิดขึ้นในบริษัทอย่างน้อยสามแห่ง พูดกันตามตรง คุณต้องทำเป็นมองข้ามมุมมองทางสังคมที่ค่อนข้างอนุรักษ์นิยมของเขา รวมถึงการใช้สรรพนามเพศชายตลอดทั้งเล่มไปให้ได้ ถ้าคุณกรองเอาบริบทที่ล้าสมัยออกไปได้ ตรรกะที่เหลืออยู่เกี่ยวกับการสื่อสารในทีมและความสอดคล้องทางสถาปัตยกรรมคือทองคำล้วนๆ มันไม่ใช่หนังสือที่สมบูรณ์แบบตามมาตรฐานยุคปัจจุบัน แต่แก่นข้อมูลเชิงลึกข้างในยังเฉียบคมอย่างน่าประหลาดใจเมื่อเทียบกับอายุของมัน
ดูเพิ่มเติมในฐานะคนที่เข้าสู่วงการนี้ผ่านบูตแคมป์ไม่ได้จบปริญญาวิทยาการคอมพิวเตอร์มาโดยตรง ตอนแรกผมก็แอบกังขาอยู่เหมือนกันกับการต้องมาอ่านหนังสือตั้งแต่ยุค 70 อย่างไรก็ตาม คำแนะนำที่ให้ 'วางแผนที่จะทิ้งตัวแรกไปได้เลย' เพราะยังไงคุณก็ต้องได้ทิ้งแน่ๆ น่าจะเป็นสิ่งที่อ่านแล้วปลดล็อกความคิดได้ดีที่สุดในปีนี้เลย มันเป็นเครื่องเตือนใจชั้นดีว่าเวอร์ชันแรกคือการเรียนรู้เสมอ และแทบจะไม่เคยเป็นผลิตภัณฑ์ตัวสุดท้ายเลย แนวคิดเรื่องความสมบูรณ์ของแนวคิดก็ติดอยู่ในหัวผมเหมือนกัน โดยเฉพาะไอเดียที่ว่าระบบต้องมีวิสัยทัศน์ที่เป็นหนึ่งเดียวกัน มันช่วยอธิบายได้เลยว่าทำไมแอปสมัยใหม่หลายๆ ตัวถึงให้ความรู้สึกเหมือนเอาฟีเจอร์ที่ออกแบบโดยคณะกรรมการมายำรวมกันแบบสะเปะสะปะ แต่ผมรู้สึกว่าส่วนที่พูดถึง 'ทีมศัลยแพทย์' แอบแปลกไปหน่อย โดยเฉพาะไอเดียเรื่องการมีเลขาหลายคนและมีผู้ช่วยนักบินหนึ่งคนเพื่อคอยซัพพอร์ตหัวหน้านักพัฒนาแค่คนเดียว มันดูเป็นการบริหารจากบนลงล่างมากๆ และไม่ค่อยเข้ากับการทำงานของทีมแบบข้ามสายงานในยุคปัจจุบันเท่าไหร่ ถึงอย่างนั้น บทความส่วนใหญ่ก็ชวนให้ขบคิดได้อย่างไม่น่าเชื่อและยังเข้ากับงานที่ต้องเจอในแต่ละวันได้ดี
ดูเพิ่มเติมหลังจากได้ยินผู้จัดการของผมยกคำพูดจาก 'กฎของ Brooks' มาอ้างเป็นรอบที่ร้อย ผมก็เลยตัดสินใจว่าถึงเวลาต้องมาอ่านงานต้นฉบับด้วยตัวเองแล้ว ผมประหลาดใจมากที่ตัวเองเพลิดเพลินไปกับสำนวนการเขียนได้ขนาดนี้ โดยเฉพาะวิธีที่เขาเชื่อมโยงการออกแบบซอฟต์แวร์เข้ากับช่างสร้างมหาวิหารแห่งแร็งส์ มันเป็นมุมมองที่ลึกซึ้งเชิงปรัชญามากเกี่ยวกับความหมายของการสร้างสรรค์สิ่งที่ซับซ้อนและงดงาม อุปมาเรื่อง 'บ่อยางมะตอย' ก็เห็นภาพชัดเจนอย่างไม่น่าเชื่อ มันอธิบายความรู้สึกของโปรเจกต์ที่ค่อยๆ สูญเสียแรงขับเคลื่อนเมื่อถูกถ่วงด้วยน้ำหนักของตัวมันเองได้อย่างสมบูรณ์แบบ ข้อติเดียวของผมจริงๆ ก็คือการขาดความหลากหลายอย่างเห็นได้ชัดในตัวอย่างที่ยกมา และการใช้สรรพนามเพศชายอยู่ตลอดเวลา ซึ่งทำให้รู้สึกเหมือนเป็นหนังสือแบบ 'คลับของผู้ชาย' มากๆ จากประสบการณ์ของผม บทเรียนหลักเกี่ยวกับความสมบูรณ์ของแนวคิดคือส่วนที่มีคุณค่าที่สุดของหนังสือเล่มนี้สำหรับนักพัฒนายุคใหม่ ถือเป็นหนังสือที่ดีเล่มหนึ่งเลยถ้าคุณสามารถมองข้ามวัฒนธรรมออฟฟิศยุค 1970 ไปได้แล้วโฟกัสแค่เรื่องสถาปัตยกรรม
ดูเพิ่มเติมคนเราจะอ้างอิงถึงหอคอยบาเบลหรือมหาวิหารแห่งแร็งส์ได้สักกี่ครั้งกันก่อนที่มันจะชักจะมากเกินไป ผมยอมรับนะว่า Brooks เป็นระดับตำนานในวงการนี้ แต่การมาอ่านเล่มนี้ในปี 2024 ก็แอบช็อกกับวัฒนธรรมในยุคนั้นอยู่หน่อยๆ การที่โลกทัศน์ของเขาไม่มีผู้หญิงอยู่เลยเป็นอะไรที่ชัดเจนจนแสบตา และการใส่บันทึกเกี่ยวกับ 'แผนการของพระเจ้าสำหรับการแต่งงาน' ลงในคู่มือทางเทคนิคก็เป็นเรื่องที่พิลึกมาก ผมเข้าใจถึงความสำคัญทางประวัติศาสตร์ของกฎของ Brooks นะ แต่ส่วนที่เหลือของหนังสือให้ความรู้สึกเหมือนกำลังฝืนลุยอ่านประวัติศาสตร์ยุคโบราณของ IBM บอกตามตรงว่า รายละเอียดทางเทคนิคเกี่ยวกับไมโครฟิชและการอัปเดตคู่มือไม่ได้มีประโยชน์อะไรนักสำหรับคนที่ทำงานในสภาพแวดล้อมแบบ CI/CD สมัยใหม่ แม้จะมีข้อคิดดีๆ เรื่องภาระในการสื่อสารอยู่บ้าง แต่ผมกลับพบว่าตัวเองอ่านข้ามๆ เนื้อหาส่วนใหญ่ไป เพราะรู้สึกเหมือนกำลังเรียนวิชาประวัติศาสตร์มากกว่าอ่านคู่มือแนะแนว ถ้ามองเป็นของสะสมเข้าพิพิธภัณฑ์ก็ถือว่าโอเค แต่ไม่ควรเป็นหนังสือเล่มแรกที่คุณยื่นให้พนักงานใหม่
ดูเพิ่มเติมไม่ค่อยเหมือนที่คาดหวังไว้เมื่อเทียบกับกระแสคำชมที่อวยกันหนักมาก แต่ก็พอเข้าใจได้ว่าทำไมมันถึงเป็นการปฏิวัติวงการตอนที่วางแผงครั้งแรก แนวคิดเรื่อง 'Mythical Man-Month' ขึ้นหิ้งเป็นความคลาสสิกได้แบบมีเหตุผลรองรับอยู่ แต่บทความเรื่อง 'ทีมศัลยแพทย์' ที่มีบทบาทนักบินและผู้ช่วยนักบินให้ความรู้สึกที่หลุดจากความเป็นจริงไปโดยสิ้นเชิง การให้คนคนเดียวเป็นคนคิดทั้งหมดในขณะที่คนอื่นๆ ที่เหลือทำหน้าที่เป็นแค่ฝ่ายสนับสนุน ฟังดูเหมือนเป็นสูตรสำเร็จที่จะนำไปสู่ภาวะหมดไฟและขวัญกำลังใจที่ตกต่ำ นอกจากนี้ การเน้นหนักไปที่เรื่องคู่มือของ OS/360 ก็ให้ความรู้สึกเหมือนพาออกนอกเรื่องไปไกลมาก ซึ่งไม่ได้ช่วยเพิ่มความเข้าใจเกี่ยวกับการพัฒนาซอฟต์แวร์ยุคใหม่ให้ผมสักเท่าไหร่ พูดกันตามตรง Brooks เขียนด้วยน้ำเสียงที่ทรงภูมิมาก และข้อสังเกตของเขาเกี่ยวกับความล้มเหลวในการสื่อสารแบบ 'หอคอยบาเบล' ก็ตรงเผง เพียงแต่ว่าคุณต้องเอามาแปลความหมายในหัวเยอะมากเพื่อจะนำแนวคิดเหล่านี้ไปปรับใช้กับทีมยุคใหม่ที่ทำงานแบบอไจล์และทำงานจากระยะไกล ผมว่ามันคุ้มที่จะอ่านแบบผ่านๆ เพื่อเก็บไอเดียใหญ่ๆ นะ แต่ไม่ต้องรู้สึกแย่หรอกถ้าคุณจะพบว่าตัวเองรู้สึกเบื่อกับรายละเอียดทางเทคนิคของคอมพิวเตอร์ยุคกลางศตวรรษ
ดูเพิ่มเติมหนังสือเล่มนี้เอาเข้าจริงก็เหมือน 'The Elements of Style' ของวงการเขียนโปรแกรม คือคนเอาแต่แนะนำต่อๆ กันมาเพราะรู้สึกว่าต้องแนะนำ ไม่ใช่เพราะว่ามันมีประโยชน์จริงๆ คำแนะนำที่นำไปใช้ได้จริงส่วนใหญ่ถูกฝังอยู่ใต้กองเกร็ดเล็กเกร็ดน้อยเกี่ยวกับการพัฒนาเมนเฟรมและไมโครฟิช ในยุคของ GitHub และ Stack Overflow แบบนี้ เรายังต้องมานั่งอ่านข้อมูลการอัปเดตคู่มือของ OS/360 เป็นหน้าๆ กันอีกเหรอ พูดตรงๆ เลยนะ การที่หนังสือทั้งเล่มไม่ใช้สรรพนามเพศหญิงเลยแม้แต่คำเดียวมันทำให้รู้สึกแปลกแยกอย่างไม่น่าเชื่อ แม้แต่อุปมาหลักของเรื่องอย่าง 'man-months' ก็ยังให้ความรู้สึกเหมือนเป็นวิธีมองแรงงานมนุษย์ที่ล้าสมัยและลดทอนความเป็นมนุษย์ แม้ผมจะเข้าใจว่ากฎของ Brooks นั้นสำคัญ แต่คุณสามารถเรียนรู้เรื่องนั้นได้จากวิดีโอ YouTube ความยาวห้านาทีโดยไม่ต้องมาทนอ่านการเปรียบเทียบทางศาสนาของเขา อุตสาหกรรมนี้ก้าวข้ามวิธีคิดที่ตายตัวและยึดติดกับลำดับขั้นแบบนี้ไปแล้ว และผมคิดว่ารายชื่อหนังสือแนะนำของเราก็ควรก้าวข้ามไปได้แล้วเหมือนกัน ถึงเวลาเลิกยกย่องหนังสือเล่มนี้ว่าเป็นคัมภีร์ศักดิ์สิทธิ์ของการบริหารทีมพัฒนาเสียที
ดูเพิ่มเติมคำถามเกี่ยวกับหนังสือเล่มนี้
กฎของ Brooks ในหนังสือ The Mythical Man-Month คืออะไร
กฎของ Brooks ระบุว่า การเพิ่มคนเข้าไปในโปรเจกต์ซอฟต์แวร์ที่ล่าช้าอยู่แล้ว มักจะทำให้งานยิ่งล่าช้ากว่าเดิม หนังสืออธิบายว่า งานเตรียมเครื่องมือและโครงสร้างพื้นฐานนั้นแบ่งกันทำได้ แต่งานออกแบบแกนกลางของระบบต้องอาศัยการคิดอย่างลึกซึ้ง ซึ่งถ้าแบ่งให้หลายคนทำ ภาพรวมก็จะแตกเป็นเสี่ยง ๆ นอกจากนี้ คนใหม่ยังต้องได้รับการฝึกสอนจากคนเก่าที่มีประสบการณ์ ซึ่งดึงเวลาไปจากตัวโปรเจกต์
เมื่อโปรเจกต์ล่าช้า ผู้จัดการควรทำอย่างไรแทนการจ้างคนเพิ่ม
Brooks แนะนำให้เริ่มจากการตรวจเช็กสภาพงานอย่างตรงไปตรงมา โดยนำความคืบหน้าไปเทียบกับเป้าหมายย่อย เพื่อดูว่ามีแค่โมดูลเดียวที่ทำไม่ทัน หรืองานกำลังเลื่อนทั้งโปรเจกต์ จากนั้นให้ประเมินความเสี่ยงเพื่อมองหาคอขวดในอนาคต เช่น งานที่ต้องรอส่วนอื่นทำเสร็จ หรือซอฟต์แวร์จากบริษัทอื่นที่ยังไม่ใช่เวอร์ชันสมบูรณ์ และถ้าจำเป็นต้องเพิ่มคนจริง ๆ ก็ให้ทยอยรับเข้ามาทีละน้อย เพื่อให้ทีมเดิมยังทำงานเข้าขากันได้
ตามแนวคิดของ Brooks สถาปนิกหลักมีหน้าที่ทำอะไร
สถาปนิกหลักมีหน้าที่ดูแลระบบขนาดใหญ่ให้มีความเป็นเอกภาพ จากตัวอย่างเรื่องระบบปฏิบัติการในหนังสือ คนในบทบาทนี้จะดูแลคู่มือการออกแบบ ซึ่งอธิบายว่าส่วนประกอบต่าง ๆ ควรทำงานและเชื่อมต่อกันอย่างไร พร้อมปรับปรุงคู่มือเมื่อผลการทดสอบหรือความคิดเห็นชี้ว่ามีความต้องการใหม่ ๆ นอกจากนี้ยังต้องจัดประชุมเป็นประจำให้แต่ละทีมนำผลงานมาดูร่วมกัน และชี้ขาดข้อขัดแย้งโดยยึดประโยชน์ของโปรเจกต์โดยรวม
ความเป็นเอกภาพเชิงแนวคิดในงานซอฟต์แวร์คืออะไร
ความเป็นเอกภาพเชิงแนวคิดคือหลักการที่ว่า สถาปัตยกรรมของระบบจะต้องสอดคล้องเป็นเนื้อเดียวกันตลอดทั้งระบบ เปรียบได้กับเมืองที่ถนนและสวนสาธารณะทุกแห่งสร้างตามผังเดียว ทุกฟังก์ชันจึงควรรับใช้วิสัยทัศน์เดียวกัน การทำเอกสารช่วยปกป้องหลักการนี้ ด้วยการจดบันทึกว่าโค้ดแต่ละส่วนเขียนขึ้นมาทำไมและมีหน้าที่อะไร เพื่อให้นักพัฒนารุ่นหลังต่อยอดระบบได้โดยไม่ทำลายการออกแบบเดิม
ใครบ้างที่ควรอ่าน The Mythical Man-Month
หนังสือเล่มนี้เหมาะสำหรับผู้จัดการฝ่ายวิศวกรรมและหัวหน้าทีมที่เผชิญแรงกดดันเรื่องกำหนดส่งงาน ผู้ก่อตั้งธุรกิจที่กำลังวางแผนเปิดตัวผลิตภัณฑ์ และนักพัฒนาที่กำลังก้าวขึ้นมารับบทบาทหัวหน้าทีมหรือสถาปนิกระบบ แนวคิดในเล่ม ตั้งแต่กฎของ Brooks ไปจนถึงการสร้างเวอร์ชันบาง ๆ ที่ใช้งานได้ขึ้นมาก่อน ใช้ได้กับทุกคนที่ประสานงานกับหลายคนในงานเทคนิคที่ซับซ้อน และต้องการหลีกเลี่ยงต้นตอที่ทำให้งานล่าช้าและด้อยคุณภาพ
ผู้อ่านเล่มนี้ชอบเล่มเหล่านี้ด้วย
มีสรุปแบบเสียง
ฟัง The Mythical Man-Month ทำไมเพิ่มคนแล้วโปรเจกต์ซอฟต์แวร์ยิ่งช้า จบใน 15 นาที
เก็บแนวคิดสำคัญจาก The Mythical Man-Month ทำไมเพิ่มคนแล้วโปรเจกต์ซอฟต์แวร์ยิ่งช้า ของ Frederick P. Brooks พร้อมหนังสือนอนฟิกชันอีก 5,000+ เล่ม
- หนังสือ 5,000+ เล่ม
- ฟังได้ไม่จำกัด
- ทดลองใช้ฟรี 7 วัน
- ยกเลิกได้ทุกเมื่อ









