ตลอดหลายทศวรรษที่ผ่านมา Maxine พยายามอธิบายให้คนนอกสายงานเทคนิคฟังว่าการรวมโค้ด (code merges) น่ะมันน่ากลัวขนาดไหน คำอธิบายที่ดีที่สุดของเธอคือการเปรียบเทียบว่าเหมือนมีคนเขียนบทฮอลลีวูดห้าสิบคนกำลังเขียนบทหนังเรื่องเดียวกันพร้อมๆ กัน โดยที่พวกเขายังไม่ได้ตกลงกันเลยว่าใครจะเป็นตัวเอก หรือตอนจบจะเป็นยังไง หรือหนังเรื่องนี้จะเป็นแนวสืบสวนสอบสวนที่เคร่งขรึม หรือจะเป็นแนวสายลับจอมเปิ่นกับคู่หูจอมเพี้ยนกันแน่ค่ะ

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

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

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

การรวมโค้ดก็น่าลำบากใจพอๆ กันเลยค่ะ การแก้ไขโค้ดน่ะมันไม่เหมือนกับการพิมพ์ใน Google Docs ที่นักพัฒนาทุกคนสามารถมองเห็นความเปลี่ยนแปลงของกันและกันได้ทันที แต่เหมือนกับพวกคนเขียนบทนั่นแหละค่ะ พวกเขาจะสร้างกิ่งก้านงานส่วนตัว (private working branches) ของซอร์สโค้ดขึ้นมา เป็นสำเนาส่วนตัวของตัวเอง และเหมือนกับนักเขียนเหล่านั้น นักพัฒนาก็อาจจะทำงานแบบแยกส่วนกันไปเป็นสัปดาห์ๆ หรือบางครั้งก็เป็นเดือนๆ เลยล่ะค่ะ

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

Maxine ชอบมากเวลาที่ทุกคนยอมรวมโค้ดของตัวเองเข้าสู่ “กิ่งก้านหลัก” (master branch) บ่อยๆ อย่างเช่นวันละครั้งค่ะ ด้วยวิธีนั้น ขนาดของความเปลี่ยนแปลงที่ต้องนำมารวมกันน่ะมันจะไม่ใหญ่จนเกินไป ขนาดรุ่นงานที่เล็กเหมือนในงานการผลิตจะช่วยสร้างการไหลของงานที่ราบรื่น โดยไม่มีการสะดุดหรือหายนะที่รุนแรงเกิดขึ้นค่ะ

ในทางกลับกัน สิ่งที่พวกนักพัฒนา Phoenix ทำกันก็คือ—นักพัฒนาเป็นร้อยคนทำงานกันเป็นสัปดาห์ๆ โดยไม่มีการรวมโค้ดเลย และจากที่ Purna บอก ปกติมันต้องใช้เวลาอย่างน้อยสามวันเต็มๆ ในการรวมโค้ดให้เสร็จค่ะ Maxine คิดในใจว่า จะมีใครอยากทำงานแบบนั้นกันล่ะเนี่ย?

Maxine เดินไปพร้อมกับ Kurt และ Purna กลับไปที่ตึก 5 เพื่อไปยัง “ห้องวอร์รูมรวมโค้ด” (merging war room) ซึ่งเธอคิดว่าเป็นชื่อที่เหมาะสมมากจริงๆ ค่ะ ทันทีที่เธอก้าวเข้าไปในห้อง เธอก็ปะทะเข้ากับกำแพงอากาศที่ร้อนชื้นซึ่งเกิดจากการที่มีคนเบียดเสียดกันมากเกินไปในห้องที่ทั้งร้อนและแออัด เธอมองไปรอบๆ แล้วบอกกับ Kurt อย่างมั่นใจว่า “ฉันไม่สนหรอกว่า Kirsten จะพูดว่ายังไง แต่ไม่มีทางหรอกที่เราจะได้กิ่งก้านสำหรับปล่อยระบบ (release branch) ภายในวันนี้ค่ะ”

Purna เดินไปที่หน้าห้องและหยิบโน้ตบุ๊กออกมา ระหว่างทางเดินมา Maxine ได้รู้ว่า Purna คือผู้จัดการฝ่ายบูรณาการระบบที่รับผิดชอบในการทำให้มั่นใจว่าฟีเจอร์และงานแก้ไขจุดบกพร่องทั้งหมดที่ได้รับปากไว้น่ะมันจะถูกรวมเข้าสู่กิ่งก้านปล่อยระบบของ QA ได้สำเร็จ ทุกคนต่างพากันเรียกเธอด้วยความเอ็นดูว่า “หัวหน้าฝ่ายรวมโค้ด” (merge boss) ค่ะ

Maxine กวาดสายตามองดูสเปรดชีตที่พิมพ์ออกมาซึ่ง Purna ยื่นให้เธอ มีใบแจ้งงานของฝ่าย Dev ถึง 392 ใบที่รอการรวมโค้ดอยู่ แต่ละแถวมีทั้งเลขใบแจ้งงาน รายละเอียดของปัญหา ช่องติ๊กถูกเพื่อบอกว่ารวมโค้ดเสร็จหรือยัง ลิงก์ไปยังแผนการทดสอบของ QA เลขใบแจ้งงานของ QA และข้อมูลอื่นๆ อีกสารพัดค่ะ ...

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

