ตอนนี้เป็นเวลา 19:30 น. ของวันศุกร์ สองชั่วโมงหลังจากกำหนดการเริ่ม Deployment ของโปรเจกต์ Phoenix และดูเหมือนว่าทุกอย่างจะไปได้ไม่สวยนัก ผมเริ่มรู้สึกว่ากลิ่นพิซซ่ากลายเป็นสัญลักษณ์ของความล้มเหลวในการทำ Death march ไปเสียแล้ว
ทีม IT Operations ทั้งหมดถูกเรียกรวมตัวเพื่อเตรียมพร้อมสำหรับการ Deployment ตั้งแต่ตอน 16:00 น. แต่กลับไม่มีอะไรให้ทำเลย เพราะเรายังไม่ได้รับอะไรจากทีมของ Chris เลย พวกเขายังมัวแต่แก้ไขโน่นนี่ในวินาทีสุดท้าย
มันไม่ใช่สัญญาณที่ดีเลย ถ้าพวกเขายังมัวแต่ประกอบชิ้นส่วนยานอวกาศตอนที่ถึงเวลาปล่อยตัวแล้ว
ตอน 16:30 น. William เดินดุ่มๆ เข้ามาในวอร์รูมของ Phoenix ด้วยความโกรธจัดและขยะแขยงที่ไม่มีใครสามารถรัน Code ทั้งหมดของ Phoenix ใน Test environment ได้เลย ที่แย่กว่านั้นคือส่วนน้อยที่รันได้ดัน Test ไม่ผ่านในส่วนที่เป็น Critical อีกด้วย
William เริ่มส่ง Bug report สำคัญๆ กลับไปให้พวก Developer ซึ่งหลายคนกลับบ้านไปแล้ว Chris ต้องโทรตามพวกเขากลับมา และทีมของ William ก็ต้องรอให้พวก Developer ส่งเวอร์ชันใหม่กลับมาให้
ทีมของผมไม่ได้แค่นั่งเฉยๆ ปั่นเล่นไปวันๆ แต่เรากำลังทำงานอย่างบ้าคลั่งร่วมกับทีมของ William เพื่อพยายามทำให้ Phoenix ทั้งหมดรันขึ้นมาได้ใน Test environment เพราะถ้าพวกเขาทำให้มันรันใน Test environment ไม่ได้ เราก็อย่าหวังเลยว่าจะ Deploy และรันมันบน Production ได้
ผมละสายตาจากนาฬิกาไปที่โต๊ะประชุม Brent และวิศวกรอีกสามคนกำลังรุมล้อมอยู่กับทีม QA พวกเขาทำงานอย่างหนักตั้งแต่ตอน 16:00 น. และดูอิดโรยมาก หลายคนเปิด Laptop ค้างไว้ที่หน้า Google Search และคนอื่นๆ ก็กำลังง่วนอยู่กับการไล่เช็คการตั้งค่าของ Server, Operating system, Database และตัวแอปพลิเคชัน Phoenix เพื่อหาวิธีรันทุกอย่างขึ้นมาให้ได้ตามที่พวก Developer เคยรับรองไว้อย่างดิบดีว่ามันทำได้
มี Developer คนหนึ่งเพิ่งเดินเข้ามาเมื่อสองสามนาทีก่อนแล้วพูดว่า "เนี่ย มันก็รันบน Laptop ของผมได้นะ มันจะยากอะไรขนาดนั้นเชียว?"
Wes เริ่มสบถออกมา ในขณะที่วิศวกรของเราสองคนและของ William อีกสามคนเริ่มเข้าไปรุมเช็คที่ Laptop ของ Developer คนนั้น เพื่อดูว่ามันมีอะไรที่ต่างไปจาก Test environment บ้าง
ในอีกมุมหนึ่งของห้อง วิศวกรคนหนึ่งกำลังคุยโทรศัพท์อย่างเผ็ดร้อนกับใครบางคน "ใช่ เราก๊อปปี้ไฟล์ที่คุณส่งมาให้แล้ว... ใช่ มันเป็นเวอร์ชัน 1.0.13... หมายความว่ายังไงที่ว่ามันเป็นเวอร์ชันที่ผิด... อะไรนะ? คุณไปเปลี่ยนมันตอนไหน?... ก๊อปปี้ตอนนี้เลยแล้วลองใหม่... โอเค ฟังนะ แต่ผมบอกคุณเลยว่ามันไม่เวิร์กหรอก... ผมคิดว่าเป็นปัญหาที่ Network... หมายความว่ายังไงที่เราต้องเปิด Firewall port? ทำไมคุณไม่บอกเราเรื่องนี้ตั้งแต่สองชั่วโมงที่แล้ววะ?"
จากนั้นเขาก็วางหูโทรศัพท์ลงอย่างแรง แล้วทุบโต๊ะด้วยกำปั้นพร้อมตะโกนว่า "ไอ้พวกงี่เง่า!"
Brent เงยหน้าขึ้นมาจาก Laptop ของ Developer พลางขยี้ตาด้วยความล้า "ให้ผมเดานะ Front-end คุยกับ Database server ไม่ได้ เพราะไม่มีใครบอกเราว่าต้องเปิด Firewall port ใช่ไหม?"
วิศวกรคนนั้นพยักหน้าด้วยความโกรธที่แฝงไปด้วยความเหนื่อยล้า "ผมแม่งไม่อยากจะเชื่อเลย ผมคุยโทรศัพท์กับไอ้หมอนั่นตั้งยี่สิบนาที แต่มันไม่เคยคิดเลยว่าปัญหาไม่ได้อยู่ที่ Code นี่มัน FUBAR ชัดๆ"
ผมยังคงฟังเงียบๆ แต่ก็พยักหน้าเห็นด้วยกับสิ่งที่เขาประเมิน สมัยที่ผมอยู่หน่วยนาวิกโยธิน เราก็ใช้คำว่า FUBAR เหมือนกัน
เมื่อเห็นสถานการณ์เริ่มตึงเครียด ผมจึงก้มมองนาฬิกา: 19:37 น.
ได้เวลาเช็คความพร้อมของทีมบริหารแล้ว ผมเรียก Wes กับ Patty มา และมองหา William ผมเห็นเขากำลังยืนจ้องข้ามไหล่ของวิศวกรคนหนึ่งอยู่ ผมเลยเรียกให้เขามาคุยกัน
เขาดูงงๆ ไปครู่หนึ่ง เพราะปกติเราไม่ค่อยได้คุยกันเท่าไหร่ แต่เขาก็พยักหน้าและเดินตามเรามาที่ห้องทำงานของผม
"เอาล่ะทุกคน บอกผมทีว่าพวกคุณคิดยังไงกับสถานการณ์นี้" ผมถาม
Wes พูดขึ้นเป็นคนแรก "พวกนั้นพูดถูกแล้วครับ นี่มัน FUBAR ชัดๆ เรายังคงได้รับ Release ที่ไม่สมบูรณ์จากพวก Developer ในช่วงสองชั่วโมงที่ผ่านมา ผมเห็นสองครั้งแล้วที่พวกเขาลืมส่งไฟล์สำคัญหลายไฟล์มาให้ ซึ่งแน่นอนว่าทำให้รัน Code ไม่ได้ และอย่างที่คุณเห็น เรายังไม่รู้วิธีเซ็ต Test environment เพื่อให้ Phoenix รันขึ้นมาได้อย่างราบรื่นเลย"
เขาส่ายหัวอีกครั้ง "จากที่ผมเห็นในช่วงครึ่งชั่วโมงที่ผ่านมา ผมว่าเราถอยหลังลงคลองมากกว่านะ"
Patty ทำได้แค่ส่ายหัวด้วยความขยะแขยงและโบกมือไปมา โดยไม่พูดอะไรเพิ่ม
ผมพูดกับ William "ผมรู้ว่าเรายังไม่ค่อยได้ทำงานร่วมกันเท่าไหร่ แต่ผมอยากรู้จริงๆ ว่าคุณคิดยังไง ในมุมมองของคุณมันเป็นยังไงบ้าง?"
เขาก้มหน้าลง ถอนหายใจช้าๆ แล้วพูดว่า "บอกตามตรงว่าผมก็ไม่รู้เหมือนกันครับ Code มันเปลี่ยนเร็วมากจนเราตามแทบไม่ทัน ถ้าให้ผมพนันนะ ผมว่า Phoenix ระเบิดบน Production แน่ๆ ผมคุยกับ Chris สองสามครั้งเรื่องจะระงับการ Release แต่เขากับ Sarah ก็ไม่ฟังผมเลย"
ผมถามเขา "ที่คุณว่า 'ตามไม่ทัน' นี่หมายความว่ายังไง?"
"พอเราเจอในส่วนของ Testing เราก็ส่งกลับไปให้ Development แก้ไข" เขาอธิบาย "จากนั้นพวกเขาก็จะส่ง Release ใหม่ออกมา ปัญหาก็คือมันต้องใช้เวลาประมาณครึ่งชั่วโมงในการเตรียมทุกอย่างให้พร้อมรัน และอีกสามชั่วโมงเพื่อทำ Smoke test ในช่วงเวลานั้น เราคงได้รับ Release จาก Development อีกสักสามรอบแล้วล่ะ"
ผมยิ้มมุมปากเมื่อได้ยินคำว่า Smoke test ซึ่งเป็นคำที่พวกคนออกแบบวงจรไฟฟ้าใช้กัน มีสำนวนว่า "ถ้าคุณเปิดแผงวงจรแล้วไม่มีควันพุ่งออกมา มันก็น่าจะรันได้"
เขาส่ายหัวแล้วพูดว่า "เรายังไม่เคยผ่าน Smoke test เลยครับ ผมกังวลว่าเราไม่มีการทำ Version control ที่ดีพอ เราปล่อยปละละเลยเรื่องการติดตามเลขเวอร์ชันของทั้ง Release ทุกครั้งที่พวกเขาแก้อะไรสักอย่าง พวกเขาก็มักจะไปทำอย่างอื่นพังแทน ดังนั้นพวกเขาก็เลยส่งมาแค่ไฟล์เดียวแทนที่จะส่งมาทั้งแพ็คเกจ"
เขาพูดต่อ "ตอนนี้มันวุ่นวายมาก ต่อให้มีปาฏิหาริย์ที่ทำให้ Phoenix ผ่าน Smoke test ได้ ผมก็มั่นใจว่าเราคงไม่สามารถทำซ้ำแบบเดิมได้อีก เพราะมันมีส่วนประกอบที่เปลี่ยนแปลงตลอดเวลามากเกินไป"
ถอดแว่นออกแล้วพูดอย่างเด็ดขาด "คืนนี้คงต้องอยู่กันยาวๆ ทั้งคืนครับ ผมคิดว่ามีความเสี่ยงสูงมากที่เราจะไม่มีอะไรพร้อมรันตอน 8:00 น. พรุ่งนี้เช้าตอนที่ร้านค้าเปิด และนั่นเป็นปัญหาใหญ่แน่นอน"
นั่นเป็นคำพูดที่เบาเกินไปมาก ถ้าการ Release ไม่เสร็จสิ้นภายใน 8:00 น. ระบบ POS ในร้านค้าที่ใช้สำหรับเช็คบิลลูกค้าก็จะไม่ทำงาน และนั่นหมายความว่าเราจะไม่สามารถทำรายการขายให้ลูกค้าได้เลย
Wes พยักหน้า "William พูดถูกครับ เราต้องอยู่ที่นี่ทั้งคืนแน่ๆ และ Performance ก็แย่กว่าที่ผมคิดไว้เสียอีก เราต้องการ Server เพิ่มอีกอย่างน้อย 20 เครื่องเพื่อกระจาย Load และผมไม่รู้จะไปหาจากไหนได้มากมายขนาดนี้ในเวลาที่กระชั้นชิดแบบนี้ ผมมีคนกำลังวุ่นอยู่กับการหา Spare hardware บางทีเราอาจจะต้องไปถอด Server จาก Production มาใช้ด้วยซ้ำ"
"ตอนนี้ยังหยุดการ Deployment ทันไหม?" ผมถาม "แล้วจุดไหนที่เป็นจุดที่ถอยกลับไม่ได้แล้ว?"
"นั่นเป็นคำถามที่ดีมากครับ" Wes ตอบช้าๆ "ผมต้องเช็คกับ Brent ก่อน แต่ผมคิดว่าเรายังหยุดตอนนี้ได้โดยไม่มีปัญหา แต่เมื่อไหร่ที่เราเริ่ม Convert ฐานข้อมูลเพื่อให้มันรับออเดอร์ได้ทั้งจากระบบ POS ในร้านและ Phoenix เมื่อนั้นเราจะถอยกลับไม่ได้แล้ว ดูจากความเร็วตอนนี้ ผมว่าคงอีกสองสามชั่วโมงแหละครับ"
ผมพยักหน้า ผมได้ยินสิ่งที่จำเป็นต้องได้ยินแล้ว
"ทุกคน ผมจะส่งอีเมลไปหา Steve, Chris และ Sarah เพื่อขอดูว่าจะเลื่อนการ Deployment ออกไปได้ไหม แล้วผมจะไปหา Steve เอง บางทีเราอาจจะขอเวลาเพิ่มได้อีกสักอาทิตย์ แต่ให้ตายเถอะ ต่อให้ได้เพิ่มแค่แค่วันเดียวก็ถือว่าชนะแล้ว มีใครจะเสนออะไรไหม?"
Wes, Patty และ William ต่างพากันส่ายหัวอย่างหดหู่ โดยไม่พูดอะไรเลย
ผมหันไปหา Patty "คุณไปทำงานร่วมกับ William หาวิธีประสานงานเรื่อง Release ให้ดีกว่านี้หน่อย ไปที่ที่พวก Developer อยู่แล้วทำหน้าที่เหมือนเจ้าหน้าที่ควบคุมการจราจรทางอากาศ คอยเช็คให้แน่ใจว่าทุกอย่างมีการระบุเวอร์ชันที่ถูกต้อง แล้วแจ้งให้ทีมของ Wes รู้ว่าจะมีอะไรส่งมาบ้าง เราต้องการความโปร่งใสมากขึ้น และต้องการใครสักคนที่คอยกำกับให้คนพวกนั้นทำตามขั้นตอน ผมต้องการจุดรับ Code เพียงจุดเดียว มีการควบคุมการปล่อย Release เป็นรายชั่วโมง มีเอกสารประกอบ... เข้าใจที่ผมสื่อใช่ไหม?"
เธอตอบว่า "ด้วยความยินดีเลยค่ะ ฉันจะเริ่มจากการไปที่วอร์รูมของ Phoenix ก่อนเลย ถ้าจำเป็นฉันจะถีบประตูเข้าไปแล้วบอกว่า 'เรามาเพื่อช่วยแล้วจ้า...'"
ผมพยักหน้าขอบคุณพวกเขาทุกคน แล้วตรงไปที่ Laptop เพื่อเขียนอีเมล
จาก: Bill Palmer ถึง: Steve Masters สำเนา: Chris Anderson, Wes Davis, Patty McKee, Sarah Moulton, William Mason วันที่: 12 กันยายน, 19:45 น. ความสำคัญ: สูงสุด หัวข้อ: ด่วน: การ Deployment โปรเจกต์ Phoenix กำลังประสบปัญหาใหญ่ — ข้อเสนอแนะของผม: เลื่อนออกไป 1 สัปดาห์
Steve,
ก่อนอื่น ผมขอแจ้งให้ทราบว่าผมเองก็ต้องการให้ Phoenix ขึ้น Production ให้ได้พอๆ กับคนอื่นๆ ผมเข้าใจดีว่ามันสำคัญต่อบริษัทขนาดไหน
อย่างไรก็ตาม จากสิ่งที่ผมเห็น ผมเชื่อว่า Phoenix จะไม่พร้อมใช้งานภายในกำหนดการพรุ่งนี้ตอน 8:00 น. และมีความเสี่ยงสูงมากที่อาจจะส่งผลกระทบต่อระบบ POS ในร้านค้าด้วย
หลังจากได้หารือกับ William แล้ว ผมขอเสนอให้เราเลื่อนการเปิดตัว Phoenix ออกไปหนึ่งสัปดาห์ เพื่อเพิ่มโอกาสให้ Phoenix บรรลุเป้าหมาย และเพื่อหลีกเลี่ยงสิ่งที่ผมเชื่อว่าจะเป็นหายนะที่เกิดขึ้นอย่างแน่นอน
ผมคิดว่าเรากำลังเผชิญกับปัญหาในระดับเดียวกับเหตุการณ์ "รถไฟชนกันของ Toys R Us ช่วงวันขอบคุณพระเจ้าปี 1999" ซึ่งหมายถึงการหยุดชะงักของระบบหลายวัน และปัญหา Performance ที่อาจทำให้ข้อมูลลูกค้าและข้อมูลออเดอร์ตกอยู่ในความเสี่ยง
Steve ผมจะโทรหาคุณในอีกไม่กี่นาทีข้างหน้าครับ
ด้วยความเคารพ, Bill
ผมหยุดคิดครู่หนึ่ง เพื่อรวบรวมสติแล้วโทรหา Steve ซึ่งเขารับสายทันทีที่ดังครั้งแรก
"Steve นี่ Bill นะครับ ผมเพิ่งส่งอีเมลไปหาคุณ Sarah และ Chris ผมขอย้ำอีกครั้งว่าการเปิดตัวครั้งนี้มันแย่มากจริงๆ มันจะกลับมาทำร้ายเราแน่ๆ แม้แต่ William ก็ยังเห็นด้วย ทีมของผมกังวลมากว่าการเปิดตัวจะไม่เสร็จทันเวลาที่ร้านค้าเปิดตอน 8:00 น. ตามเวลาฝั่งตะวันออกในวันพรุ่งนี้ ซึ่งนั่นอาจจะทำให้ร้านค้าขายของไม่ได้ และอาจทำให้เว็บไซต์ล่มไปหลายวันด้วย"
"มันยังไม่สายเกินไปที่จะหยุดหายนะครั้งนี้นะครับ" ผมอ้อนวอน "ความล้มเหลวหมายความว่าเราจะมีปัญหาในการรับออเดอร์จากทุกคน ไม่ว่าจะในร้านหรือทางอินเทอร์เน็ต ความล้มเหลวอาจหมายถึงการทำให้ข้อมูลออเดอร์และบันทึกข้อมูลลูกค้าพังพินาศ ซึ่งนั่นหมายถึงการสูญเสียลูกค้า การเลื่อนออกไปหนึ่งสัปดาห์อาจจะแค่ทำให้ลูกค้าผิดหวัง แต่พวกเขาก็ยังกลับมาหาเรานะ!"
Steve ถอนหายใจผ่านโทรศัพท์แล้วตอบว่า "มันฟังดูแย่นะ แต่มาถึงจุดนี้แล้วเราไม่มีทางเลือก เราต้องลุยต่อ ฝ่ายการตลาดซื้อโฆษณาหนังสือพิมพ์ฉบับวันหยุดเพื่อประกาศการเปิดตัว Phoenix ไปแล้ว พวกเขาซื้อแล้ว จ่ายเงินแล้ว และกำลังถูกส่งไปตามบ้านทั่วประเทศ พาร์ทเนอร์ของเราทุกคนก็เตรียมพร้อมรอไว้หมดแล้ว"
ผมพูดอย่างตกตะลึง "Steve มันต้องแย่ขนาดไหนคุณถึงจะยอมเลื่อนการ Release นี้ออกไป? ผมกำลังบอกคุณว่าเรากำลังรับความเสี่ยงในระดับที่บ้าบิ่นมากในการเปิดตัวครั้งนี้!"
เขาเงียบไปครู่ใหญ่ "เอาแบบนี้แล้วกัน ถ้าคุณกล่อม Sarah ให้ยอมเลื่อนการเปิดตัวออกไปได้ เราค่อยมาคุยกัน ถ้าไม่ล่ะก็ ลุยต่อไป"
"คุณล้อผมเล่นหรือเปล่า? เธอเนี่ยนะที่เป็นคนสร้างความฉิบหายแบบกามิกาเซ่นี้ขึ้นมา"
ก่อนที่จะทันห้ามตัวเอง ผมก็กดวางสาย Steve ไปเสียแล้ว ผมแอบคิดแวบหนึ่งว่าจะโทรกลับไปขอโทษเขาดีไหม
แม้จะเกลียดแค่ไหน แต่ผมก็รู้สึกว่าตัวเองติดค้างบริษัทอยู่หนึ่งอย่าง นั่นคือการพยายามหยุดความบ้าคลั่งนี้เป็นครั้งสุดท้าย ซึ่งนั่นหมายถึงการต้องไปคุยกับ Sarah ด้วยตัวเอง
บรรยากาศในวอร์รูมของ Phoenix นั้นทั้งอบอ้าวและเหม็นอับจากผู้คนที่เหงื่อโชกด้วยความตึงเครียดและหวาดกลัว Sarah นั่งอยู่คนเดียวและกำลังรัวนิ้วบน Laptop ของเธอ
ผมเรียกเธอ "Sarah เราขอคุยด้วยหน่อยได้ไหม?"
เธอบุ้ยปากไปที่เก้าอี้ข้างตัวแล้วบอกว่า "ได้สิ มีอะไรเหรอ?"
ผมพูดด้วยน้ำเสียงที่เบาลง "ไปคุยกันที่โถงทางเดินเถอะ"
ขณะที่เราเดินออกไปด้วยกันอย่างเงียบเชียบ ผมก็ถามเธอว่า "จากมุมมองตรงนี้ คุณคิดว่าการ Release ครั้งนี้เป็นยังไงบ้าง?"
เธอตอบแบบแบ่งรับแบ่งสู้ "คุณก็รู้ว่ามันเป็นยังไงเวลาที่เราพยายามจะทำอะไรให้มันคล่องตัว (Nimble) ใช่ไหมล่ะ? มันมักจะมีเรื่องที่คาดไม่ถึงเสมอเมื่อเป็นเรื่องของเทคโนโลยี ถ้าคุณอยากจะกินไข่เจียว คุณก็ต้องยอมแลกกับการตอกไข่ให้แตกบ้างสิ"
"ผมว่ามันแย่กว่าการเปิดตัวปกติของคุณนิดหน่อยนะ ผมหวังว่าคุณคงเห็นอีเมลของผมแล้วใช่ไหม?"
เธอแค่ตอบว่า "เห็นแล้วสิ แล้วคุณเห็นที่ฉันตอบกลับไปหรือยังล่ะ?"
ให้ตายสิ
ผมบอกว่า "ยัง แต่ก่อนที่คุณจะอธิบาย ผมอยากให้แน่ใจว่าคุณเข้าใจถึงผลกระทบและความเสี่ยงที่เรากำลังทำให้ธุรกิจต้องแบกรับ" จากนั้นผมก็ย้ำสิ่งที่ผมเพิ่งบอก Steve ไปเกือบจะคำต่อคำ
ไม่น่าแปลกใจเลยที่ Sarah ไม่รู้สึกสะทกสะท้าน พอผมหยุดพูดเธอก็สวนกลับทันที "พวกเราทุกคนทำงานกันแทบตายกว่าจะพา Phoenix มาถึงจุดนี้ได้ การตลาดพร้อมแล้ว พัฒนาพร้อมแล้ว ทุกคนพร้อมหมด ยกเว้นคุณ ฉันเคยบอกคุณแล้วนะ แต่ดูเหมือนคุณจะไม่ฟัง: ความสมบูรณ์แบบคือศัตรูของความดีงาม (Perfection is the enemy of good) เราต้องเดินหน้าต่อไป"
ผมทึ่งในความไร้สาระที่เสียเวลาไปเปล่าๆ ผมได้แต่ส่ายหัวแล้วพูดว่า "ไม่ใช่หรอก ความไร้ความสามารถต่างหากที่เป็นศัตรูของความดีงาม จำคำผมไว้เถอะ เราจะต้องตามเก็บกวาดเศษซากความพินาศไปอีกหลายวัน หรืออาจจะเป็นสัปดาห์ เพราะการตัดสินใจที่งี่เง่าของคุณ"
ขณะที่ผมเดินดุ่มๆ กลับเข้าไปใน NOC ผมก็ได้อ่านอีเมลของ Sarah ซึ่งมันทำให้ผมโกรธยิ่งกว่าเดิม ผมต้องข่มใจไม่ให้ตอบโต้เพื่อไปสุมไฟเพิ่ม และผมก็ต้องระงับอารมณ์ที่อยากจะลบทิ้งด้วย — ผมอาจต้องใช้มันเพื่อปกป้องตัวเองในภายหลัง
จาก: Sarah Moulton ถึง: Bill Palmer, Steve Masters สำเนา: Chris Anderson, Wes Davis, Patty McKee, William Mason วันที่: 12 กันยายน, 20:15 น. ความสำคัญ: สูงสุด หัวข้อ: ตอบกลับ: ด่วน: การ Deployment โปรเจกต์ Phoenix กำลังประสบปัญหาใหญ่ — ข้อเสนอแนะของผม: เลื่อนออกไป 1 สัปดาห์
ทุกคนพร้อมหมด ยกเว้นคุณ การตลาด, ทีมพัฒนา, ผู้จัดการโปรเจกต์ ต่างทุ่มเทให้โปรเจกต์นี้อย่างเต็มที่ ตอนนี้ถึงคิวคุณแล้ว
เราต้องไปต่อ!
Sarah
จู่ๆ ผมก็รู้สึกตื่นตระหนก ขึ้นมาแวบหนึ่งที่ไม่ได้บอกอะไร Paige เลยมาหลายชั่วโมงแล้ว ผมเลยส่งข้อความสั้นๆ ไปหาเธอ:
คืนนี้สถานการณ์แย่ลงเรื่อยๆ ผมคงต้องอยู่ที่นี่ต่ออีกอย่างน้อยสองสามชั่วโมง พรุ่งนี้เช้าเจอกันนะ รักคุณ ช่วยอวยพรให้ผมโชคดีด้วยนะที่รัก
ผมรู้สึกถึงแรงแตะที่ไหล่ จึงหันไปมองแล้วพบว่าเป็น Wes "บอสครับ เรามีปัญหาใหญ่มากแล้วล่ะ"
สีหน้าของเขาทำให้ผมรู้สึกกลัวขึ้นมาทันที ผมรีบลุกขึ้นและเดินตามเขาไปที่อีกฝั่งของห้อง
"จำตอนที่เราผ่านจุดที่ถอยกลับไม่ได้ช่วงสามทุ่มได้ไหมครับ? ผมคอยตามดูความคืบหน้าของการทำ Database conversion ของ Phoenix อยู่ และมันช้ากว่าที่เราคิดไว้เป็นพันเท่าเลยครับ จริงๆ มันควรจะเสร็จไปตั้งหลายชั่วโมงแล้ว แต่นี่เพิ่งเสร็จไปแค่ 10% เอง นั่นหมายความว่าข้อมูลทั้งหมดจะยัง Convert ไม่เสร็จจนกว่าจะถึงวันอังคาร เราซวยมหาศาลแล้วครับ"
บางทีผมอาจจะเหนื่อยกว่าที่คิด เพราะผมตามเขาไม่ทันเลย ผมถามว่า "ทำไมมันถึงเป็นปัญหาล่ะ?"
Wes พยายามอธิบายอีกครั้ง "Script ตัวนั้นต้องทำงานให้เสร็จก่อนที่ระบบ POS จะเริ่มทำงานได้ เราหยุด Script ไม่ได้ และเราก็เริ่มใหม่ไม่ได้ด้วย ดูเหมือนว่าจะไม่มีอะไรที่ทำให้มันเร็วขึ้นได้เลย ผมคิดว่าเราพอจะ Hack ให้ Phoenix รันได้ แต่สำหรับระบบ POS ในร้านเนี่ยผมไม่รู้เลย เพราะเราไม่มีเครื่อง POS ให้ทดสอบใน Lab เลย"
ชิบหายแล้ว
ผมหยุดคิดก่อนจะถามว่า "แล้ว Brent ล่ะ?"
เขาส่ายหัว "ผมให้เขาดูอยู่แป๊บนึง เขาคิดว่ามีใครบางคนไปเปิด Database indexing เร็วเกินไป ซึ่งมันทำให้การทำ Insert ช้าลง แต่ตอนนี้เราทำอะไรไม่ได้แล้วล่ะครับ ถ้าไม่อยากให้ข้อมูลพัง ผมเลยให้เขากลับไปดูเรื่อง Deployment ของ Phoenix ต่อ"
"แล้วส่วนอื่นๆ เป็นยังไงบ้าง?" ผมถาม เพราะต้องการประเมินสถานการณ์ทั้งหมด "Performance ดีขึ้นบ้างไหม? แล้วพวกเครื่องมือ Database maintenance มีอะไรคืบหน้าไหม?"
"Performance ยังห่วยแตกเหมือนเดิมครับ" เขาตอบ "ผมว่ามันมี Memory leak มหาศาล ทั้งที่ยังไม่มี User เข้ามาใช้งานเลยด้วยซ้ำ ลูกน้องผมสงสัยว่าเราอาจจะต้อง Reboot พวก Server เป็นระยะทุกๆ สองสามชั่วโมงเพื่อไม่ให้มันระเบิดไปเสียก่อน ไอ้พวก Developer บ้า..."
เขาพูดต่อ "เราไปกวาดต้อน Server มาได้เพิ่มอีก 15 เครื่อง มีทั้งเครื่องใหม่และเครื่องที่ไปถอดมาจากมุมต่างๆ ของบริษัท และตอนนี้ เชื่อไหมครับว่าเราไม่มีที่ใน Rack ของ Data center เหลือพอที่จะติดตั้งพวกมันแล้ว เราต้องรื้อสายและจัด Rack ใหม่กันยกใหญ่ ต้องย้ายของพะรุงพะรังไปหมด Patty เพิ่งประกาศเรียกตัวลูกน้องของเธอหลายคนมาช่วยเรื่องนี้แล้วครับ"
ผมรู้สึกว่าคิ้วของผมเลิกขึ้นไปถึงไรผมด้วยความประหลาดใจจริงๆ แล้วผมก็ก้มหน้าหัวเราะออกมา ผมพูดว่า "โอ้ พระเจ้าช่วย ในที่สุดเราก็หา Server มาได้ แต่ดันไม่มีที่ให้วางมันซะงั้น ยอดเยี่ยมไปเลย เราแม่งไม่มีดวงจริงๆ!"
Wes ส่ายหัว "คุณรู้ไหม ผมเคยได้ยินเรื่องเล่าแบบนี้จากเพื่อนๆ มาบ้างนะ แต่นี่อาจจะกลายเป็นมารดาแห่งความล้มเหลวในการ Deployment ทั้งปวงเลยก็ได้"
เขาพูดต่อ "และนี่คือส่วนที่น่าทึ่งที่สุดครับ เราลงทุนมหาศาลไปกับ Virtualization ซึ่งมันควรจะช่วยเราจากเรื่องแบบนี้ได้ แต่พอทีม Development แก้ปัญหา Performance ไม่ได้ พวกเขาก็ดันโทษว่าเป็นเพราะ Virtualization เราก็เลยต้องย้ายทุกอย่างกลับมาลงบน Physical server แทน!"
และคิดดูสิว่า Chris เสนอวันเปิดตัวที่เร่งรีบขนาดนี้เพราะเขาคิดว่า Virtualization จะช่วยชีวิตเราไว้ได้
ผมเช็ดน้ำตาและบังคับตัวเองให้หยุดหัวเราะ "แล้วพวก Database support tools ที่พวก Developer สัญญาไว้ล่ะ?"
Wes หุบยิ้มทันที "ขยะชัดๆ ครับ ลูกน้องเราต้องเข้าไป Edit ข้อมูลในฐานข้อมูลด้วยตัวเองเพื่อแก้ Error ทั้งหมดที่ Phoenix สร้างขึ้นมา และเราต้องกด Trigger เรื่องการเติมสินค้า (Replenishment) ด้วยมือเองด้วย เรายังต้องเรียนรู้อีกเยอะว่า Phoenix จะต้องการงานแมนนวลแบบนี้อีกมากแค่ไหน มันจะเกิดความผิดพลาดได้ง่ายมาก และต้องใช้คนจำนวนมหาศาลเพื่อทำสิ่งนี้"
ผมรู้สึกเจ็บจี๊ดเมื่อคิดว่าเรื่องนี้จะทำให้ลูกน้องของเราต้องมาจมปลักอยู่กับงานที่ใช้แรงงานแบบนี้ ทั้งที่จริงๆ แล้วแอปพลิเคชันที่พังๆ นั่นควรจะเป็นคนทำ ไม่มีอะไรที่ทำให้ Auditor กังวลได้มากกว่าการ Edit ข้อมูลโดยตรงโดยไม่มี Audit trail และการควบคุมที่เหมาะสมอีกแล้ว
"คุณทำหน้าที่ได้เยี่ยมมากแล้ว สิ่งที่สำคัญที่สุดตอนนี้คือการหาคำตอบว่าการที่ Database conversion ไม่เสร็จจะส่งผลยังไงกับระบบ POS ในร้านบ้าง ไปหาใครสักคนที่รู้เรื่องพวกนี้ทะลุปรุโปร่งแล้วฟังความเห็นเขาดู ถ้าจำเป็นก็โทรหาใครก็ได้ในทีมของ Sarah ที่ดูแลเรื่อง Retail operations ประจำวัน ถ้าคุณหาเครื่อง POS หรือ Server ที่เราสามารถ Log in เข้าไปดูผลกระทบได้เองจะดีมาก"
"รับทราบครับ" Wes พยักหน้า "ผมรู้แล้วว่าจะให้ใครดูเรื่องนี้"
ผมมองเขาเดินจากไปแล้วมองไปรอบๆ เพื่อดูว่าผมจะไปช่วยตรงไหนได้บ้าง
แสงยามเช้าเริ่มสาดส่อง เข้ามาทางหน้าต่าง เผยให้เห็นกองแก้วกาแฟ เศษกระดาษ และขยะอื่นๆ ที่กองพะเนิน ในมุมหนึ่ง มี Developer คนหนึ่งกำลังนอนหลับอยู่ใต้เก้าอี้
ผมเพิ่งวิ่งไปห้องน้ำเพื่อล้างหน้าล้างตาและแปรงฟันขจัดคราบสกปรก ผมรู้สึกสดชื่นขึ้นนิดหน่อย แต่มันก็นานหลายปีแล้วที่ผมไม่ได้อดนอนทั้งคืนแบบนี้
Maggie Lee เป็นผู้อำนวยการอาวุโสฝ่าย Retail Program Management และเป็นลูกน้องของ Sarah เธอเริ่มเปิดการประชุมฉุกเฉินตอน 7:00 น. มีคนเกือบ 30 คนเบียดเสียดกันอยู่ในห้อง เธอพูดด้วยน้ำเสียงที่เหนื่อยล้าว่า "มันเป็นคืนที่เต็มไปด้วยความพยายามอย่างยิ่งยวด และฉันขอขอบคุณทุกคนที่ทำทุกวิถีทางเพื่อให้เราบรรลุพันธกิจของ Phoenix"
"อย่างที่พวกคุณทราบ เหตุผลของการประชุมฉุกเฉินครั้งนี้คือมีบางอย่างผิดพลาดในการทำ Database conversion" เธอพูดต่อ "นั่นหมายความว่าระบบ POS ในร้านค้าทั้งหมดจะใช้งานไม่ได้ ซึ่งหมายความว่าร้านค้าจะไม่มีเครื่องเก็บเงินที่ใช้งานได้ นั่นหมายความว่าต้องใช้การเก็บเงินแบบแมนนวลและใช้เครื่องรูดบัตรแบบแมนนวลแทน"
เธอกล่าวเสริม "ข่าวดีคือเว็บไซต์ Phoenix รันได้ตามปกติแล้ว" เธอบุ้ยปากมาทางผมแล้วพูดว่า "ต้องขอบคุณ Bill และทีม IT Operations ทั้งหมดที่ทำให้สิ่งนี้เกิดขึ้นได้"
ผมตอบกลับอย่างหงุดหงิด "ผมอยากให้ระบบ POS ใช้งานได้มากกว่า Phoenix เสียอีก ตอนนี้ที่ NOC วุ่นวายกันไปหมดแล้ว โทรศัพท์ทุกเครื่องดังไม่หยุดมาเป็นชั่วโมงแล้ว เพราะคนในร้านพากันตะโกนด่าว่าระบบของพวกเขาไม่ตอบสนอง มันเหมือนรายการระดมทุนมาราธอนเลยล่ะครับ และก็เหมือนกับพวกคุณทุกคนนั่นแหละ กล่องข้อความเสียงของผมเต็มไปด้วยข้อความจากพนักงานในร้านทั้ง 120 สาขาเรียบร้อยแล้ว เราคงต้องดึงคนมาเพิ่มเพื่อช่วยกันรับโทรศัพท์"
โทรศัพท์เครื่องหนึ่งสั่นอยู่บนโต๊ะราวกับจะช่วยตอกย้ำคำพูดของผม
"เราต้องรีบแก้ปัญหาเชิงรุกแล้วล่ะ" ผมพูดกับ Sarah "เราต้องส่งสรุปเหตุการณ์ไปให้ทุกคนในร้านโดยเร็วที่สุด เพื่อแจ้งให้ทราบว่าเกิดอะไรขึ้น และให้คำแนะนำที่ชัดเจนขึ้นว่าจะต้องดำเนินงานอย่างไรโดยไม่มีระบบ POS"
Sarah ทำหน้าว่างเปล่าไปครู่หนึ่ง แล้วพูดว่า "นั่นเป็นไอเดียที่ดีนะ งั้นคุณช่วยลองร่างอีเมลมาให้หน่อยได้ไหม แล้วเราค่อยมาดูกันต่อ"
ผมอึ้งไปเลย "อะไรนะ? ผมไม่ใช่ผู้จัดการร้านนะครับ! ให้กลุ่มของคุณร่างมาก่อนดีกว่าไหม แล้วผมกับ Chris จะช่วยดูความถูกต้องให้เอง"
Chris พยักหน้าเห็นด้วย
Sarah มองไปรอบๆ ห้อง "โอ้เค เดี๋ยวเราจะเตรียมข้อมูลให้เสร็จภายในสองสามชั่วโมงนี้"
"ล้อกันเล่นหรือเปล่าครับ!" ผมตะโกน "ร้านค้าฝั่ง East Coast จะเปิดในอีกไม่ถึงชั่วโมงแล้วนะ เราต้องส่งอะไรออกไปตอนนี้เลย!"
"เดี๋ยวฉันจัดการเองค่ะ" Maggie พูดพลางยกมือขึ้น เธอเปิด Laptop และเริ่มพิมพ์ทันที
ขณะที่ผมบีบขมับตัวเองเพื่อดูว่าจะช่วยให้หายปวดหัวได้บ้างไหม ผมก็ได้แต่สงสัยว่าการเปิดตัวครั้งนี้มันจะแย่ลงไปได้ถึงขนาดไหนอีก
เมื่อถึงเวลา 14:00 น. ของวันเสาร์ มันก็ชัดเจนแล้วว่าจุดต่ำสุดนั้นยังอยู่อีกไกลกว่าที่ผมคิดไว้มาก
ตอนนี้ร้านค้าทุกแห่งต้องทำงานในโหมด Manual เต็มรูปแบบ รายการขายทั้งหมดถูกดำเนินการด้วยเครื่องรูดบัตรเครดิตแบบใช้มือกด และเก็บสำเนากระดาษคาร์บอนไว้ในกล่องรองเท้า
ผู้จัดการร้านต้องให้พนักงานวิ่งไปที่ร้านเครื่องเขียนเพื่อหาสลิปกระดาษคาร์บอนเพิ่ม และต้องวิ่งไปธนาคารเพื่อแลกเงินทอนให้เพียงพอ
ลูกค้าที่เข้าเว็บไซต์ Phoenix ต่างพากันบ่นว่าเว็บล่มหรือไม่ก็ช้าจนใช้งานไม่ได้ เราถึงกับกลายเป็นประเด็นร้อนติดเทรนด์ Twitter ลูกค้าทุกคนที่เคยตื่นเต้นที่จะลองใช้บริการของเราต่างพากันก่นด่าความล้มเหลวครั้งใหญ่ของ IT หลังจากที่ได้เห็นโฆษณาทางทีวีและหนังสือพิมพ์
ลูกค้าที่สามารถสั่งซื้อออนไลน์ได้กลับต้องเจอกับฝันร้ายเมื่อไปรับสินค้าที่ร้าน นั่นคือตอนที่เราค้นพบว่า Phoenix ดูเหมือนจะทำรายการหายไปดื้อๆ และในบางกรณี มันก็ตัดเงินในบัตรเครดิตของลูกค้าเบิ้ลไปสองหรือสามรอบเลยทีเดียว
Ann จากฝ่ายการเงินโกรธจัดเมื่อพบว่าข้อมูลการขายอาจจะไม่ถูกต้อง เธอขับรถมาที่บริษัทและตั้งวอร์รูมขึ้นมา อีกแห่ง ที่ฝั่งตรงข้ามโถงทางเดิน คอยรับโทรศัพท์จากร้านค้าเพื่อจัดการกับออเดอร์ที่มีปัญหา เมื่อถึงตอนเที่ยง ก็มีกองเอกสารจากลูกค้าที่โกรธแค้นหลายร้อยรายถูกแฟกซ์มาจากร้านค้า
เพื่อช่วยงานของ Ann นั้น Wes ได้ดึงวิศวกรมาเพิ่มเพื่อสร้างเครื่องมือให้ทีมของ Ann ใช้จัดการกับรายการที่ผิดพลาดซึ่งค้างอยู่เป็นจำนวนมาก
ขณะที่ผมเดินผ่านโต๊ะใน NOC เป็นรอบที่สาม ผมก็ตัดสินใจว่าผมเหนื่อยเกินกว่าจะช่วยอะไรใครได้แล้ว ตอนนี้เกือบจะ 14:30 น. แล้ว
Wes กำลังเถียงกับใครบางอยู่ที่อีกฝั่งของห้อง ผมเลยรอจนเขาคุยเสร็จ แล้วพูดกับเขาว่า "เราต้องยอมรับความจริงว่าเรื่องนี้มันจะยืดเยื้อไปอีกหลายวัน คุณยังไหวไหม?"
เขาหาวแล้วตอบว่า "ผมได้งีบไปชั่วโมงนึงครับ ว้าว คุณดูแย่มากเลยนะ กลับบ้านไปนอนสักสองสามชั่วโมงเถอะครับ ผมคุมสถานการณ์ที่นี่ได้ ถ้ามีอะไรผมจะโทรหา"
ผมเหนื่อยเกินกว่าจะโต้แย้ง จึงขอบคุณเขาแล้วเดินออกมา
ผมสะดุ้งตื่น เมื่อได้ยินเสียงโทรศัพท์ดังขึ้น ผมรีบลุกพรวดขึ้นมาคว้าโทรศัพท์ ตอนนี้เป็นเวลา 16:30 น. Wes โทรมา
ผมสะบัดหัวเพื่อให้ตื่นตัวขึ้นหน่อยแล้วรับสาย "ว่าไง?"
ผมได้ยินเขาพูดว่า "ข่าวร้ายครับ สรุปสั้นๆ คือใน Twitter แชร์กันว่อนเลยว่าเว็บ Phoenix ทำข้อมูลเลขบัตรเครดิตลูกค้ารั่วไหล มีคนโพสต์ภาพ Screenshot ด้วย ดูเหมือนว่าเวลาที่คุณลบของออกจากรถเข็น Session จะ Crash และมันจะแสดงเลขบัตรเครดิตของออเดอร์ล่าสุดที่ทำรายการสำเร็จขึ้นมา"
ผมกระโดดลงจากเตียงแล้วพุ่งไปห้องน้ำเพื่ออาบน้ำทันที "โทรหา John เลย เขาต้องคลั่งแน่ๆ มันน่าจะมีขั้นตอนปฏิบัติสำหรับเรื่องนี้นะ ซึ่งคงต้องทำเอกสารมหาศาล และเผลอๆ อาจจะต้องแจ้งความด้วย และคงต้องมีทนายเข้ามาเกี่ยวด้วยแน่ๆ"
Wes ตอบว่า "ผมโทรหาเขาแล้วครับ เขากับทีมงานกำลังมาที่นี่ และเขาโกรธจัดเลย น้ำเสียงเขาฟังดูเหมือนตัวละครในเรื่อง Pulp Fiction เลยล่ะครับ เขาถึงกับยกประโยคเรื่องวันพิพากษาและการฟาดฟันผู้คนด้วยการล้างแค้นอันยิ่งใหญ่และความโกรธแค้นอันรุนแรงขึ้นมาพูดเลย"
ผมหัวเราะ ผมชอบฉากนั้นที่ John Travolta กับ Samuel L. Jackson เล่นด้วยกันจริงๆ มันไม่ใช่ภาพลักษณ์ที่ผมคิดไว้สำหรับ CISO ผู้สุภาพเรียบร้อยของเราเลย แต่นั่นแหละ อย่างที่เขาว่ากันว่า "น้ำนิ่งไหลลึก"
ผมรีบอาบน้ำอย่างรวดเร็ว วิ่งไปในห้องครัวแล้วคว้าสติ๊กชีสที่ลูกชายผมชอบกินมาสองสามชิ้น ผมเอามันติดรถไปด้วยแล้วเริ่มขับรถกลับไปที่ออฟฟิศ
พอถึงทางหลวง ผมก็โทรหา Paige เธอรับสายทันที "ที่รัก คุณหายไปไหนมาคะ? ฉันอยู่ที่ทำงาน ส่วนลูกๆ อยู่กับแม่ของฉันค่ะ"
ผมบอกว่า "จริงๆ ผมเพิ่งกลับมาบ้านได้ชั่วโมงเดียวเอง พอหัวถึงหมอนก็หลับปุ๋ยเลย แต่ Wes เพิ่งโทรมา ดูเหมือนว่าแอป Phoenix จะเริ่มโชว์เลขบัตรเครดิตของคนอื่นให้คนทั้งโลกเห็นแล้วล่ะ มันเป็นการละเมิดความปลอดภัยครั้งใหญ่ ผมเลยกำลังขับรถกลับไปเดี๋ยวนี้แหละ"
ผมได้ยินเธอถอนหายใจแบบไม่ค่อยพอใจ "คุณอยู่ที่นั่นมาสิบกว่าปี ไม่เคยต้องทำงานหนักขนาดนี้เลยนะคะ ฉันเริ่มไม่แน่ใจแล้วว่าฉันจะชอบที่คุณได้เลื่อนตำแหน่งครั้งนี้หรือเปล่า"
"ผมก็เหมือนกันนั่นแหละครับที่รัก..." ผมพูด