मैं आपको मेरे व्यक्तिगत अनुभव द्वारा समर्थित कुछ संकेत देने की कोशिश करूंगा।
मेरे एक साथी, हालांकि अनुभवी, वास्तव में एसवीएन को नहीं समझते हैं। स्वाभाविक रूप से, एसवीएन के महासागरों को दर्शाते हुए उसके मानसिक मानचित्र पर रिक्त क्षेत्रों के कारण उसे अजीब उपयोग पैटर्न अपनाने का कारण बनता है।
उदाहरण के लिए, उन्होंने "प्रति डेवलपर प्रति दिन 1 एसवीएन कमिट" की नीति घोषित की थी, क्योंकि अन्यथा "सर्वर जल्द ही डिस्क स्थान से बाहर चला जाएगा"। जब मैंने उन्हें समझाया कि एसवीएन में देरी होती है, पूरी प्रतियां नहीं, तो उन्होंने संदेह के साथ जवाब दिया और आज भी मुझे पूरी तरह से यकीन नहीं है कि अगर वह इसका मतलब समझते हैं।
यहां तक कि अगर डिस्क स्थान एक मुद्दा था, तो आप हमेशा एक ही बार में बहुत सारी फाइलें कर सकते हैं, इसलिए मुझे लगता है कि वह जो सुझाव देता है वह गलत समाधान है। इसके अलावा, बड़ी बाइनरी फ़ाइलों की जाँच करके बहुत सी जगह को बर्बाद करना संभव है क्योंकि एसवीएन बाइनरी फ़ाइलों के लिए डेल्टास को स्टोर नहीं करता है। प्रति दिन एक चेक-इन भी खराब है क्योंकि यह आपको उन परिवर्तनों को करने के लिए मजबूर करता है जो एक साथ नहीं होते हैं, उदाहरण के लिए यदि आप प्रति दिन एक से अधिक बग ठीक करते हैं।
हमने अपनी कंपनी में जो समाधान अपनाया है, वह यह है कि बाइनरी फ़ाइलों वाली किसी भी प्रतिबद्धता को अस्वीकार करने वाला एक फ़िल्टर है। हम चेक-इन टिप्पणी में एक विशेष कीवर्ड का उपयोग करके प्रतिबद्ध कर सकते हैं (हमें एसवीएन दिखाना होगा कि हम जानते हैं कि हम क्या कर रहे हैं)। एक वर्ष में एक या दो बार एक परियोजना प्रबंधक पुरानी शाखाओं को संग्रहीत करता है और उन्हें भंडार से निकालता है। इस रणनीति के साथ हमारे पास अंतरिक्ष समस्याएं नहीं हैं जिनके बारे में मुझे पता है (हमारी रिपॉजिटरी कई अलग-अलग परियोजनाओं का समर्थन करती है और 100000 से अधिक संशोधन हैं)।
संक्षेप में, आप उसे बता सकते हैं कि आप उससे सहमत हैं कि डिस्क स्थान एक महत्वपूर्ण मुद्दा है, लेकिन दूसरी ओर, इंगित करें
- एक अखंड दैनिक चेक के बजाय सुविधा-संबंधित चेक-इन का महत्व;
- तथ्य यह है कि प्रति दिन एक बड़ी बाइनरी फ़ाइल में जाँच करके, कोई भी डिस्क को भर सकता है।
तब आप सुझाव दे सकते हैं कि डिस्क स्थान उपयोग को नियंत्रण में रखने के लिए रणनीतियों (जैसे बाइनरी-फ़ाइल फ़िल्टर, नियमित बैकअप और पुरानी अप्रयुक्त शाखाओं की सफाई) के लिए रणनीति पर चर्चा करने के लिए आपके पास एक बैठक (संभवतः अन्य डेवलपर्स या सिस्टम प्रशासक के साथ भी) हो सकती है।
हमारे पास इस बारे में एक गर्म तर्क भी था कि एसवीएन में ग्रहण .प्रोजेक्ट कॉन्फ़िगरेशन को शामिल करना है या नहीं। मेरी टीम के साथी ने जोर देकर कहा, हालांकि इसने कई व्यर्थ संघर्ष किए हैं। मैं SVN में व्यक्तिगत डेवलपर कॉन्फ़िगरेशन फ़ाइलों को रखने के खिलाफ था। अंत में, यह पता चला कि मेरी टीम के साथी ने पूरे स्रोत के पेड़ को फिर से जाँचने का अभ्यास किया था, ताकि यह सुनिश्चित हो सके कि "रिपॉजिटरी कार्यों में प्रतिबद्ध कोड"। यही कारण था कि वह एसवीएन में प्रोजेक्ट कॉन्फ़िगरेशन को ध्यान में रखते हुए इतना अडिग था - इसलिए प्रोजेक्ट को फिर से इम्पोर्ट करना आसान होगा। जब मैंने समझाया कि प्रतिबद्ध कार्य प्रतिलिपि को दूरस्थ बाइट-बाय-बाइट से सिंक्रनाइज़ करता है जो पुन: चेकआउट को अनावश्यक बनाता है, तो मेरी टीम के साथी ने फिर से संदेह के साथ जवाब दिया और अंततः पूरे मामले को महत्वहीन बताया।
मेरी राय में, हमारी टीम प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइलों में एसवीएन संघर्षों को हल करके समय बर्बाद करती है, जिसमें केवल डेवलपर-विशिष्ट सेटिंग्स शामिल हैं, जिन्हें एससीएम को साझा करने की आवश्यकता नहीं है। यह सब गड़बड़ है क्योंकि किसी ने गलत धारणाओं के आसपास प्रक्रिया को अनुकूलित किया।
क्या आप बिल्ड सर्वर का उपयोग करते हैं? हमारे पास एक बिल्ड सर्वर है जो पूरी परियोजना की जांच करता है और हर रात इसे संकलित करता है। अगली सुबह परीक्षकों के पास उत्पाद का एक तैयार-से-परीक्षण इंस्टॉलर है (यदि मास्टर बिल्ड सही तरीके से चला है) और हमारे पास (डेवलपर्स) सभी चेतावनियों के साथ एक बिल्ड रिपोर्ट है (और त्रुटियां हैं, यदि कोई हैं)। बेशक, आपको बिल्ड सर्वर के लिए मानक कॉन्फ़िगरेशन फ़ाइलों को सेट करने और उन्हें जांचने की आवश्यकता है। प्रत्येक डेवलपर तब उन्हें बाकी प्रोजेक्ट के साथ देख सकता है, लेकिन उन्हें किसी भी स्थानीय परिवर्तन में जांच करने की अनुमति नहीं है ।
इस परिदृश्य में आप किसी भी समय पूरी परियोजना की जांच करने और उसे बनाने में सक्षम होने के लिए उसकी आवश्यकता को संबोधित करते हैं। आप उन परिवर्तनों को मर्ज करने के लिए समय बिताने से भी बचते हैं, जिन्हें पहली बार में जांचना नहीं चाहिए था क्योंकि वे उत्पाद का हिस्सा नहीं हैं: उत्पाद मास्टर बिल्ड है, और इसे साफ रखना चाहिए। यदि कोई मास्टर बिल्ड को तोड़ता है (उदाहरण के लिए अपनी स्वयं की .project फ़ाइल में जाँच) तो आप उन परिवर्तनों को वापस कर सकते हैं या उस डेवलपर को समस्या को हल करने के लिए बाध्य कर सकते हैं।
हो सकता है अगर वह इस मुद्दे को फिर से लाता है, तो आप फिर से एक बैठक (संभवतः अन्य डेवलपर्स के साथ) करने और एक साथ एक आम रणनीति खोजने का सुझाव दे सकते हैं।
मैं एक टीममेट को कैसे मना सकता हूं, जो खुद को वरिष्ठ के रूप में देखता है, एसवीएन मूल बातें की बेहतर समझ पाने के लिए।
मुझे लगता है कि सबसे अच्छी रणनीति संघर्ष को व्यक्तिगत स्तर पर लाने से बचना होगा, बल्कि मुद्दों पर चर्चा करना और संभावित समाधानों पर चर्चा करना होगा। यदि आपको लगता है कि वह एक निजी टकराव की तलाश में है, तो यहां कुछ सुझाव दिए गए हैं (फिर से, व्यक्तिगत अनुभव से):
- आपकी टीम की गतिशीलता कैसी है? क्या आपके अन्य सहकर्मी इस टीम साथी के साथ समान अनुभव रखते हैं? कई छोटे, बहुत स्पष्ट संकेत नहीं हैं कि एक टीम अपने सदस्यों में से एक को कुछ व्यवहार (छोटे चुटकुले या टिप्पणियों) को हतोत्साहित करने और रचनात्मक टकराव को प्रोत्साहित करने (एक बैठक का प्रस्ताव, या कॉफी विराम के दौरान अनौपचारिक रूप से एक विषय को लाने के लिए दे सकती है)। )। कभी-कभी एक अच्छी टीम जल्दी से एक परेशान तत्व को अलग कर सकती है और चीजों को सामान्य में वापस ला सकती है।
- आपके कर्मियों का प्रबंधन कितना अच्छा है? हमारी कंपनी में एक संघर्ष का मामला था और स्थिति को साफ करने के लिए कर्मियों के प्रमुख को हस्तक्षेप करना पड़ा। यह अच्छा नहीं था, लेकिन कभी-कभी काम का माहौल इतना बिगड़ जाता है कि यह अपने आप ठीक नहीं होगा। मुझे आशा है कि यह आपका मामला नहीं है (मुझे यह आभास नहीं है कि यह अभी तक मिल गया है), लेकिन यह जानना हमेशा अच्छा होता है कि क्या आपके पास एक अच्छा कार्मिक प्रशासन है या यदि आपको स्वयं संघर्षों को हल करना है।
मेरे इसे लिखने की क्या वजह है? आप कहते हैं कि आप "एक टीम के साथी को, जो स्वयं को वरिष्ठ के रूप में देखता है, को एसवीएन मूल बातें समझने के लिए बेहतर समझाना चाहते हैं"। मेरे लिए ऐसा लगता है कि संघर्ष बहुत व्यक्तिगत हो सकता है। कुछ मनोवैज्ञानिक यह कहते हैं कि हमारे संचार का 70% भावनात्मक स्तर पर है, अगर यह स्तर काम नहीं कर रहा है, तो लोग तथ्यों के बारे में बोलना बंद कर देते हैं क्योंकि वे भावनाओं से निपटने में बहुत व्यस्त हैं।
इसलिए, अपनी बातों को समझाने के अलावा, आप संचार को बेहतर बनाने के लिए कुछ करने की कोशिश भी कर सकते हैं। एक कॉफी के लिए आमंत्रित करना या एक साथ लंच ब्रेक करना, एक विषय के बारे में एक छोटी बातचीत करना जो काम से संबंधित नहीं है, आदि, संचार में सुधार कर सकते हैं और अपने सहयोगी का ध्यान महत्वपूर्ण तथ्यों पर वापस ला सकते हैं जो आप उसे समझना चाहते हैं। यदि वह इस तरह के संचार को स्वीकार करता है, तो हो सकता है कि आपके अब तक के संघर्ष इस तथ्य से संबंधित थे कि आप एक-दूसरे को अच्छी तरह से नहीं जानते हैं और कुछ छोटी गलतफहमियां थीं, लेकिन वह शायद रचनात्मक सहयोग करने के लिए खुला है। अगर वह मना करता है, तो उसकी तरफ से गहरी दुश्मनी हो सकती है।
इस मामले में, मुझे लगता है कि आपको अपनी भूमिकाएँ स्पष्ट होने तक प्रतीक्षा करनी चाहिए। यदि आप टीम के साथी को आधिकारिक रूप से उच्च रैंक नहीं देते हैं, तो आपके पास चीजों को बेहतर बनाने के आपके प्रयासों पर चिढ़ पाने का कोई मतलब नहीं है। समय के साथ उसे यह स्वीकार करना होगा या खुद को मूर्ख बनाना होगा यदि वह यह दिखाने की कोशिश करता है कि वह बेहतर जानता है। यदि उसके पास एक उच्च पद है, तो आपको उसे यह समझने का एक तरीका खोजना चाहिए कि यह चर्चा के अधीन नहीं है: आपकी टिप्पणियों का उद्देश्य उत्पादकता में सुधार करना है, न कि उसकी स्थिति को कम करना, यह 100% स्पष्ट होना चाहिए। जब भूमिकाओं को स्पष्ट किया गया है, अगर वह अभी भी रचनात्मक सुझावों या आलोचना को स्वीकार नहीं कर सकता है, तो उसे वास्तव में आत्मसम्मान के साथ कुछ समस्या या ऐसा कुछ होना चाहिए।
इसलिए यदि उपरोक्त सभी रणनीतियां विफल हो जाती हैं और आप निराश (बहुत) निराश महसूस करते रहते हैं, तो मुझे डर है कि केवल उचित काम करने के लिए आपकी चीजों को पैक किया जाएगा और एक बेहतर जगह की तलाश की जाएगी। मैंने यह अनुभव तीन साल पहले किया था और मुझे एक बेहतर कंपनी मिली जिसमें मैं अब बहुत संतुष्ट हूं। शायद यह आपका मामला नहीं है (मुझे आशा है कि निश्चित रूप से नहीं) लेकिन इस बिंदु को भी समझने की कोशिश करें।
बस मेरे 2 सेंट।