Maxine หาที่นั่งหลังห้องกับ Kurt รอบโต๊ะประชุมมีนักพัฒนาและผู้จัดการประมาณยี่สิบห้าคนซึ่งเป็นตัวแทนของแต่ละทีมที่มีงานต้องรวมโค้ด พวกเขานั่งสุมหัวกันเป็นกลุ่มละสองสามคน โดยมีโน้ตบุ๊กอย่างน้อยหนึ่งเครื่องตั้งอยู่ตรงหน้า ปกติจะมีคนนึงเป็นคนพิมพ์ และคนอื่นๆ ก็คอยชะเง้อมองผ่านไหล่ค่ะ

มีเสียงพึมพำของการสนทนาที่เต็มไปด้วยความหงุดหงิดดังอยู่เบาๆ “เสียงแบบนี้แหละครับคือเสียงของนักพัฒนาตอนกำลังรวมโค้ดกัน” Tom บอกพลางลากเก้าอี้มานั่งข้างๆ เธอ

“คุณรู้มุกตลกนี้ไหม—พหูพจน์ของคำว่า ‘นักพัฒนา’ คืออะไร?” Maxine ถาม “คำตอบคือ ‘ความขัดแย้งในการรวมโค้ด’ (merge conflict) ไงคะ”

Tom หัวเราะร่าพลางเปิดโน้ตบุ๊ก “ผมว่าผมรวมโค้ดทั้งหมดของพวกเราเข้ากิ่งก้านปล่อยระบบเลยดีกว่า ปกติผมไม่ค่อยรีบทำทันทีหรอกครับ เพราะก็นะ จะรีบไปไหนล่ะ? ดูไปรอบๆ สิครับ ... ปกติมันต้องใช้เวลาตั้งหลายวันกว่าทุกคนจะรวมโค้ดเสร็จน่ะครับ”

เขาเปิดแอปพลิเคชันจัดการซอร์สโค้ด ลากนั่นวางนี่ คลิกตรงนั้นทีตรงนี้ที แล้วก็พิมพ์อะไรบางอย่างลงไป จากนั้นเขาก็บอกว่า “เสร็จแล้ว!” แล้วปิดโน้ตบุ๊กลง

“ปกติผมไม่ค่อยอยู่รอนานหรอกครับ” เขาบอก “พวกเราแทบไม่มีโค้ดที่ต้องใช้ร่วมกับทีม Phoenix อื่นๆ เลย ผมจำไม่ได้ด้วยซ้ำว่าเคยเจอปัญหาเรื่องรวมโค้ดขัดแย้งกันน่ะครับ ...”

Maxine พยักหน้า พลางนึกย้อนกลับไปว่ามันแปลกจริงๆ ที่ Data Hub ดันมาเป็นส่วนหนึ่งของ Phoenix ได้ยังไง

“คุณคิดว่าคนพวกนี้จะรวมโค้ดเสร็จภายในวันนี้ไหมคะ?” Maxine ถาม

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

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

Maxine เห็นหัวหน้าทีม Dev คนหนึ่งพิมพ์คำสั่ง “git pull” ลงในหน้าต่างเทอร์มินัลบนโน้ตบุ๊กของเขา ทันใดนั้น เขาก็ได้รับข้อความแจ้งความผิดพลาดที่ยาวเหยียด แสดงให้เห็นความขัดแย้งในการรวมโค้ดถึงสี่สิบสามจุด! Maxine ถึงกับต้องผงะถอยออกมาจากหน้าจอของเขาด้วยความตกใจ เธอสงสัยจริงๆ ว่าพวกเขาต้องใช้เวลานานแค่ไหนกว่าจะแก้ปมที่ยุ่งเหยิงขนาดนั้นได้สำเร็จค่ะ

ต่อมา เมื่อเธอได้ยินอีกทีมหนึ่งคุยกันเรื่องจะสั่งพิมพ์ซอร์สโค้ดออกมาให้ทุกคน เพื่อที่จะได้มานั่งตรวจสอบความถูกต้องและรวมงานกันด้วยมือเอง เธอถึงขั้นเกือบพ่นกาแฟออกมาเลยล่ะค่ะ

มีคนกลุ่มหนึ่งประมาณสิบคนรุมล้อมกันอยู่ที่หน้าทีวีหน้าห้อง เพื่อศึกษาส่วนต่างของโค้ด (code diff) จากการแก้ไขสี่ชุดที่แตกต่างกันในไฟล์เดียวกันและในตำแหน่งเดียวกันเป๊ะเลยค่ะ

เมื่อเห็นสีหน้าของเธอ Kurt ก็ถามว่า “มีอะไรผิดปกติเหรอครับ?”

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

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

Maxine หน้าซีดเผือด “คุณล้อเล่นใช่ไหมคะ?”

“เปล่าเลยครับ” Kurt บอกพลางแอบขำกับปฏิกิริยาของ Maxine “ถ้าทำแล้วมันเจ็บ ก็จงทำให้น้อยลง นั่นแหละคือตรรกะของพวกเขาครับ”

“ไม่ค่ะ ไม่ๆๆ” Maxine บอกด้วยความท้อใจ “พวกเขาเข้าใจผิดหมดเลยล่ะค่ะ ที่มันเจ็บก็เพราะขนาดของการรวมโค้ดมันใหญ่เกินไปต่างหากล่ะคะ เพื่อให้มันเจ็บน้อยลง พวกเขาต้องรวมโค้ดให้ ‘บ่อย’ ขึ้นต่างหากค่ะ เพื่อให้การรวมโค้ดแต่ละครั้งมันมีขนาดเล็กและสร้างความขัดแย้งน้อยลงไงคะ”

