Tuesday, August 01, 2006

Programming by Coincidence

เห็นที่ bact' comment ไว้ใน Prototype กับ Legacy javascript project
ก็เลยนึกถึงประโยคนี้ "Programming by Coincidence"
(อ่านเจอในหนังสือ The Pragmatic Programmer)

Style วิธีการเขียนแบบนี้ เป็นแบบที่่ผมใช้มาตลอดชีวิตเลยก็ว่าได้
นั่นคือ ทดลองเขียน, run ดูผลลัพท์, ปรับแต่งแล้ว run ใหม่
ถ้า run ได้ก็จบ ถัายังไม่ได้ ก็เข้าวงจรเดิม คือทดลองใส่ไอ้นั่นหรือไอ้นู่นเข้าไป
loop อย่างนี้ไปเรื่อยๆ จนกว่าจะทำงานได้

ปัญหาก็คือ บางทีเราไม่รู้ว่า ทำไมมันถึง run ได้
อันนี้เป็นที่มาของคำว่า Coincidence (บังเอิญ, ประจวบเหมาะ)
ที่แย่กว่านั้น ก็คือด้วยความเร่งรีบ หรือความชุ่ยก็แล้วแต่
แทนที่จะทำความเข้าใจว่าทำไมมันถึงทำงานได้
กลับถือโอกาสข้ามมันไปเสีย
ที่สนุกกว่านั้น ก็คือคนใหม่ๆที่ตามมา เห็นพี่ๆเขียนอย่างนั้น
ก็ลอกๆกันต่อ

มาช่วงนี้ ผมมีงานที่ต้อง port โปรแกรมเก่า ขึ้นมาสู่ technology ใหม่
ทำให้ได้มีโอกาสกลับไปนั่งแกะโปรแกรมที่ตัวเองและน้องๆเขียนไว้เมื่อ 7-8 ปีก่อน,
คราวนี้แหล่ะเห็นชัดเลย
"programming by coincidence" เต็มๆ
บอกได้คำเดียวว่า "น่ากลัวมาก"

ปล. ว่าจะเอาพวก JML มาแก้ทางพวกน้องๆที่บริษัทฯ
ที่มีแนวไปในทาง Programming by Coincidence

Related link from Roti

No comments: