ในหนังสือThe Pragmatic Programmerผู้เขียนพูดถึงการเขียนโปรแกรมด้วยแนวคิดเรื่องบังเอิญ มันอธิบายว่ามันคืออะไรทำไมมันเกิดขึ้นอะไรคืออันตรายที่คุณอาจพบและเปรียบเทียบกับสนามระเบิดในสงคราม
คุณเคยดูหนังสงครามขาวดำบ้างไหม? ทหารที่เหนื่อยล้าจะเลื่อนออกจากแปรงอย่างระมัดระวัง มีการล้างล่วงหน้า: มีเหมืองที่ดินหรือไม่ปลอดภัยหรือไม่ ไม่มีข้อบ่งชี้ใด ๆ ว่ามันเป็นเขตที่วางทุ่นระเบิด - ไม่มีสัญญาณลวดหนามหรือหลุมอุกกาบาต ทหารโผล่หน้าดินของเขาด้วยดาบปลายปืนและการชนะของเขาคาดว่าจะเกิดการระเบิด ไม่มีเลย ดังนั้นเขาจึงพยายามที่จะผ่านสนามไปครู่หนึ่งอย่างกระทันหันและกระทุ้งเมื่อเขาไป ในที่สุดเชื่อว่าสนามนั้นปลอดภัยเขาเดินตรงไปข้างหน้าและเดินไปข้างหน้าอย่างภาคภูมิใจเพียงเพื่อถูกเป่าเป็นชิ้น ๆ
โพรบเริ่มต้นของทหารสำหรับการทำเหมืองไม่ได้เปิดเผยอะไร แต่นี่เป็นเพียงโชคดี เขาถูกนำไปสู่ข้อสรุปที่ผิด ๆ - ด้วยผลลัพธ์ที่หายนะ
ในฐานะนักพัฒนาเรายังทำงานในทุ่นระเบิด มีกับดักนับร้อยรอให้เรามาจับในแต่ละวัน การระลึกถึงเรื่องราวของทหารเราควรระวังในการเขียนข้อสรุปที่ผิดพลาด เราควรหลีกเลี่ยงการเขียนโปรแกรมโดยบังเอิญ - อาศัยโชคและความสำเร็จโดยไม่ตั้งใจ - เพื่อสนับสนุนการเขียนโปรแกรมโดยเจตนา ...
แต่ฉันไม่พอใจกับวิธีที่พวกเขาอธิบายถึงปัญหา "วิธีเอาชนะ" ใช่คุณต้องคิดล่วงหน้าก่อนที่จะเขียนรหัส แต่วิธีการปฏิบัตินั้น สิ่งเดียวที่ฉันคิดได้ก็คือการเพิ่มคุณสมบัติให้กับโครงการโอเพ่นซอร์สที่มีอยู่ซึ่งคุณต้องมีความรู้ทั้งใน "สิ่งที่ฉันทำอยู่ตอนนี้" และ "วิธีการทำงานของโค้ดอื่น ๆ " และมันไม่สามารถใช้ได้ เมื่อคุณเขียนโครงการของคุณเอง
แก้ไข:
สรุปจากโพสต์ของคุณ:
- อย่าเดาว่าคุณจะเดินต่อไปพิสูจน์ว่าถูกต้อง
- ทดสอบหน่วยและ refactor มากที่สุดเท่าที่เป็นไปได้เมื่อจำเป็น
- เพิ่มคุณสมบัติ - รวบรวม - ทดสอบบ่อย
- หากคุณไม่สามารถอธิบายโค้ดให้กับ noob ได้คุณอาจจะเขียนโปรแกรมโดยบังเอิญ
BTW มันยากที่จะยอมรับคำตอบมันยากจริงๆ คำตอบทั้งหมดนั้นยอดเยี่ยมจริงๆ :)