Kurt หัวเราะอีกครั้ง “ก็นะ ว่าไปนั่นแหละครับ” เขาบอกพลางยักไหล่และผายมือไปรอบห้อง

Maxine ไม่ขำด้วยหรอกนะ เพราะเธอไม่เห็นว่าเรื่องนี้มันจะตลกตรงไหนเลย เธอชำเลืองมองนาฬิกา ตอนนี้เกือบจะสี่โมงครึ่งแล้ว เธอมองดูหน้าจอโน้ตบุ๊กของ Purna มีงานที่รวมเสร็จไปเพียงสามสิบห้ารายการเท่านั้น และยังเหลืออีก 359 รายการที่ยังค้างอยู่ สรุปคือเพิ่งเสร็จไปแค่สิบเปอร์เซ็นต์เท่านั้นเองค่ะ

ด้วยอัตราความเร็วขนาดนี้นะ Maxine คิดในใจ พวกเขาต้องใช้เวลาทำงานต่ออีกสี่สิบชั่วโมง—ซึ่งก็คืออีกหนึ่งสัปดาห์เต็มนู่นเลยล่ะค่ะ

วันรุ่งขึ้น Maxine นั่งทรุดตัวอยู่บนเก้าอี้ในห้องอาหารที่เต็มไปด้วยกล่องพิซซ่า ตอนนี้เกือบจะสิ้นสุดวันที่สองของกระบวนการรวมโค้ดแล้วค่ะ เธอจ้องมองป้ายประกาศขนาดใหญ่ที่ติดอยู่ทั่วทุกที่ ซึ่งเขียนเตือนว่า “สำหรับทีมรวมโค้ดเท่านั้น”

Maxine ไม่รู้ว่าพวกเขาจะมานั่งติดป้ายกันทำไม ตลอดระยะเวลาหนึ่งวันครึ่งที่ผ่านมา เธอเดาว่านักพัฒนาทุกคนน่าจะเคยเข้าไปอยู่ในห้องวอร์รูมรวมโค้ดห้องใดห้องหนึ่งมาหมดแล้วล่ะค่ะ

“Maxine อยู่นี่เองเหรอครับ” Kurt บอกพลางขัดจังหวะการตกอยู่ในภวังค์ของเธอ “พระเจ้าช่วย ... เอ่อ ถ้าคุณไม่ว่าอะไรนะ ผมขอบอกเลยว่าคุณดูแย่มากเลยล่ะครับ”

Maxine ได้แต่ส่งยิ้มแบบเม้มปากให้ Kurt เธอไม่มีเรี่ยวแรงพอจะอธิบายสิ่งที่เธอเพิ่งเห็นมาและอธิบายว่าเรื่องเหล่านั้นมันรบกวนใจเธอมากแค่ไหนค่ะ

Maxine รู้ดีว่าการรวมโค้ดน่ะมันไม่เคยเป็นเรื่องสนุกสำหรับใครหรอกค่ะ แต่เธอก็ไม่ได้เตรียมใจจะมาเจอสิ่งที่เห็นมาตลอดสองวันที่ผ่านมานี้เลยค่ะ

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

เธอเห็นผู้คนพยายามแก้ไขความขัดแย้งในการรวมโค้ดที่ยาวเหยียดกว่าหนึ่งพันบรรทัด ซึ่งมันกระจัดกระจายอยู่ในไฟล์เป็นสิบๆ ไฟล์เลยล่ะค่ะ

เธอเห็นคนลืมรวมโค้ดของตัวเองเข้าไป ซึ่งมารู้ตัวก็ตอนที่ Purna มานั่งตรวจสอบความถูกต้องกับสเปรดชีตของเธอน่ะค่ะ

เธอยังเห็นทีมงานสองทีมต้องมาต่อสู้กับ “ความขัดแย้งในการรวมโค้ดเชิงความหมาย” (semantic merge conflict) ของจริงด้วยค่ะ—ซึ่งเป็นเหตุการณ์ที่หาได้ยากมาก ปกติจะเจอแต่ในเรื่องเล่าที่พวกนักพัฒนาเอาไว้ขู่ให้กันและกันกลัวเท่านั้นแหละค่ะ มันคือผลลัพธ์ของการรวมโค้ดแบบอัตโนมัติที่คอมไพล์ผ่านอย่างสมบูรณ์แบบ แต่ดันไปเปลี่ยนวิธีการทำงานของโปรแกรมไปอย่างสิ้นเชิงแบบหน้ามือเป็นหลังมือเลยล่ะค่ะ ที่แย่ที่สุดคือมันเกือบจะหลุดลอดสายตาไปแล้ว พวกเขาเพิ่งจะมาเจอมันแบบเกือบจะบังเอิญด้วยซ้ำไปค่ะ พูดตรงๆ นะคะ เธอทึ่งมากที่พวกเขาจับสังเกตได้ตอนที่มีใครสักคนพูดขึ้นว่า “มันดูไม่ค่อยถูกต้องนะเนี่ย ...” ไม่อย่างนั้นมันคงหลุดรอดเข้าไปในระบบจริง และไม่ต้องสงสัยเลยค่ะว่ามันจะสร้างความพินาศย่อยยับขนาดไหน

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

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

