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