ผลลัพธ์สะท้อนกระบวนการ

สองสัปดาห์ก่อนมีโอกาสไปนั่งดู @weerasak สอน vim ที่ Geeky Base ตอนแรกว่าจะไปขอดูดวิชาแต่พบว่าข้างนอกออฟฟิสเสียงดังมากเพราะมีการก่อสร้างและปรับปรุงท่อน้ำของทางอาคาร พบว่ามีการขุดเจาะหนักมากเนื่องจากคอนกรีตที่ต้องเจาะเป็นบริเวณที่เป็นถนนหลักให้รถวิ่งเข้าออกและเป็นทางเท้าที่อยู่ติดตึก

12032238_10153026447132047_6296502543678409210_n

คงไม่ต้องอธิบายว่าเสียงดังขนาดไหน ผมเห็นเขาเจาะอยู่สองอาทิตย์เต็มๆผมคิดไปแล้วก็สงสารช่างที่มารับเหมานะคงเจาะพื้นจนกระดูกสันหลังคลอนหรือหูพังไปแล้ว สำหรับสาเหตุที่ต้องเจาะเยอะขนาดนั้นเพราะเขาต้องการความเรียบร้อยในการทำงานไม่อยากให้เดินท่อพาดไปพาดมาเหมือน กทม ดังนั้นสิ่งที่เจ้าของโครงการยอมคือจ่ายแพงเพื่อความเป็นระเบียบเรียบร้อยซึ่งอันนี้ผมขอชื่นชมครับ อย่างไรก็ตามงานี้สะท้อนออกมาชัดเจนเลยว่าโครงสร้างของโครงการนี้หนาแน่นมาก เหล็กไม่มีโอนทอน ปูนไม่มีลดส่วนผสม คือถ้าไม่มีการเปลี่ยนแปลงอะไรกับอาคารชุดนี้มันจะอยู่ได้อีกเป็นร้อยปี เพราะมันแข็งแรงทนทานมากอย่างไรก็ตามโลกนี้ไม่มีใครคาดเดาทุกสิ่งทุกอย่างล่วงหน้าได้เสมอปัญหาที่ทางอาคารเจอก็คือแทงค์พักน้ำไม่สามารถสำรองน้ำได้เพียงพอกับจำนวนคนที่เพิ่มขึ้นและท่อประปาที่ทำไว้ก็เล็กเกินไปทำให้เติมน้ำได้ช้า ทางตึกเลยต้องเดินท่อขึ้นไปใหม่และอย่างที่เห็นกันคือ cost มันสูงมากและเปลี่ยนยากมากเนื่องจากโครงสร้างสร้างไว้แน่นหนามากเพราะการคำนวณเผื่อไว้เป็นอย่างดีว่าถนนหรือทางเดินนั้นจะไม่มีทางทรุดเด็ดขาดดังนั้นมันเลยเป็นเรื่องยากมากที่จะไปเปลี่ยนอะไรตรงนั้น เขาเลยเรียกการสร้างแบบนี้ว่า “build for last”
กลับมาที่เรื่อง software อย่างที่รู้กันว่า software เป็นของที่เพิ่งเกิดมาบนโลกได้ไม่นานนัก คร่าวๆไม่น่าเกิน 60 ปีดังนั้นคนที่ทำงานอยู่ในแวดวงซอฟท์แวร์ยุคนี้เลยโชคดีมากที่ “ยังไม่รู้ว่า software นี่มันสร้างยังไง” ดังนั้นวิธีการยอดนิยมคือการไปลอกวิธีการเก่าๆที่เขาทำสำเร็จกันมาแล้วและไอ้ที่ใกล้ตัวที่สุดคือ “ก่อสร้าง” เพราะมันเป็นกระบวนการที่เห็นชัดๆอยู่แล้วว่า “สร้างเสร็จ” แน่นอนเราก็เลยไปลอกมาซะเต็มที่เลย และอย่างที่เราเห็นแล้วว่า final product ของกระบวนการแบบนี้มัน เปลี่ยนยาก ดังนั้นไอ้ software ที่เราสร้างด้วยกระบวนการแบบนี้มันก็เลย build for last ไปเหมือนตึกเลยกล่าวคือเมื่อมันสร้างเสร็จแล้วไม่ว่าลูกค้าจะพอใจหรือไม่สิ่งที่เขาต้องทำคือรับมันไปใช้และทนอยู่กับมันไปจนทนไม่ไหว เพราะการจะขอเปลี่ยนอะไรทีกับ software แบบนี้เป็นเรืองที่ยากมาก เราจะมีกระบวนการ estimate change ที่พิศดารมากเพราะสุดท้ายแล้วคนสร้างเองไม่แน่ใจว่าการแก้ไขอะไรนั้นจะส่งผลให้ของที่เคยทำงานได้เหมือนเดิม มันยังเหมือนเดิมหรือไม่เพราะ software เป็นของที่จับต้องไม่ได้เรามองด้วยตาเฉยๆเหมือนตึกไม่ได้ว่ามันยังดี ดังนั้นผลสุดท้ายเมื่อเราทนถึงจุดหนึ่งเราก็รื้อทำใหม่และเมื่อเราทำใหม่เราก็ทำด้วยกระบวนการเดิม ดังนั้นก็อย่างตกใจที่เราจะได้ “ขี้ก้อนใหม่ มาแทนก้อนเดิม” ดังนั้นเราก็จะวนเวียนอยู่ในวังวนนี้ไปเรื่อยๆจนสุดท้ายสิ่งเดียวที่เราทำได้คือ “ทน”
ดังนั้นสำหรับผมแล้ว software เราต้อง “build for change” กระบวนการที่นำมาสร้างของแบบนี้ก็ต้องเหมาะกับธรรมชาติของมันด้วยเราไม่สามารถเอากระบวนการสร้างของที่ “build for last” มาใช้กับมันได้หรอกครับ ดังนั้นก่อนจะเริ่มการทำ software development project ควรนั่งถามตัวเองให้ดีๆก่อนว่าเรากำลังทำอะไรอยู่ เราจะเอาแบบเดิมจริงๆใช่ไหม ตอนนี้ผมคงบอกได้อย่างเดียวว่าหลายๆบรฺษัทในโลกนี้ได้ค้นพบแล้วว่ากระบวนการแบบไหนที่เหมาะสมกับการสร้าง software ดังนั้นเลิกคิดว่าตัวเอง พิเศษและวิเศษ ได้แล้วลองออกไปมองโลกข้างนอกกันหน่อยไหมว่าเขาทำกันอย่างไรแล้วเอามาปรับใช้กับเราก่อนที่เราจะแพ้ชาวบ้านเขา

“การสร้าง software คือการสร้าง software การสร้าง software ไม่ใช่การสร้างตึก”

Comments

comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.