मुझे अन्य टीमों को एक नया कोडबेस सिखाने का काम सौंपा गया है, लेकिन मैं एक मुद्दे पर चलता रहता हूं। जब भी मैं वास्तव में लोगों के साथ कोड के माध्यम से चलता हूं, तो हम बहुत दूर नहीं निकलते हैं इससे पहले कि पूरी कसरत एक बिकेशिंग (संगठन के सदस्यों को तुच्छ मुद्दों के लिए वजन कम करने वाले) व्यायाम में भटकती है। चूंकि वे कोडबेस को नहीं जानते हैं, लेकिन सोचते हैं कि उन्हें इसे बेहतर बनाने में मदद करने की जरूरत है, वे उन चीजों पर ध्यान केंद्रित करते हैं जिन्हें वे समझ सकते हैं:
Why is that named that?
(यह बताने के लिए 2 मिनट कि इसका नाम क्यों रखा गया है, 10+ मिनट एक नए नाम पर बहस करते हुए)
Why is that an abstract base class rather than an interface?
(समझाने के 2 मिनट, 10+ मिनट इस निर्णय के सापेक्ष गुणों पर बहस करते हुए)
...और इसी तरह। अब, मुझे गलत मत समझो - अच्छे नाम और अच्छे, सुसंगत डिजाइन महत्वपूर्ण हैं, लेकिन हमें यह चर्चा करने के लिए कभी नहीं मिलता है कि कोड वास्तव में क्या करता है या सिस्टम किसी भी सार्थक तरीके से कैसे डिज़ाइन किया गया है। मैंने लोगों को इन स्पर्शरेखाओं से बाहर निकालने के लिए कुछ मीटिंग रेफरी की है, लेकिन वे चले गए हैं - कोड क्या / क्या होगा जब उनके पालतू तुच्छता तय हो गई है, और वे बड़ी तस्वीर को याद करते हैं।
इसलिए हम बाद में (या कोडबेस के एक अलग हिस्से के साथ) फिर से कोशिश करते हैं और चूंकि लोगों को बिकेशिंग प्रभाव को दूर करने के लिए पर्याप्त ज्ञान नहीं मिला, इसलिए यह दोहराता है।
मैंने छोटे समूहों, बड़े समूहों, कोड, व्हाइटबोर्डिंग, विज़ियो आरेख, पाठ की विशाल दीवारों की कोशिश की है, जिससे उन्हें सिर्फ मौत की दलील दी जा रही है, तर्क को तुरंत काट दिया ... कुछ दूसरों की तुलना में अधिक मदद करते हैं, लेकिन कुछ भी काम नहीं करता है । नरक, मैंने अपनी टीम के अन्य लोगों को भी समझाने की कोशिश की क्योंकि मुझे लगा कि यह हो सकता है कि मैं चीजों को समझाने में बुरा हूं।
तो आप अन्य प्रोग्रामरों को पर्याप्त रूप से कैसे शिक्षित करते हैं कि वे तुच्छताओं को ठीक करना बंद कर दें और डिजाइन में सार्थक योगदान दे सकें?