สองสัปดาห์ต่อมาผ่านไปอย่างรวดเร็ว ด้วยกิจกรรมของทีม SWAT ที่ดึงเวลาส่วนใหญ่ของผมไป รวมถึงเวลาของ Wes และ Patty ด้วย
มันผ่านมานานกว่าทศวรรษแล้วที่ผมไม่ได้มีปฏิสัมพันธ์กับพวก Developer ทุกวันแบบนี้ ผมลืมไปแล้วว่าพวกเขามีนิสัยแปลกๆ ได้ขนาดไหน สำหรับผมแล้ว พวกเขาดูเหมือนนักดนตรีอินดี้มากกว่าวิศวกรเสียอีก
ในยุคของผม Developer จะใส่ที่เสียบปากกาป้องกันกระเป๋าเสื้อ (Pocket protector) ไม่ใช่เสื้อยืดลายวินเทจกับรองเท้าแตะ และพกไม้บรรทัดคำนวณ (Slide rule) ไม่ใช่สเก็ตบอร์ด
ในหลายๆ ด้าน คนพวกนี้ส่วนใหญ่มีนิสัยตรงข้ามกับผมอย่างสิ้นเชิง ผมชอบคนที่สร้างและปฏิบัติตามกระบวนการ คนที่ให้ความสำคัญกับความเข้มงวดและมีวินัย ส่วนคนพวกนี้กลับหลีกเลี่ยงกระบวนการและทำตามอารมณ์หรือจินตนาการแทน
แต่ก็ต้องขอบคุณพระเจ้าที่พวกเขายังอยู่ที่นี่
ผมรู้ว่าการเหมาเข่งตัดสินคนทั้งอาชีพมันไม่ยุติธรรม ผมรู้ว่าทักษะที่หลากหลายเหล่านี้ล้วนสำคัญหากเราต้องการประสบความสำเร็จ ความท้าทายคือการดึงทุกคนมารวมกัน เพื่อให้เราทำงานมุ่งไปสู่เป้าหมายเดียวกัน
ความท้าทายแรกคือการตั้งชื่อโปรเจกต์ของทีม SWAT เราไม่สามารถเรียกมันว่า “Mini-Phoenix” ต่อไปได้เรื่อยๆ สุดท้ายเราเลยต้องเสียเวลาไปชั่วโมงหนึ่งเพื่อถกเถียงเรื่องชื่อกัน
ลูกน้องผมอยากให้ชื่อ “Cujo” หรือ “Stiletto” แต่พวก Developer อยากให้ชื่อ “Unicorn”
Unicorn? ที่เหมือนในสายรุ้งกับพวก Care Bears น่ะเหรอ?
และผิดความคาดหมายของผมอย่างสิ้นเชิง ชื่อ “Unicorn” ชนะการโหวต
พวก Developer นี่นะ ผมจะไม่มีวันเข้าใจพวกเขาจริงๆ
ไม่ว่าผมจะไม่ชอบชื่อมันแค่ไหน แต่โปรเจกต์ Unicorn ก็เริ่มเป็นรูปเป็นร่างได้ดีมาก ด้วยเป้าหมายที่จะทำทุกอย่างเพื่อให้ได้ระบบแนะนำสินค้าและโปรโมชันที่มีประสิทธิภาพ เราเริ่มต้นด้วยโค้ดที่สะอาดและแยกตัวออกมาจากระบบยักษ์ใหญ่อย่าง Phoenix อย่างสิ้นเชิง
มันน่าทึ่งมากที่เห็นทีมนี้จัดการกับอุปสรรคต่างๆ หนึ่งในความท้าทายแรกคือการเริ่มวิเคราะห์ข้อมูลการซื้อของลูกค้า ซึ่งเป็นเหมือนกำแพงอิฐด่านแรก แค่จะเข้าไปแตะฐานข้อมูล Production ก็หมายความว่าต้องเชื่อมโยงเข้ากับไลบรารีของระบบเก่า และถ้าจะเปลี่ยนแปลงอะไร ก็ต้องไปโน้มน้าวทีมสถาปนิก (Architecture team) ให้ยอมอนุมัติ
เพราะทั้งบริษัทอาจจะเจ๊งไปก่อนที่งานจะเสร็จเสียอีก พวก Developer และ Brent เลยตัดสินใจสร้างฐานข้อมูลอันใหม่ขึ้นมาเองเลย โดยใช้เครื่องมือ Open Source และดึงข้อมูลมาไม่เพียงแค่จาก Phoenix เท่านั้น แต่ยังดึงมาจากระบบรับออเดอร์ (Order Entry) และระบบจัดการสินค้าคงคลัง (Inventory Management) ด้วย
ด้วยวิธีนี้ เราจึงสามารถพัฒนา ทดสอบ และแม้กระทั่งรันระบบได้จริงโดยไม่ส่งผลกระทบต่อ Phoenix หรือแอปพลิเคชันที่สำคัญอื่นๆ และการแยกตัวออกมาจากโปรเจกต์อื่นทำให้เราสามารถปรับเปลี่ยนทุกอย่างที่ต้องการได้โดยไม่ทำให้โปรเจกต์อื่นมีความเสี่ยง ในขณะเดียวกัน เราก็ไม่ต้องติดหล่มอยู่กับกระบวนการที่เราไม่จำเป็นต้องเป็นส่วนหนึ่งของมัน
ผมเห็นดีเห็นงามและสนับสนุนแนวทางนี้อย่างเต็มที่ แต่อีกใจหนึ่งผมก็แอบสงสัยว่าเราจะจัดการกับการขยายตัวอย่างไม่หยุดยั้งได้อย่างไร ถ้าหากทุกโปรเจกต์เกิดอยากจะสร้างฐานข้อมูลใหม่ขึ้นมาตามใจชอบ ผมจึงเตือนตัวเองให้แน่ใจว่าเราจะต้องมีมาตรฐานกำหนดไว้ว่าฐานข้อมูลประเภทไหนบ้างที่นำมาใช้จริงใน Production ได้ เพื่อรับประกันว่าเราจะมีทักษะที่พร้อมรองรับมันได้ในระยะยาว
ในระหว่างนั้น Brent ก็ร่วมงานกับทีมของ William เพื่อสร้างกระบวนการ Build และกลไกอัตโนมัติที่สามารถสร้าง Dev, QA และ Production environment ได้พร้อมกัน พวกเราทุกคนต่างตะลึงที่ภายในรอบ Sprint สามสัปดาห์นี้น่าจะเป็นครั้งแรกเลยที่นักพัฒนาทุกคนใช้ระบบปฏิบัติการ เวอร์ชันไลบรารี ฐานข้อมูล และการตั้งค่าฐานข้อมูลที่ตรงกันเป๊ะ
“เหลือเชื่อจริงๆ” นักพัฒนาคนหนึ่งพูดขึ้นในช่วง Sprint Retrospective ซึ่งจัดขึ้นทุกสิ้นรอบ Sprint “สำหรับ Phoenix เนี่ย Developer คนใหม่ต้องใช้เวลาสามหรือสี่สัปดาห์กว่าจะรันงานบนเครื่องตัวเองได้ เพราะเราไม่เคยมีลิสต์รายการสิ่งของเป็นล้านๆ อย่างที่ต้องลงเครื่องเพื่อให้มันคอมไพล์และรันได้ แต่ตอนนี้สิ่งที่เราต้องทำมีแค่เช็คเอาต์ (Check out) Virtual Machine ที่ Brent และทีมของเขาสร้างขึ้นมา แล้วมันก็พร้อมใช้งานทันที”
ในทำนองเดียวกัน พวกเราทุกคนต่างทึ่งที่ได้เห็น QA environment ที่เหมือนกับ Dev environment พร้อมใช้งานตั้งแต่วงรอบต้นๆ ของโปรเจกต์ ซึ่งไม่เคยมีมาก่อนเหมือนกัน เราต้องปรับแต่งนิดหน่อยเพื่อให้สะท้อนความจริงที่ว่าระบบ Dev จะมีหน่วยความจำและพื้นที่เก็บข้อมูลน้อยกว่า QA และ QA ก็มีน้อยกว่า Production แต่ส่วนประกอบหลักๆ ส่วนใหญ่นั้นเหมือนกันหมด และสามารถแก้ไขและสร้างระบบขึ้นมาใหม่ได้ภายในไม่กี่นาที
การทำ Automated Code Deployment ยังทำงานได้ไม่สมบูรณ์นัก รวมถึงการย้ายโค้ดไปมาระหว่างสภาพแวดล้อมต่างๆ ด้วย แต่ทีมของ William ก็ได้สาธิตความสามารถเหล่านั้นให้เราเห็นมากพอจนทุกคนมั่นใจว่าพวกเขาจะทำให้มันใช้งานได้ดีในเร็วๆ นี้แน่นอน
ยิ่งไปกว่านั้น พวก Developer ยังบรรลุเป้าหมายของฟีเจอร์ใน Sprint ได้ก่อนกำหนดเสียอีก พวกเขาสร้างรายงานที่แสดงให้เห็นว่า “ลูกค้าที่ซื้อสินค้านี้ มักจะซื้อสินค้าเหล่านี้ด้วย” แม้ว่ารายงานจะใช้เวลาประมวลผลนานกว่าที่คาดไว้เป็นร้อยเท่า แต่พวกเขาก็รับปากว่าจะปรับปรุงประสิทธิภาพให้ดีขึ้นแน่นอน
เพราะความคืบหน้าที่รวดเร็ว เราจึงตัดสินใจลดระยะเวลา Sprint เหลือเพียงสองสัปดาห์ การทำแบบนี้ช่วยให้เราลดระยะเวลาการวางแผนลง เพื่อให้สามารถตัดสินใจและลงมือทำได้บ่อยขึ้น แทนที่จะต้องยึดติดกับแผนที่ทำไว้เมื่อเกือบเดือนก่อน
ในขณะที่ Phoenix ยังคงดำเนินงานตามแผนที่เขียนไว้เมื่อกว่าสามปีก่อน ผมพยายามที่จะไม่นึกถึงเรื่องนั้นมากจนเกินไป
ความคืบหน้าของเราดูเหมือนจะพัฒนาขึ้นแบบทวีคูณ เราวางแผนและลงมือทำได้เร็วขึ้นกว่าที่เคย และช่องว่างความเร็ว (velocity gap) ระหว่าง Unicorn และ Phoenix ก็กว้างขึ้นเรื่อยๆ ทีม Phoenix เริ่มสังเกตเห็นและเริ่มหยิบยืมแนวทางปฏิบัติของเราไปใช้ในทุกๆ ด้าน และได้ผลลัพธ์ที่เราไม่เคยคิดว่าจะเป็นไปได้มาก่อน
แรงขับเคลื่อนของ Unicorn ดูเหมือนจะหยุดไม่อยู่และเริ่มขับเคลื่อนได้ด้วยตัวเองแล้ว ผมสงสัยว่าเราจะสามารถทำให้พวกเขาหยุดและกลับไปทำแบบเดิมได้ไหม ต่อให้เราต้องการจะทำแบบนั้นก็ตาม
ในระหว่างที่ผมกำลังอยู่ในการประชุมงบประมาณ Wes ก็โทรมา “เรามีปัญหาใหญ่แล้วครับ”
ผมเดินออกจากห้องประชุมแล้วถามว่า “เกิดอะไรขึ้น?”
“ไม่มีใครหา Brent เจอเลยตลอดสองวันที่ผ่านมา คุณพอจะรู้ไหมว่าเขาหายไปไหน?” เขาถาม
“ไม่รู้สิ” ผมตอบ “เดี๋ยวนะ ที่ว่าหาไม่เจอนี่หมายความว่ายังไง? เขาโอเคไหม? คุณลองโทรเข้ามือถือเขาแล้วใช่ไหม?”
Wes ไม่แม้แต่จะซ่อนความหงุดหงิดของเขาไว้ “แน่นอนว่าผมโทรแล้ว! ผมฝากข้อความเสียงถึงเขาทุกชั่วโมง ทุกคนกำลังตามหาเขากันให้ควั่ก งานสุมหัวกันจนจะตายอยู่แล้ว และเพื่อนร่วมทีมเขาก็เริ่มสติแตกกันแล้วว่า—โอ้ พระเจ้า Brent โทรมาพอดี... ถือสายรอก่อนนะ...“
ผมได้ยินเขาหยิบโทรศัพท์ที่โต๊ะขึ้นมารับ “แกไปอยู่ที่ไหนมาวะเนี่ย? ทุกคนตามหากันให้วุ่น! อะไรนะ... อะไรนะ... Des Moines เหรอ? แกไปทำอะไรที่นั่น? ไม่มีใครบอกฉันเลยสักคน... ภารกิจลับให้ Dick กับ Sarah งั้นเหรอ? นี่มันเรื่องบ้าอะไร—”
ผมฟังเขาอยู่ครู่หนึ่งด้วยความขบขัน ขณะที่ Wes พยายามเค้นหาความจริงจาก Brent ในที่สุดผมก็ได้ยินเขาพูดว่า “ถือสายรอนะ เดี๋ยวขอถามก่อนว่า Bill จะเอายังไง...” พลางหยิบมือถือขึ้นมาคุยกับผมต่อ
“โอเค คุณคงได้ยินที่เขาพูดเมื่อกี้แล้วใช่ไหมครับ?” เขาถามผม
“บอกเขาว่าเดี๋ยวผมจะโทรหาเขาเดี๋ยวนี้แหละ”
หลังจากวางสายจาก Wes ผมก็กดเบอร์หา Brent พลางสงสัยว่าคราวนี้ Sarah ก่อเรื่องอะไรอีก
“สวัสดีครับ Bill” ผมได้ยินเสียงเขาตอบรับ
“ช่วยบอกผมหน่อยได้ไหมว่าเกิดอะไรขึ้น และทำไมคุณถึงไปอยู่ที่ Des Moines?” ผมถามอย่างสุภาพ
“ไม่มีใครจากห้องทำงานของ Dick บอกคุณเลยเหรอครับ?” เขาถามกลับ เมื่อเห็นผมเงียบไป เขาจึงเล่าต่อ “Dick กับทีมการเงินรีบส่งผมออกจากออฟฟิศเมื่อเช้าวานนี้ เพื่อให้ไปร่วมทีมเฉพาะกิจ (task force) ในการสร้างแผนแยกบริษัทครับ ดูเหมือนว่านี่จะเป็นโปรเจกต์ที่มีความสำคัญสูงสุด และพวกเขาต้องหาคำตอบให้ได้ว่ามันจะส่งผลกระทบต่อระบบไอทีทั้งหมดอย่างไรบ้าง”
“แล้วทำไม Dick ถึงเลือกคุณเข้าไปอยู่ในทีมล่ะ?” ผมถาม
“ผมก็ไม่รู้เหมือนกันครับ” เขาตอบ “เชื่อผมเถอะ ผมไม่อยากอยู่ที่นี่เลย ผมเกลียดเครื่องบิน พวกเขาน่าจะให้นักวิเคราะห์ธุรกิจ (business analysts) มาทำเรื่องนี้มากกว่า แต่บางทีอาจเป็นเพราะผมรู้เรื่องวิธีการที่ระบบหลักๆ เชื่อมต่อกันมากที่สุดล่ะมั้ง รู้ว่ามันรันอยู่ที่ไหน พึ่งพาบริการอะไรบ้าง... ว่าแต่ ผมบอกคุณได้เลยนะตอนนี้ว่าการแยกบริษัทออกเป็นส่วนๆ น่ะมันจะเป็นฝันร้ายขนานแท้เลยล่ะครับ”
ผมจำตอนที่ผมนำทีมรวมระบบหลังจากการควบรวมกิจการรีเทลเจ้าใหญ่ได้ นั่นเป็นโปรเจกต์ที่มหาศาลมาก และการแยกบริษัทออกจากกันก็น่าจะยากกว่านั้นเสียอีก
ถ้าเรื่องนี้จะส่งผลกระทบต่อแอปพลิเคชันนับร้อยที่เราดูแลอยู่ Brent ก็น่าจะพูดถูก มันคงต้องใช้เวลาเป็นปีๆ
ไอทีมันอยู่ทุกที่ครับ ดังนั้นมันจึงไม่ใช่แค่การตัดแขนตัดขา แต่มันเหมือนกับการแยกโครงข่ายระบบประสาทของบริษัทออกจากกันมากกว่า
เมื่อนึกได้ว่า Dick และ Sarah แอบดึงตัวทรัพยากรหลักของผมไปโดยไม่แม้แต่จะถามสักคำ ผมจึงพูดอย่างช้าๆ และหนักแน่นว่า “Brent ฟังผมให้ดีนะ: ภารกิจที่สำคัญที่สุดของคุณตอนนี้คือการหาคำตอบว่าเพื่อนร่วมทีม Unicorn ของคุณต้องการอะไร และจัดการให้พวกเขาซะ พลาดเที่ยวบินไปเลยถ้าจำเป็น เดี๋ยวผมจะไปจัดการเรื่องโทรศัพท์เอง แต่มีความเป็นไปได้สูงที่ Ellen ผู้ช่วยของผมจะจองตั๋วขากลับให้คุณคืนนี้เลย คุณเข้าใจที่ผมพูดไหม?”
“คุณต้องการให้ผมจงใจพลาดเที่ยวบินเหรอครับ” เขาย้ำ
“ใช่ครับ”
“แล้วผมจะบอก Dick กับ Sarah ว่ายังไงดีล่ะครับ?” เขาถามอย่างไม่มั่นใจ
ผมหยุดคิดครู่หนึ่ง “บอกพวกเขาว่าผมต้องการตัวคุณด่วนสำหรับเหตุฉุกเฉิน และเดี๋ยวคุณจะตามไปสมทบกับพวกเขาเอง”
“โอเคครับ...” เขาพูด “นี่มันเกิดอะไรขึ้นกันแน่เนี่ย?”
“มันง่ายมาก Brent” ผมอธิบาย “Unicorn คือความหวังสุดท้ายที่เราจะทำตัวเลขให้ได้ตามเป้าไตรมาสนี้ ถ้าพลาดเป้าอีกแค่ไตรมาสเดียว บอร์ดบริหารต้องแยกบริษัทแน่ๆ และเมื่อถึงตอนนั้นคุณค่อยไปช่วยทีมเฉพาะกิจนั่นก็ได้ แต่ถ้าเราทำได้ตามเป้า เรายังมีโอกาสที่จะรักษาบริษัทนี้ไว้ด้วยกัน นั่นคือเหตุผลที่ Unicorn คือลำดับความสำคัญสูงสุดของเรา Steve พูดเรื่องนี้ชัดเจนมาก”
Brent พูดแบบไม่ค่อยเชื่อหูนก “โอเคครับ แค่บอกมาว่าต้องไปที่ไหน แล้วผมจะไปที่นั่น ผมจะทิ้งให้คุณไปเถียงกับพวกผู้บริหารระดับสูงเอาเองแล้วกัน” เห็นได้ชัดว่าเขาหงุดหงิดกับคำสั่งที่ขัดแย้งกันที่ส่งไปถึงเขา
แต่เขาคงไม่หงุดหงิดเท่าผมหรอก
ผมโทรหา Stacy ผู้ช่วยของ Steve และบอกเธอว่าผมกำลังจะเข้าไปหา
ระหว่างการเดินทาง ไปที่อาคาร 2 เพื่อตามหา Steve ผมก็โทรหา Wes
“คุณทำอะไรลงไปนะ?” เขาหัวเราะก๊าก “เยี่ยมไปเลย ตอนนี้คุณกำลังอยู่ท่ามกลางศึกการเมืองที่มี Steve อยู่ฝั่งหนึ่ง และ Dick กับ Sarah อยู่อีกฝั่งหนึ่ง และพูดตรงๆ นะ ผมไม่แน่ใจว่าคุณเลือกอยู่ฝั่งที่ชนะหรือเปล่า”
หลังจากเงียบไปครู่หนึ่ง เขาก็ถามต่อว่า “คุณคิดจริงๆ เหรอว่า Steve จะหนุนหลังเราในเรื่องนี้?”
ผมกลั้นใจถอนหายใจ “ผมหวังว่าอย่างนั้นนะ ถ้าเราไม่ได้ Brent กลับมาทำงานเต็มเวลา Unicorn จมแน่ และนั่นอาจหมายความว่าเราจะได้ซีอีโอคนใหม่ ถูกเอาท์ซอร์ส และต้องมานั่งหาวิธีแยกบริษัทกันต่อไป นั่นฟังดูเป็นงานที่สนุกสำหรับคุณไหมล่ะ?”
ผมวางสายแล้วเดินเข้าไปในห้องทำงานของ Steve เขายิ้มอย่างอ่อนแรงและทักทายว่า “อรุณสวัสดิ์ Stacy บอกว่าคุณมีข่าวร้ายมาบอกผมเหรอ”
ในขณะที่ผมเล่าสิ่งที่ได้รับรู้จากการคุยโทรศัพท์กับ Brent ผมก็ต้องแปลกใจที่เห็นใบหน้าของเขาเปลี่ยนเป็นสีแดงก่ำ ผมนึกว่าเขาจะรู้เรื่องทั้งหมดนี้แล้วเสียอีก ในฐานะที่เป็นซีอีโอ
แต่ชัดเจนว่าเขาไม่รู้
หลังจากนิ่งไปครู่หนึ่ง ในที่สุดเขาก็พูดว่า “บอร์ดบริหารยืนยันกับผมแล้วว่าจะยังไม่ดำเนินการเรื่องแยกบริษัทต่อ จนกว่าเราจะเห็นผลลัพธ์ของไตรมาสนี้ ผมเดาว่าพวกเขาคงจะหมดความอดทนแล้วล่ะ”
เขากล่าวต่อ “งั้นบอกผมทีว่าถ้า Brent ถูกโยกย้ายไป จะส่งผลกระทบต่อ Unicorn ยังไงบ้าง”
“ผมคุยกับ Chris, Wes และ Patty แล้วครับ” ผมตอบ “โปรเจกต์ Unicorn จะจมไม่เป็นท่าแน่นอน โดยธรรมชาติผมเป็นคนขี้ระแวงนะครับ แต่ผมเชื่อจริงๆ ว่า Unicorn จะได้ผลแน่ๆ ในเมื่อวันขอบคุณพระเจ้าเหลือเวลาอีกแค่สองสัปดาห์ Brent คือหัวใจสำคัญในการสร้างขีดความสามารถที่เราต้องการ และขอบอกอีกอย่างนะครับ นวัตกรรมหลายอย่างที่เราค้นพบเริ่มถูกนำไปเลียนแบบโดยทีม Phoenix แล้ว ซึ่งมันยอดเยี่ยมมากครับ”
ผมพูดย้ำประเด็นของผมเป็นครั้งสุดท้าย “ถ้าไม่มี Brent เราจะไม่สามารถบรรลุเป้าหมายยอดขายและกำไรที่เราผูกไว้กับ Unicorn ได้เลย ไม่มีทางครับ”
Steve เม้มปากแล้วถามว่า “แล้วถ้าคุณเอาคนอื่นที่เก่งที่สุดรองลงมามาแทนที่ Brent ล่ะ จะเกิดอะไรขึ้น?”
ผมถ่ายทอดสิ่งที่ Wes บอกผม ซึ่งก็ตรงกับที่ผมคิดเหมือนกัน “Brent มีเอกลักษณ์เฉพาะตัวมากครับ Unicorn ต้องการคนที่เป็นที่ยอมรับของพวก Developer มีประสบการณ์ลึกซึ้งกับโครงสร้างพื้นฐานไอทีเกือบทุกประเภทที่เรามี และสามารถอธิบายสิ่งที่พวก Developer ต้องสร้างเพื่อให้เราสามารถจัดการและรันระบบใน Production ได้จริงๆ ทักษะพวกนี้หาได้ยากมาก และเราไม่มีใครคนอื่นที่สามารถเข้ามารับบทบาทพิเศษนี้ได้ในตอนนี้ครับ”
“แล้วถ้าคุณส่งคนอื่นที่เก่งที่สุดของคุณไปให้ทีมเฉพาะกิจของ Dick แทนล่ะ?” เขาถาม
“ผมเดาว่าการวางแผนแยกบริษัทอาจจะไม่แม่นยำเท่าไหร่ แต่ก็น่าจะทำเสร็จได้ตามปกติครับ” ผมตอบ
Steve เอนหลังพิงเก้าอี้ ไม่พูดอะไรเลยสักคำ
ในที่สุดเขาก็พูดว่า “ไปพาตัว Brent กลับมาที่นี่ เดี๋ยวที่เหลือผมจัดการเอง”