“อา ...” Kurt บอกพลางมีสีหน้าที่ดูเป็นกังวลขึ้นมาทันที “โยนพิซซ่านั่นทิ้งไปเถอะครับแล้วมาสมทบกับพวกเราที่เหลือในกลุ่มกบฏเถอะ Shannon เพิ่งจะรายงานผลจากการไปพูดคุยกับทีมพัฒนา Phoenix มา และเธอก็มีไอเดียที่ยอดเยี่ยมมากเลยครับ”

Maxine ก้มลงมองมือตัวเองแล้วเห็นว่าเธอกำลังถือพิซซ่าที่กินค้างไว้ครึ่งชิ้นและมันก็เย็นชืดไปหมดแล้ว ชีสน่ะมันแข็งตัวกลายเป็นก้อนสีขาวมันเยิ้มไปเรียบร้อยแล้วล่ะค่ะ เธอจำไม่ได้ด้วยซ้ำว่าเธอกินมันเข้าไปตอนไหน

เธอโยนมันทิ้งถังขยะและเดินตาม Kurt ไปโดยไม่พูดอะไรสักคำเดียว

Kurt พา Maxine ไปที่ห้องประชุมอีกห้องหนึ่ง ซึ่งอยู่ห่างไกลจากความบ้าคลั่งของการรวมโค้ดที่กำลังดำเนินอยู่ค่ะ เธอเห็น Tom, Brent, Shannon และ Dwayne นั่งรวมตัวกันอยู่ที่โต๊ะประชุม ทุกคนต่างพากันส่งยิ้มและโบกมือทักทายเธอ Shannon จ้องมองเธออยู่ครู่หนึ่ง แต่ไม่เหมือนกับ Kurt เธอทำตัวสุภาพพอที่จะไม่ทักเรื่องสภาพที่ดูอิดโรยของ Maxine ค่ะ

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

“พวกเราเลยกำลังคิดกันว่า ต้องทำยังไงถึงจะทำให้ Data Hub แยกตัวเป็นอิสระ (decoupled) ออกจาก Phoenix ได้ เพื่อที่พวกเราจะได้ทำการทดสอบกันเองได้แบบไม่ต้องรอใครค่ะ” Shannon พูดต่อ “ถ้าพวกเราทำได้นะ พวกเรามีทีม QA ที่พร้อมจะเริ่มตรวจงานของพวกเราได้เดี๋ยวนี้เลยล่ะค่ะ”

ต้องใช้เวลาครู่ใหญ่กว่าที่ Maxine จะเข้าใจสิ่งที่ Shannon เสนอ เพราะสมองของเธอเริ่มจะเบลอและอ่อนล้าจากการรวมโค้ดมานานเกินไปค่ะ แล้วเธอก็ร้องอ๋อขึ้นมาทันที

“เยส!” Maxine อุทานออกมาด้วยความตื่นเต้น “ใช่เลยค่ะ เป็นไอเดียที่ยอดเยี่ยมมาก ตอนนี้พวกเราช่วยอะไรทีม Phoenix อื่นๆ ไม่ได้มากนักหรอกค่ะ แต่นั่นก็ไม่ได้หมายความว่าพวกเราต้องมาร่วมหัวจมท้ายทนทุกข์ไปพร้อมกับพวกเขาด้วยนี่นา”

Kurt บอกว่า “ผมได้ลองไปคุยกับ Purna และ Kirsten มาแล้วครับ พวกเขาจัดสรรคนมาช่วยพวกเราสองคนเพื่อให้ Data Hub ได้รับการทดสอบและรับรองความถูกต้องครับ ตราบใดที่กระบวนการรวมโค้ดของ Phoenix ยังไม่เสร็จสิ้น คนพวกนั้นก็จะเป็นของพวกเราครับ อันที่จริง ผมกล้าพนันเลยว่าพวกเราน่าจะทดสอบงานเสร็จก่อนที่พวกนั้นจะรวมโค้ดกันเสร็จด้วยซ้ำครับ”

Maxine ขมวดคิ้วพลางบอกว่า “แต่พวกเรายังต้องการสภาพแวดล้อมสำหรับทดสอบเพื่อรัน Data Hub อยู่นะคะ” เธอนิ่งคิดครู่หนึ่ง “ฉันสงสัยจังว่าเราจะสามารถสร้างสภาพแวดล้อมทดสอบสำหรับ Data Hub ให้รันอยู่ในคลัสเตอร์ของพวกเราเองได้ไหมคะ? มันน่าจะมีขนาดเล็กกว่าและเรียบง่ายกว่าสภาพแวดล้อมของ Phoenix เยอะเลยนะคะ ด้วยวิธีนี้ ทีม QA จะได้เข้าใช้งานได้ตลอดเวลา ไม่ต้องมานั่งแย่งชิงสภาพแวดล้อมที่หาได้ยากกับคนอื่นอีกต่อไปค่ะ”

“ทีมดูแลสภาพแวดล้อมคงไม่ปลื้มเรื่องนี้แน่ๆ ครับ” Kurt บอกพร้อมรอยยิ้ม “แล้วคุณต้องการอะไรบ้างล่ะครับ?”

เธอมองไปรอบๆ “ถ้าฉันได้ความช่วยเหลือจาก Brent และ Adam สักสองสามวัน ฉันว่าพวกเราน่าจะสร้างสภาพแวดล้อมรุ่นประหยัดขึ้นมาให้รันได้ภายในวันจันทร์นี้แน่นอนค่ะ ฉันรู้ว่าตอนนี้ Brent โดนสั่งล็อกดาวน์ไว้ให้ทำงานเฉพาะ Phoenix เท่านั้น แต่อย่างน้อยถ้าว่ากันตามเทคนิคแล้ว Data Hub มันก็ยังเป็นส่วนหนึ่งของ Phoenix อยู่จริงไหมคะ?”

