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