ฉันได้รับมอบหมายให้สอน codebase ใหม่ให้กับทีมอื่น แต่ฉันก็ยังประสบปัญหาอยู่ เมื่อใดก็ตามที่ฉันไปจริงเดินผ่านรหัสกับคนที่เราไม่ได้ไกลมากก่อนที่จะออกกำลังกายทั้ง devolves เป็นbikeshedding (สมาชิกขององค์กรที่ให้น้ำหนักสัดส่วนกับปัญหาเล็ก ๆ น้อย ๆ ) การออกกำลังกาย เนื่องจากพวกเขาไม่รู้จัก codebase แต่คิดว่าพวกเขาต้องการช่วยปรับปรุงพวกเขาจึงมุ่งเน้นไปที่สิ่งที่พวกเขาสามารถเข้าใจได้:
Why is that named that?
(2 นาทีเพื่ออธิบายสาเหตุที่ตั้งชื่อนั้นใหม่ 10 นาทีอภิปรายชื่อใหม่)
Why is that an abstract base class rather than an interface?
(เพื่ออธิบาย 2 นาที, 10+ นาทีอภิปรายถึงข้อดีของการตัดสินใจนี้)
... และต่อไป ตอนนี้ไม่ได้รับฉันผิด - ชื่อที่ดีและดีการออกแบบที่สอดคล้องกันมีความสำคัญ แต่เราไม่เคยได้พูดคุยเกี่ยวกับสิ่งที่รหัสจริงไม่หรือวิธีการที่ระบบการออกแบบในลักษณะที่มีความหมายใด ๆ ฉันได้ทำผู้ตัดสินการประชุมเพื่อให้ผู้คนหลุดพ้นจากการเสียสละเหล่านี้ แต่พวกเขาหายไป - ถูกรบกวนด้วยรหัสที่ควรจะเป็นเมื่อสัตว์เลี้ยงของพวกเขาได้รับการแก้ไขเล็กน้อยและพวกเขาพลาดภาพใหญ่ขึ้น
ดังนั้นเราจึงลองอีกครั้งในภายหลัง (หรือส่วนอื่นของ codebase) และเนื่องจากผู้คนไม่ได้รับความรู้เพียงพอที่จะเอาชนะเอฟเฟกต์การปั่นจักรยาน
ฉันได้พยายามกลุ่มเล็กกลุ่มใหญ่รหัส whiteboarding ไดอะแกรม Visio กำแพงยักษ์ของข้อความให้พวกเขาเพียงแค่เถียงมันให้ตายตัดข้อโต้แย้งสั้นทันที ... บางช่วยให้มากกว่าคนอื่น ๆ แต่ไม่มีอะไรงาน นรกฉันยังลองให้คนอื่นจากทีมอธิบายเพราะฉันคิดว่าอาจเป็นเพราะฉันอธิบายสิ่งต่าง ๆ ไม่ดี
ดังนั้นคุณจะให้ความรู้แก่โปรแกรมเมอร์คนอื่น ๆ ได้อย่างไรว่าพวกเขาจะหยุดการแก้ไขสิ่งที่ไม่สำคัญและสามารถมีส่วนร่วมในการออกแบบได้อย่างมีความหมาย?