ทันใดนั้น Maxine ก็กลับมาตื่นเต้นอีกครั้ง แนวคิดเรื่องการปลดปล่อย Data Hub ออกจากหล่มของโปรเจกต์ Phoenix น่ะมันช่างน่าตื่นเต้นจริงๆ เลยล่ะค่ะ

“อุดมคติข้อแรกครับ” Brent บอกพร้อมรอยยิ้ม

วันรุ่งขึ้น Maxine, Brent และ Adam ต่างพากันทำงานกันอย่างบ้าคลั่งตลอดทั้งวันทั้งคืนเพื่อสร้างสภาพแวดล้อมรุ่นเล็กที่พวกเขาสามารถใช้รันและทดสอบ Data Hub ได้สำเร็จค่ะ มันคือการแข่งกับเวลาเพื่อเอาชนะการรวมโค้ดของ Phoenix ให้ได้ค่ะ Purna ยกนิ้วโป้งให้สำหรับแผนงานนี้ Kirsten เองก็เห็นด้วยพร้อมกับบอกว่า “พวกเราเป็นคนสร้างกฎพวกนี้ขึ้นมาเอง เพราะฉะนั้นพวกเราก็แหกกฎเองได้เหมือนกันค่ะ โดยเฉพาะถ้าเรื่องนี้มันช่วยกำจัดเรื่องที่ต้องพึ่งพากันที่แสนจะเฮงซวยนี่ทิ้งไปได้อย่างถาวรน่ะนะคะ ผู้จัดการโครงการคนไหนก็ต้องกระโดดโลดเต้นด้วยความดีใจทั้งนั้นแหละค่ะ” แค่นั้นก็เพียงพอแล้วสำหรับ Kurt ที่จะบอกให้พวกเขาลุยต่อได้เลย โดยไม่ต้องเสียเวลาไปขออนุมัติจากใครเบื้องบนอีกค่ะ

“เดี๋ยวผมค่อยไปขอโทษทีหลังก็ได้ถ้าจำเป็นน่ะครับ” Kurt บอกพร้อมรอยยิ้ม

ในตอนนั้น Brent กำลังพยายามจำลองการสร้างสภาพแวดล้อมที่ปัจจุบันรันได้แค่บนโน้ตบุ๊กของ Tom เครื่องเดียวเท่านั้นค่ะ ในขณะเดียวกัน Maxine ก็กำลังทำงานร่วมกับ Adam เพื่อพยายามทำให้การปล่อยระบบ Data Hub ครั้งล่าสุดน่ะมันรันในสภาพแวดล้อม Phoenix รุ่นเล็กของพวกเขาให้ได้สำเร็จค่ะ

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

หนึ่งในผู้จัดการฝ่าย Dev ตะโกนลั่น “ทุกคนฟังทางนี้หน่อยครับ! พวกเราเจอปัญหาระบบจริงแบบติดๆ ดับๆ มาตลอดสองชั่วโมงที่ผ่านมาบนเว็บไซต์อีคอมเมิร์ซครับ ดูเหมือนจะมีบางอย่างใน Phoenix ที่ทำให้ราคาโปรโมชันแสดงผลผิดพลาดหรือไม่ครบถ้วนตอนที่ผู้ใช้กำลังจะจ่ายเงินในตะกร้าสินค้าครับ ใครพอจะรู้ไหมว่ามันเกิดจากอะไร?”

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

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

สิบนาทีต่อมา ผู้จัดการฝ่าย Dev ที่ดูแลเรื่องมิดเดิลแวร์ก็รับหน้าที่นำทีมกู้ระบบค่ะ เธออธิบายเหตุผลที่น่าเชื่อถือว่าปัญหาต้องอยู่ในโค้ดส่วนที่เธอรับผิดชอบแน่นอน และใช้เวลาเพียงสิบห้านาทีทีมงานของเธอก็สร้างงานแก้ไขออกมาได้สำเร็จ “มันคือการแก้โค้ดแค่บรรทัดเดียวเองค่ะ พวกเราสามารถส่งความเปลี่ยนแปลงนี้เข้าสู่กิ่งก้านการปล่อยระบบปัจจุบันได้เลยค่ะ” เธอประกาศออกมา “โธ่เว้ย ทำไม่ได้นี่นา ... มีแค่ผู้จัดการฝ่าย SCM เท่านั้นที่มีสิทธิ์ส่งโค้ดเข้ากิ่งก้านปล่อยระบบเก่าตัวนี้ได้ พวกเราต้องการตัว Jared ค่ะ มีใครรู้ไหมว่าเขาอยู่ที่ไหน?”

“เดี๋ยวผมไปตามให้ครับ” ใครบางคนตะโกนออกมาแล้วรีบวิ่งออกจากห้องไปทันที

“Jared คือใครเหรอคะ?” Maxine ถาม Kurt Kurt ได้แต่ขยี้ตาพลางพยายามกลั้นหัวเราะไว้

