मुझे यकीन है कि अब तक आपने मेरी टिप्पणी और मेरे अन्य पोस्ट को देख लिया है, इसलिए मैं यह ढोंग नहीं करूंगा कि मुझे वास्तव में जवाब पता है। सबसे अच्छा मैं पेशकश कर सकता हूँ जो मैंने दूसरों से सुना / पढ़ा है और इस मिश्रण में अपना कुछ अनुभव जोड़ रहा हूं।
सबसे पहले, मैं कहना चाहता हूं कि कुछ समय पहले मैं एक ब्लॉग पर आया था, जो हमारे अपने प्रोग्रामर एसई सदस्यों, मार्टिन ब्लोर और आईएमओ में से एक है और टीडीडी के आत्म-साक्षात्कार के बारे में यह एक विशिष्ट पोस्ट बहुत सटीक है। टीडीडी अंतिम, उच्चतम स्तर है जो सब कुछ एक साथ जोड़ता है लेकिन पिछले स्तरों के बिना, विशेष रूप से सबसे बड़ा एक, सिद्धांत और स्पष्ट और पठनीय कोड के निर्माण के तरीके, टीडीडी काम करना असंभव नहीं है, तो यह बहुत मुश्किल होगा।
मेरी कंपनी में, एजिल और टीडीडी दोनों को प्रबंधन द्वारा हम पर थोपा गया था, और सबसे पहले हमने बस उन्हें किया क्योंकि हमें बताया गया था (जो चुस्त के विपरीत है)। हमने दो बार टीडीडी की कोशिश की है और जब तक मैं स्वचालित परीक्षणों का उपयोग करने का एक बड़ा प्रस्तावक हूं, मैंने व्यक्तिगत रूप से उन सभी को बाहर निकाल दिया है जिन्हें टीम ने पिछले रिलीज में एक साथ थप्पड़ मारा था। वे नाजुक, विशाल, कॉपी / वजू को चिपकाए हुए थे और नींद के बयानों से परेशान थे जिसने उन्हें वास्तव में धीरे-धीरे और अप्रत्याशित रूप से चलाया। आपकी टीम के लिए मेरी सलाह: TDD मत करो ... अभी तक।
मुझे नहीं पता कि आपकी स्थिति क्या है क्योंकि आपने उल्लेख किया है कि आप केवल 6 महीने के लिए कंपनी के साथ हैं और आप एक ठेकेदार हैं। क्या इस कंपनी के साथ रहने के लिए आपके दीर्घकालिक लक्ष्य हैं या क्या अनुबंध समाप्त होने वाला है? मैं पूछ रहा हूं क्योंकि अगर आप कुछ करते हैं, तो वास्तव में परिणाम देखने में काफी समय लग सकता है।
जब आप किसी टीम में शामिल होते हैं, तो आमतौर पर आपकी टीम की विश्वसनीयता और सम्मान पाने से पहले समय लगता है, जहां वे (डेवलपर्स और प्रबंधन) किसी भी चीज़ पर विचार करेंगे, जिसे आप प्रस्तावित करते हैं। मेरे अनुभव में, यह मदद करता है अगर आप कुछ आग लगाते हैं और प्रदर्शित करते हैं कि आपके पास कौशल और ज्ञान है जो दूसरों पर निर्भर कर सकते हैं। 6 महीने के लिए पर्याप्त नहीं है। अक्सर एक नया, महत्वाकांक्षी व्यक्ति टीम में शामिल होता है, तो यहां एक पोस्ट करें और पूछें कि वे दुनिया को कैसे बदल सकते हैं। दुख की बात यह है कि वे बस नहीं कर सकते।
इसलिए यह मानते हुए कि आपकी टीम का सम्मान और ध्यान है। अब क्या?
सबसे पहले, प्रबंधन और डेवलपर्स दोनों को जागरूक होने की आवश्यकता है कि कोई समस्या है। प्रबंधन ने दिए गए कार्य के संदर्भ में परिणामों को मापता है। यदि वे वर्तमान मात्रा और सुविधाओं की गुणवत्ता से खुश हैं, तो दुखद वास्तविकता यह है कि वे सुनेंगे नहीं। जैसा कि अन्य ने बताया है, प्रबंधन के समर्थन के बिना, किसी भी प्रकार के परिवर्तन को प्रस्तुत करना बेहद कठिन होगा।
एक बार जब आपको प्रबंधन का समर्थन मिल जाता है, तो अगला कदम गहरी खुदाई करना होता है और इसके मूल कारणों की पहचान करना होता है कि टीम जिस तरह से काम करती है, उसका संचालन क्यों करती है। यह अगला विषय कुछ ऐसा है जो अब थोड़ी देर की मेरी व्यक्तिगत खोज है। अब तक यह मेरी यात्रा रही है:
- एक बार आपके पास प्रबंधन का समर्थन है। आप मुख्य रूप से निर्धारित अभ्यास / प्रक्रिया शुरू कर सकते हैं जो मेनमा ने मेरे सवाल के जवाब में सुझाई थी । हमने उनमें से बहुत कुछ किया है (युग्मित प्रोग्रामिंग को छोड़कर) और आप निश्चित रूप से लाभ देखते हैं। विशेष रूप से स्टाइल, डॉक्यूमेंटेशन को मानकीकृत करने में कोड समीक्षाओं ने मदद की और हमें टीम के बीच साझा ज्ञान / तकनीकों की भी अनुमति दी। हालांकि, कोड समीक्षा तय की गई थी, टीम वास्तव में उन्हें पसंद करती है और हम कार्यक्षमता के प्रत्येक टुकड़े की समीक्षा करते हैं, जिसमें जांच की जाती है। हालांकि ...
- आप ध्यान दें कि आमतौर पर लिखा गया कोड अभी भी बहुत युग्मित है, डिजाइन खराब है या पूरी तरह से अभाव है। कोड समीक्षाएं इसमें से कुछ को पकड़ती हैं, लेकिन केवल इतना है कि आप फिर से लिख सकते हैं। पहली जगह में डिजाइन खराब क्यों है? - बहुत सारे डेवलपर्स को कभी भी अच्छी प्रथाओं के लिए पेश नहीं किया गया था और उन्हें औपचारिक रूप से पहली बार OOD नहीं सिखाया गया था। बहुत सारे लोग "बस कोडित" जो भी कार्य उन्हें दिया गया था।
- प्रबंधन के समर्थन से आप अधिक प्रक्रिया शुरू कर सकते हैं, जैसे किसी भी कोडिंग से पहले डिजाइन पर चर्चा करना। लेकिन आप केवल एक ही व्यक्ति हैं और ऐसा लगता है कि जैसे ही आप ध्यान नहीं देते हैं टीम वापस लौट जाती है जो उन्होंने हमेशा किया है। क्यों?
- क्या बेहतर प्रथाओं या आदतों को पेश किया जा सकता है और सिखाया जा सकता है ताकि आपको लगातार निगरानी न करनी पड़े? - यह हिस्सा इतना आसान नहीं है।
- अन्य टीम के सदस्य नई प्रथाओं को सीखने और लेने के लिए अनिच्छुक क्यों हैं और वे SOLID या DRY के लिए इतने प्रतिरोधी क्यों हैं जब इसे आधुनिक सॉफ्टवेयर पद्धति साहित्य में बहुत कुछ लिखा गया है? अपनी टीम में हमारे द्वारा किए गए सभी सकारात्मक परिवर्तनों के साथ, 2 सप्ताह पहले मेरे पास एक तर्क था कि मैं 2 कार्यों को रद्द कर दिया था जिसमें समान 15 लाइनें थीं और समीक्षक ने इसे वीर, अनावश्यक प्रयास कहा क्योंकि केवल कॉपी / पेस्ट के साथ कुछ भी गलत नहीं है 15 लाइनें। मैं इस तरह के विचारों से बहुत असहमत हूं, लेकिन अब हम असहमत होने के लिए सहमत हो गए हैं। -- तो अब क्या? अब हम अपने अन्य पोस्ट के विषय पर पहुँच गए हैं ।
- जैसा कि मेपल_शाफ्ट और निक्की ने अपने जवाबों में बताया (क्षमा करें, मेनमा , आपको सबसे अधिक वोट मिले, लेकिन आप :) से 5 कदम पीछे हैं), आप एक ऐसे चरण में पहुंच गए हैं जहां "प्रक्रिया" अब आपकी मदद नहीं कर सकती है और इस मंच पर कोई भी नहीं आपको बता सकता है कि "फिक्स" क्या है। अगला कदम व्यक्तियों से संपर्क करना है, शायद एक-पर-एक, एक टीम के रूप में, शायद एक समय या किसी अन्य पर और उनसे बात करना। उनसे पूछें, क्या काम करता है और क्या नहीं। उनके द्वारा चलाए जा रहे कार्यों के मूल कारणों की पहचान करने का एकमात्र तरीका अब व्यक्तिगत रूप से उनसे बात करना और यह पता लगाना है। इस कदम के हिस्से के रूप में, मैं हाल ही में एक पूरी तरह से अलग टीम समस्या पर आया था, लेकिन मुझे लगता है कि यहां जोएल का जवाब है, जो बहुत विस्तृत और व्यावहारिक है, इस मामले पर भी लागू होगा। संक्षेप में, "शॉर्ट लीश" के रूप में प्रबंधन का उपयोग करते हुए, किसी भी चीज़ के बारे में एक संभव दृष्टिकोण है, हमें यह याद रखना होगा कि हम मनुष्यों के साथ व्यवहार कर रहे हैं ताकि वास्तव में प्रेरणाओं को समझ सकें, हमें शुद्ध प्रबंधन या तकनीकी नेतृत्व की तुलना में मनोविश्लेषण में अधिक पार करना होगा।
- तो अब आप अपने साथियों से बात कर रहे हैं? आप उनसे क्या पूछते हैं? मैं इस अगले भाग के बारे में निश्चित नहीं हूँ क्योंकि मैं यहाँ कभी नहीं रहा हूँ। यहाँ एक संभावित परिदृश्य है: Q: कैसे कोई ठोस नहीं आता है? A: मुझे इसकी आवश्यकता नहीं है। क्यू: यह मदद कर सकता है। एक: मैं ठीक है के रूप में है। - किसी तरह आपको ध्वनियों की एक श्रृंखला उत्पन्न करने की आवश्यकता होती है जो आपके मुंह को छोड़ देगी और श्रोता को पहचानने का कारण बनेगी कि चीजें बेहतर हो सकती हैं यदि वे जो भी मौका दे रहे हैं, उसे दें। यदि आप यहां असफल होते हैं, तो उन्हें कभी भी यह विश्वास नहीं होगा कि जो भी "प्रक्रिया" उन्हें वास्तव में कोई मूल्य देती है। दूसरी ओर यदि आप इस बिंदु को पा लेते हैं, तो आप शायद पाएंगे कि आपको "प्रक्रिया" की भी आवश्यकता नहीं है।
- बहुत मूल पर IMO, आपके टीम के साथी नहीं सीखेंगे कि उन्हें अपनी मौजूदा आदतों / प्रथाओं में कुछ भी गलत नहीं दिखता है। तो हो सकता है कि इस सब में अगला कदम समस्याओं को उजागर करने, उन्हें स्पष्ट करने और उन्हें स्पष्ट करने का तरीका खोजना हो। आखिरकार, हम SOLID / DRY सिद्धांतों का उपयोग करते हुए या दस्तावेज़ीकरण बनाए रखने के लिए केवल पठनीय कोड नहीं लिख रहे हैं क्योंकि यह हमें एक गर्म और गूढ़ एहसास देता है। हम इसे करते हैं क्योंकि यह बेहतर गुणवत्ता कोड का उत्पादन करता है और स्पष्ट रूप से हमें कोड को तेज बनाता है। क्या इसे मापा जा सकता है? शायद यह वह जगह है जहाँ सॉफ्टवेयर मेट्रिक्स में आते हैं?
- यहां एक पागल विचार है और मुझे नहीं पता है कि क्या यह वास्तव में काम करेगा (यह एक मानक उद्योग अभ्यास हो सकता है, या यह शायद पूरी तरह से अमान्य है। मैंने इसे पिछले 24 घंटों में बनाया है), लेकिन मैं इसे लाने के लिए बहुत लुभावना हूं। अगले साल के शुरू होते ही टेबल पर:
- कई अन्य लोगों की राय के खिलाफ , सभी स्रोत फ़ाइलों के लिए लेखक / स्वामी के विचार का परिचय दें। जैसा कि द प्रोगैमैटिक प्रोग्रामर सुझाव देता है कि यह एकल व्यक्ति को स्वामित्व और जिम्मेदारी की भावना देगा जो स्रोत कोड के एक टुकड़े के लिए जिम्मेदार होगा। इसका मतलब यह नहीं है कि अन्य लोग कोड को संशोधित नहीं कर सकते हैं, हम सभी एक टीम के रूप में काम कर रहे हैं, लेकिन दिन के अंत में, कोड का मालिक व्यक्ति उस बदलाव की समीक्षा करने के लिए जिम्मेदार है।
- एक स्रोत रिपॉजिटरी ट्रिगर बनाएं जो सभी चेक-इन पर नज़र रखता है और विशेष रूप से उन लोगों के लिए दिखता है जो बग फिक्स हैं। इसे एक प्रक्रिया बनाएं ताकि प्रत्येक बग फिक्स में चेक-इन विवरण में एक संदर्भ पहचानकर्ता ठीक सामने हो। अब एक स्क्रिप्ट लिखें जो बदल गई फ़ाइलों की सूची को पार्स करेगी और फ़ाइल हेडर कमेंट ब्लॉक से "ऑथर" को हटा देगी। एक SQL डेटाबेस बनाएँ जो प्रत्येक फ़ाइल / प्रति प्रोजेक्ट / प्रति लेखक में जाँचे गए दोषों के # ट्रैक करेगा।
- एक बार जब आपके पास पर्याप्त आंकड़े होंगे, तो उम्मीद है कि आप देखेंगे कि आपके कोड में कुछ अन्य कोड की तुलना में कम दोष / परिवर्तन हैं। यह कठिन डेटा है जिसका आप उपयोग कर सकते हैं। यदि किसी एकल परियोजना में औसत दोष दर से काफी ऊपर है, तो इसे कुछ तकनीकी ऋण का भुगतान करने के लिए अगले क्लीन-अप / रीफैक्टरिंग प्रयास के लिए एक उम्मीदवार के रूप में लाएं।
- यदि कोई प्रोजेक्ट या फ़ाइल औसत दोष दर से काफी ऊपर है और इसका एक मालिक है, तो उस व्यक्ति के साथ एक-एक बात करें। उनसे पूछें, बहुत विनम्रता से, गैर-टकराव से कि वे इसे संबोधित करने के लिए क्या कर सकते हैं। चूँकि वे मालिक हैं, उन्हें परिवर्तन को चलाना चाहिए, लेकिन अपनी ओर से कोई भी और सभी मदद की पेशकश करें। उम्मीद है, मालिक अपने स्वयं के स्पेगेटी कोड के लिए बहुत सारे कारणों का पता लगाएगा और जैसे ही वे मदद मांगेंगे, वह तब होगा जब आप कार्रवाई में बहेंगे और कुछ ठोस उपाय करेंगे।