ผู้จัดการฝ่าย Dev มิดเดิลแวร์ที่นั่งอยู่ข้างๆ พวกเขาบอกด้วยน้ำเสียงที่เหนื่อยล้าว่า “Jared คือผู้จัดการฝ่ายจัดการซอร์สโค้ดครับ นักพัฒนาไม่ได้รับอนุญาตให้เข้าถึงระบบจริงครับ ครั้งเดียวที่นักพัฒนาจะได้รับอนุญาตให้ส่งโค้ดเข้ากิ่งก้านปล่อยระบบได้น่ะคือกรณีที่มีใบแจ้งปัญหาความสำคัญระดับ P1 เท่านั้นค่ะ แต่นี่มันคือปัญหา P3 เองนะ” เธออธิบาย “ดังนั้น ไม่ว่าพวกเราจะต้องไปอ้อนวอนขอให้ฝ่าย Ops ยกระดับปัญหาให้เป็น P1 ซึ่งเขาก็ไม่มีวันยอมทำให้เราแน่ๆ หรือไม่ Jared ก็ต้องมามอบสิทธิ์เข้าใช้งานชั่วคราวให้ฉัน เพื่อที่ฉันจะได้ไปส่งงานแก้ไขโค้ดได้น่ะค่ะ”

“แล้วถ้า Jared อยู่ที่นี่ เขาจะทำยังไงคะ?” Maxine ถาม เพราะพอจะเดาออกว่าจะเกิดอะไรขึ้นต่อ

ผู้จัดการมิดเดิลแวร์บอกว่า “เขาก็จะเอาเลขรหัสการส่งโค้ด (commit ID) ของพวกเราไป ก๊อปปี้มันด้วยมือเข้าไปในกิ่งก้านปล่อยระบบ แล้วก็สั่งให้นำมันขึ้นระบบจริงค่ะ”

“แค่นั้นเองเหรอคะ?” Maxine ถามย้ำ

“ใช่ค่ะ” เธอตอบสั้นๆ

Maxine สบถเบาๆ ในลำคอ เธอรู้สึกประหลาดใจตัวเองที่เริ่มจะโกรธขึ้นมาจริงๆ โกรธแบบของจริงเลยล่ะค่ะ

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

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

“โธ่ ให้ตายเถอะคุณ” Maxine พึมพำกับตัวเอง มันเกิดขึ้นอีกแล้ว เธอคิด พลางนึกถึงความรู้สึกพ่ายแพ้ที่เธอเจอในห้องอาหารเมื่อวานนี้เลยล่ะค่ะ

ทุกคนพยายามช่วยกันคิดแผนสำรองเพราะไม่มีใครหาตัว Jared เจอ ผ่านไปยี่สิบนาที Randy ก็ปรากฏตัวออกมาและป่าวประกาศว่าไม่มีอะไรที่ทำได้มากกว่านี้แล้ว แต่เขายังคงพยายามหาตัว Jared ต่อไปอยู่ค่ะ

ทุกคนต่างพากันพยักหน้ายอมรับสภาพ และกลับไปก้มหน้าก้มตารวมโค้ดของตัวเองกันต่อไป

“นี่มันเป็นเรื่องปกติที่ยอมรับกันได้งั้นเหรอคะ?!” Maxine ขึ้นเสียงดังขึ้นมาAddressing ทุกคนในห้อง เธอไม่สามารถทนยืนดูเฉยๆ ได้อีกต่อไปแล้วค่ะ “ทำไมพวกนักพัฒนาถึงไม่ได้รับอนุญาตให้ส่งความเปลี่ยนแปลงของตัวเองเข้าสู่ระบบจริงได้คะ? ทำไมพวกเราต้องรอ Jared มาเป็นคนส่งงานให้ด้วย? คือฉันมั่นใจนะคะว่าเขาเก่งในหน้าที่ของเขา แต่ทำไมพวกเราถึงทำเองไม่ได้คะ?”

ห้องทั้งห้องเงียบกริบลงทันที ทุกคนต่างหันมาจ้องมองเธอด้วยความตกตะลึง เหมือนเธอเพิ่งจะเผลอเรอออกมาเสียงดังกลางงานแต่งงานหรืองานศพยังไงอย่างงั้นแหละค่ะ ในที่สุด ใครบางคนก็พูดขึ้นว่า “การทำตามกฎระเบียบ (Compliance) ครับ” และอีกคนก็เสริมตามมาว่า “แล้วก็แผนกความปลอดภัยข้อมูลด้วยครับ”

เธอก็ได้ยินเหตุผลอื่นๆ พรั่งพรูมาจากทั่วห้องค่ะ

ITIL ไงครับ”

“การจัดการการเปลี่ยนแปลงน่ะค่ะ”

“กฎหมาย SOX ครับ”

“มาตรฐาน PCI ค่ะ”

“พวกหน่วยงานกำกับดูแลน่ะครับ”

เธอมองไปรอบๆ ทุกคนที่อยู่ที่นี่ต่างก็เป็นคนที่มีความสามารถและมีความรับผิดชอบกันทั้งนั้น แต่ถึงอย่างนั้น ... “โธ่เอ๊ย ทุกคนคะ เหตุผลพวกนั้นน่ะมันฟังไม่ขึ้นเลยสักนิดค่ะ ฉันว่าฉันรู้เหตุผลที่แท้จริงนะว่าทำไมพวกเราถึงไม่ได้รับอนุญาตให้ส่งงานของตัวเอง ... เพราะพวกเขาไม่ไว้ใจพวกเรายังไงล่ะคะ! พวกคุณไม่รู้สึกเดือดร้อนกับเรื่องนี้กันบ้างเลยเหรอคะ?! Jared จะไปรู้เรื่องการทำการเปลี่ยนแปลงได้ดีกว่าพวกนักพัฒนาที่เป็นคนเขียนโค้ดเหล่านั้นขึ้นมาเองได้ยังไงกันคะ?” Maxine กวาดสายตาไปรอบห้อง และพบว่ามีคนแค่ประมาณสิบคนเท่านั้นเองที่ดูจะรู้สึกเดือดร้อนกับสิ่งที่เธอเพิ่งจะบรรลุความจริงได้ค่ะ

“พวกเขาคิดจริงๆ เหรอคะว่าพวกเราจะจงใจวินาศกรรมโค้ดของตัวเองน่ะ? หรือคิดว่าคนที่มีหน้าที่แค่ก๊อปปี้แล้วแปะความเปลี่ยนแปลงของพวกเราจะทำหน้าที่ได้ดีกว่าพวกเราที่เป็นคนเขียนมันขึ้นมาเองงั้นเหรอคะ?” Maxine รู้ตัวดีว่าตอนนี้เธอกำลังพาตัวเองออกไปนอกลู่นอกทางมากไปแล้ว แต่เธอก็หยุดตัวเองไม่ได้จริงๆ ค่ะ “พวกเราเกือบทุกคนในห้องนี้คือนักพัฒนานะคะ ไม่มีใครรู้สึกเดือดร้อนบ้างเลยเหรอคะที่พวกเราไม่ได้รับความไว้วางใจมากพอที่จะส่งงานของตัวเองขึ้นสู่ระบบจริงน่ะค่ะ?”

คนสองสามคนเพียงแค่ยักไหล่ ส่วนคนอื่นๆ ก็จ้องหน้าเธอเหมือนเธอเป็นคนบ้า หรือไม่ก็เป็นพวกมองโลกในแง่ดีจนเกินเยียวยาค่ะ

Maxine รู้ดีว่าสุนทรพจน์ของเธอน่ะมันไม่ได้ดูปลุกใจเหมือนบทพูดของพระเจ้าเฮนรี่ที่ 5 ในวันเซนต์คริสปินหรอกนะคะ แต่เธอก็ถึงกับมึนตึ้บที่ผู้คนดูจะไม่ค่อยเดือดร้อนกับสถานการณ์แบบนี้กันเลยสักนิดเดียว เธออุตส่าห์หวังลึกๆ ว่าจะมีใครสักคนตะโกนออกมาว่า “ใช่เลย! ฉันก็เดือดร้อนเหมือนกัน และพวกเราจะไม่ยอมทนอีกต่อไปแล้ว!”

แต่ความจริงคือ มีเพียงความเงียบงันเท่านั้นเองค่ะ

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

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

“โอ้ ไม่นะ ...” Maxine เผลออุทานออกมาเสียงดัง นี่เหรอคือ Jared?

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

Maxine เฝ้าสังเกตขณะที่เขาเซ็ตระบบโน้ตบุ๊กเพื่อเตรียมส่งโค้ด เขาใช้เวลาสิบนาทีกว่าจะล็อกอินสำเร็จ ได้ลิงก์ไปยังโค้ดที่ต้องส่ง และยืนยันกับทุกคนจนมั่นใจว่ามันคือโค้ดตัวที่ถูกต้องจริงๆ ... เหมือนในฉากหนังเกี่ยวกับการเขียนโค้ดที่ Maxine เคยดูแคลนไว้เป๊ะเลยล่ะค่ะ มีกลุ่มคนมารุมล้อมอยู่ข้างหลัง Jared เฝ้ารอด้วยความตื่นเต้นระทึกใจในขณะที่เขาลงมือทำงาน เมื่อเขาพูดออกมาในที่สุดว่า “เรียบร้อยครับ โค้ดเข้าสู่ระบบแล้ว” ทุกคนก็พากันตบหลังแสดงความยินดีกับเขาค่ะ

Maxine กลอกตาด้วยความหงุดหงิด เธอดีใจนะที่ Jared ทำงานสำเร็จ แต่โธ่เอ๊ย สิ่งที่เขาทำน่ะมันก็แค่การก๊อปปี้แล้วแปะ แล้วก็กดปุ่มแค่นั้นเองนะคะ

เมื่อ Maxine ถามผู้จัดการมิดเดิลแวร์ว่าปัญหาได้รับการแก้ไขหรือยัง ผู้จัดการคนนั้นก็ตอบกลับมาว่า “ยังค่ะ ตอนนี้ Jared แค่เอาโค้ดไปใส่ไว้ในกิ่งก้านปล่อยระบบตัวล่าสุดเท่านั้นเอง ต่อจากนี้เขาต้องไปประสานงานกับพวกฝ่าย Ops เพื่อให้นำมันขึ้นไปรันบนระบบจริงอีกทีค่ะ”

คนไข้ยังไม่รอดตายเลยค่ะ เขาต้องถูกส่งตัวต่อไปยังแผนกถัดไปเพื่อจัดการเรื่องนั้นต่อ เธอตัดสินใจเดินตาม Jared ไป ไม่ใช่เพราะความอยากผจญภัยหรอกนะ แต่เป็นเพราะความอยากรู้อยากเห็นในทางที่ผิดเสียมากกว่าค่ะ

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

แถมเธอยังรู้สึกไม่สบายตัวอย่างเห็นได้ชัดเลยล่ะค่ะ นี่ฉันกำลังเป็นไข้หรือเปล่านะ?

ทุกอย่างมันเริ่มขึ้นตอนที่เธอเดินตาม Jared ลงมาสองชั้นเพื่อไปยังชั้นล่างสุดซึ่งเป็นที่ตั้งของฝ่าย Operations ค่ะ ในห้องประชุมของฝ่าย Ops เธอจำ Wes กับ Patty ได้ แต่แทบจะไม่รู้จักใครคนอื่นเลย ถึงแม้ว่าทุกคนจะดูหน้าตาคล้ายๆ กันไปหมดก็ตามเถอะค่ะ

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

พวกเขาส่งคำขอการเปลี่ยนแปลงฉุกเฉินไปหา Bill Palmer VP ฝ่าย Operations และ Maggie Lee ผู้อำนวยการอาวุโสฝ่ายการตลาดผลิตภัณฑ์ และเหมือนกับที่ชั้นบนเลยค่ะ ทุกคนยืนแกร่วรอการอนุมัติอยู่เฉยๆ

ตอนห้าโมงเย็น มีคนสั่งพิซซ่ามา Maxine เดินตามทุกคนไปที่ห้องอาหาร ซึ่งก็หน้าตาเหมือนกับห้องที่ชั้นบนเป๊ะเลยล่ะค่ะ เมื่อเห็นพิซซ่า เธอถึงกับเกือบจะสะดุดล้มลงไปกองกับพื้น—เพราะมันมาจากร้านเดียวกันเป๊ะกับพิซซ่าที่ยกมาเลี้ยงตอนรวมโค้ดเมื่อวานนี้เลยล่ะค่ะ

พิซซ่าหน้าเดิมเป๊ะ ถูกกินโดยคนที่เปลี่ยนหน้าไป แต่ก็เอาแต่บ่นเรื่องปัญหาเดิมๆ เหมือนเดิม วินาทีนั้นแหละที่ Maxine เริ่มรู้สึกคลื่นไส้จริงๆ และห้องก็เริ่มจะหมุนนิดๆ หรือฉันจะแค่หิวนะ? แต่เห็นหน้าตาพิซซ่านั่นแล้วเธอก็รู้สึกมวนท้องขึ้นมาทันทีเลยล่ะค่ะ

Maxine รู้สึกเหมือนกำลังนั่งดูฉากเดิมของหนังเรื่องเดิมที่เธอเพิ่งจะผ่านมันมาเมื่อหกชั่วโมงก่อนยังไงอย่างงั้นแหละค่ะ เหมือนกับในหนังเรื่อง Groundhog Day เวอร์ชันที่แสนสยองขวัญยังไงยังงั้นเลย เธอคิดในใจ เหมือนตัวละครของ Bill Murray ที่ถูกสาปให้ต้องใช้ชีวิตในวันเดิมซ้ำแล้วซ้ำเล่า แต่สำหรับ Maxine พวกเขาเอาแต่เปลี่ยนตัวละครไปเรื่อยๆ เดี๋ยวเป็นฝ่าย Dev เดี๋ยวเป็นฝ่าย QA แล้วก็เป็นฝ่าย Ops แต่ทุกอย่างน่ะมันก็เหมือนเดิมเป๊ะเลยค่ะ

ก่อนหน้านี้ ลึกๆ ในใจ Maxine แอบสงสัยว่าพวกนักพัฒนาน่ะถูกกักขังไว้โดยระบบราชการที่ไร้หัวใจ มุ่งร้าย และไม่เคยใส่ใจใครเลย บางทีมันอาจจะถูกรันโดยฝ่าย Operations หรือสมาคมลับจัดการการเปลี่ยนแปลงตามมาตรฐาน ITIL อะไรเทือกนั้น แต่หลังจากที่เดินตาม Jared เข้ามาถึงใจกลางของฝ่าย Operations เธอก็ได้เห็นแล้วว่าพวกคนฝั่ง Ops เองก็น่าจะถูกคุมขังโดยผู้คุมคนเดียวกันกับพวกนักพัฒนาที่ชั้นบนน่ะแหละค่ะ

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

Maxine โยนพิซซ่าชิ้นนั้นทิ้งถังขยะไปโดยที่ยังไม่ได้แม้แต่จะชิมสักคำเดียว พอกลับมาที่ห้องประชุม Wes ก็ประกาศว่าความเปลี่ยนแปลงที่เร่งด่วนนั้นได้รับการอนุมัติเรียบร้อยแล้วล่ะค่ะ Maggie (คนที่ต้องเป็นคนอนุมัติงานน่ะค่ะ) พลาดสายโทรศัพท์ช่วงแรกๆ เพราะเธอมัวแต่ไปร่วมงานปาร์ตี้วันเกิดของตัวเองอยู่ แต่ตอนนี้เธอปลีกตัวออกมาเพื่อเข้าร่วมสายประชุมแล้วล่ะค่ะ

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

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

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

ท่ามกลางความมืดมิด Maxine หยิบโทรศัพท์ขึ้นมาและส่งข้อความหา Kurt และสมาชิกกลุ่มกบฏที่เหลือ:

มีใครยังอยู่ที่นี่บ้างไหมคะ? ฉันต้องการความช่วยเหลือจริงๆ ค่ะ แล้วก็ต้องการเครื่องดื่มด้วย มีใครไปเจอฉันที่ Dockside ได้บ้างไหมคะ?