क्या आपके सर्वश्रेष्ठ प्रोग्रामर को स्रोत नियंत्रण में अन्य सभी के कोड की जांच करनी चाहिए?


29

में से एक SVN और Git के बीच मतभेद भंडार तक पहुंच को नियंत्रित करने की क्षमता है। दोनों की तुलना करना कठिन है क्योंकि इस बात को लेकर मतभेद है कि किसे बदलाव की अनुमति दी जानी चाहिए!

यह सवाल एक कंपनी में एक टीम के लिए केंद्रीकृत भंडार के रूप में git का उपयोग करने के बारे में है। मान लें कि टीम के सदस्य अलग-अलग कौशल स्तर के हैं, ज्यादातर कंपनियों में वे जिस तरह से हैं।

Git लगता है कि आपके केवल आपके सबसे अच्छे (सबसे अधिक उत्पादक, सबसे अनुभवी) प्रोग्रामर को कोड में जांचने के लिए भरोसा किया जाता है। अगर ऐसा है, तो आप वास्तव में इसे चेक करने के लिए अन्य लोगों के कोड की समीक्षा करने के लिए कोड लिखने से अपना समय निकाल रहे हैं। क्या यह भुगतान बंद है? मैं वास्तव में इस सवाल पर ध्यान केंद्रित करना चाहता हूं कि आपके सर्वश्रेष्ठ प्रोग्रामर के समय का सबसे अच्छा उपयोग क्या है, सामान्य रूप से सर्वश्रेष्ठ संस्करण-नियंत्रण प्रथाओं पर नहीं । एक कोरोलरी हो सकती है, क्या अच्छे प्रोग्रामर छोड़ देते हैं यदि उनकी नौकरी का एक महत्वपूर्ण हिस्सा अन्य लोगों के कोड की समीक्षा करना है? मुझे लगता है कि दोनों प्रश्न उबलते हैं: क्या उत्पादकता हिट के लायक समीक्षा है?


5
"सर्वश्रेष्ठ प्रोग्रामर" को परिभाषित करें? सबसे अच्छा क्या? मनमाने नियमों का पालन? कोड बाहर क्रैंकिंग? शून्य-दोष कोड लिखना?
टिमो ज्यूश

3
क्षमा करें, मैं अभी भी अनियंत्रित (यानी गैर-चेक इन) कोड की समीक्षा करने की अवधारणा के आसपास अपना मस्तिष्क प्राप्त करने की कोशिश कर रहा हूं ... निश्चित रूप से एससीएस का उपयोग करने के प्रमुख लाभों में से एक यह है कि समीक्षा एक ज्ञात / नियंत्रित के खिलाफ की जा सकती है कोड का चलना
एंड्रयू

2
@ gitकिसी भी डेवलपर के साथ अपने स्वयं के रेपो (अपने व्यक्तिगत कंप्यूटर पर) और एक सार्वजनिक व्यक्तिगत रेपो (सर्वर पर एक, पीछे apache) हो सकता है कि वह केवल परिवर्तनों को जोड़ सकता है। अंतर यह है, कि केवल लीड डेवलपर्स रेपो "धन्य एक" है, जिसमें से सभी को चेकआउट करना चाहिए। लीडर चेक डेवलपर के पब्लिक रिपॉज से कोड करता है और उन्हें अपने पब्लिक रेपो में मर्ज करता है। आप दोनों ने ज्ञात / नियंत्रित पुनरावृत्ति के साथ-साथ हर समय स्रोत नियंत्रण भी किया है।
ह्यूबर्ट करियो

32
"गिट लगता है कि आपके केवल आपके सबसे अच्छे (सबसे अधिक उत्पादक, सबसे अनुभवी) प्रोग्रामर को कोड में जांचने के लिए भरोसा किया जाता है" एक गलत व्याख्या है। गिट को कॉन्फ़िगर किया जा सकता है कि आप कैसे चाहते हैं। "पुल अनुरोध" मॉडल सिर्फ एक ही तरीका है - संभावित रूप से बड़ी संख्या में अज्ञात योगदानकर्ताओं के साथ खुले स्रोत परियोजनाओं के लिए आदर्श रूप से अनुकूल है। अधिकांश व्यावसायिक वातावरण में, "पुल अनुरोध" मॉडल एक लाल झंडा होगा, जो खराब एसडीएलसी और क्यूसी प्रक्रियाओं और प्रक्रियाओं का संकेत देता है।
मटनज

4
मेरा मानना ​​है कि @mattnz यहां सही है। यह पूरी तरह से गिट पर एक मजबूत ओपन सोर्स प्रभाव का परिणाम है, जहां एक कोर देव टीम है जो रेपो की स्थिति को नियंत्रित करती है, लेकिन अन्य लोगों के भी योगदान के लिए स्वागत है।
स्टीवन एवर्स

जवाबों:


53

चूंकि यह आपके प्रश्न से स्पष्ट नहीं है, इसलिए मैं केवल यह बताना चाहता हूं कि गेटकीपर वर्कफिट किसी भी तरह से आवश्यक नहीं है। बड़ी संख्या में अविश्वासित योगदानकर्ताओं के कारण यह ओपन सोर्स प्रोजेक्ट्स के साथ लोकप्रिय है, लेकिन किसी संगठन के भीतर इसका कोई मतलब नहीं है। यदि आप चाहते हैं तो आपके पास सभी को पुश एक्सेस देने का विकल्प है।

इस विश्लेषण में लोग जो उपेक्षा कर रहे हैं वह यह है कि अच्छे प्रोग्रामर वैसे भी अन्य प्रोग्रामर के टूटे हुए कोड से निपटने में बहुत समय बिताते हैं। यदि सभी के पास पुश एक्सेस है, तो बिल्ड टूट जाएगा , और सबसे अच्छा प्रोग्रामर लोगों को अक्सर एकीकृत करते हैं और जब चीजें टूट जाती हैं, तो अपराधी को ट्रैक करते हैं।

पुश एक्सेस रखने वाले सभी के बारे में यह है कि जब कुछ टूटता है, जो कोई भी खींचता है उसे एक टूटी हुई इमारत मिलती है जब तक कि अपमानजनक कमिट वापस या तय नहीं हो जाती। गेटकीपर वर्कफ़्लो के साथ, केवल गेटकीपर प्रभावित होता है। दूसरे शब्दों में, आप उन सभी के बजाय अपने सबसे अच्छे प्रोग्रामर को प्रभावित कर रहे हैं।

यह पता चल सकता है कि आपके कोड की गुणवत्ता काफी अधिक है और एक गेटकीपर की लागत-लाभ अनुपात अभी भी इसके लायक नहीं है, लेकिन परिचित लागतों की उपेक्षा न करें। सिर्फ इसलिए कि आप उस उत्पादकता हानि के आदी हैं इसका मतलब यह नहीं है कि यह खर्च नहीं किया गया है।

इसके अलावा, संकर विकल्पों का पता लगाने के लिए मत भूलना। यह एक रिपॉजिटरी को स्थापित करने के लिए बहुत आसान है, जिसे कोई भी धक्का दे सकता है, फिर एक वरिष्ठ डेवलपर, परीक्षक, या यहां तक ​​कि एक स्वचालित निरंतर एकीकरण सर्वर जैसे गेटकीपर का फैसला करता है कि क्या और जब परिवर्तन इसे एक दूसरे, अधिक स्थिर रिपॉजिटरी में बनाता है। इस तरह से आप दोनों दुनियाओं में सर्वश्रेष्ठ हो सकते हैं।


10
+1: के लिए ... अच्छे प्रोग्रामर वैसे भी अन्य प्रोग्रामर के टूटे हुए कोड से निपटने में बहुत समय बिताते हैं।
जिम जी।

3
+1 उत्तम उत्तर। विशेष रूप से यह इंगित करते हुए कि एक निर्माण-संबंधी बग को करने वाला एक देव हर किसी को नकारात्मक रूप से प्रभावित करता है।
इवान प्लाइस

उस स्थिति में, सबसे अच्छा दो प्रोग्रामर पूरे समय का उपयोग करते थे और अन्य लोगों के कोड को ठीक करने के लिए उपयोग किया जाता था। यकीन है कि VCS पर कोड की गुणवत्ता अच्छी थी, लेकिन इन दोनों के लिए मनोबल एक शौचालय फ्लश की तुलना में तेजी से घट रहा था। एक अच्छा विचार के रूप में शुरू हुआ यह बुरा सपना बन गया जब ये दोनों उन जगहों के लिए दरवाजे से बाहर भाग गए, जहां वे मिल सकते थे, कह सकते हैं, अधिक रचनात्मक कार्य।
15

1
यह एक अच्छी बात है, @Newtopian। जिन स्थानों पर मैंने यह सफल देखा है, उनके पास एक माइक्रोसेवा मॉडल के अधिक है, और केवल एक स्क्रम टीम ने किसी भी दिए गए माइक्रो सर्विस पर पहुंच बनाई है, लेकिन सिस्टम के लिए जिम्मेदारी पूरी तरह से चारों ओर फैली हुई है। यदि आपके पास कम से कम कुछ अनुभवी प्रोग्रामर प्रति स्कैम टीम नहीं है, तो आपके काम पर रखने के तरीकों में सुधार की आवश्यकता है।
कार्ल बेवफेल्ट्ट

40

मैंने ऐसी नौकरी में काम किया है जहाँ चेक-इन केवल टीम लीड्स तक ही सीमित था (और टीम लीड्स अपने कोड में जाँच नहीं कर सकते थे)। यह कोड समीक्षा को लागू करने के लिए हमारे तंत्र के रूप में कार्य करता है, मोटे तौर पर कई घटनाओं के कारण जहां बुरी तरह से गेट्स चेक-इन और स्थिर विश्लेषण के आसपास भी कोडबेस में मिला।

एक तरफ, यह काम किया। कोडबेस में आने से पहले कई बुरे कमिट पाए गए (और तुरंत एक हफ्ते तक या तो भूल गए जब तक कि कोई उन पर टूट न पड़े)। इससे कोडबेस में कम व्यवधान हुआ। इसके अलावा, मैं तकनीकी स्वरूप बनने से पहले कुछ प्रारूपण / संरचना की चीजों को पीछे धकेल सकता था; कुछ कीड़े पकड़ने से पहले वे कीड़े बन गए। और इसने मुझे बहुत अच्छा महसूस कराया कि मेरी टीम क्या कर रही थी।

दूसरी ओर, इसने मुझे अनायास ही जानलेवा क्रोध में ले जाने का कारण बना दिया जब मेरी 3 लाइन परिवर्तन को दूसरे लीड को ट्रैक करने और उन्हें कमिट करने के लिए होने में 4 घंटे लग गए। इसने मुझे सबसे अच्छा अभ्यास करने की तुलना में बहुत कम लगातार करने के लिए धक्का दिया, और कभी-कभी उन मुद्दों के लिए नेतृत्व किया जो डेवलपर को परिवर्तन करने की कोशिश कर रहे थे।

मैं आमतौर पर सबसे ज्यादा जरूरत वाले वातावरण को छोड़कर इसकी सिफारिश नहीं करता। समीक्षा और कमिट करना वास्तव में बहुत बुरा नहीं था। मेरी खुद की प्रक्रिया दूसरों के सनक पर निर्भर होने के बावजूद, जो कि बहुत बुरा था। यदि आप कोड में जांच करने के लिए अपने डेवलपर्स पर भरोसा नहीं कर सकते हैं, तो बेहतर डेवलपर्स प्राप्त करें।


8
@HubertKario - यदि आपके सर्वश्रेष्ठ डेवलपर्स कोड समीक्षा करने में समय बिता रहे हैं और बाकी प्रभावी रूप से पूर्ण होने तक अवरुद्ध हैं, तो मुझे बहुत अधिक व्यावहारिक अंतर दिखाई नहीं देता है।
तेलस्टिन

6
वे कैसे अवरुद्ध हैं? आप एक पैच बनाते हैं (स्थानीय रूप से), इसे अपस्ट्रीम में जमा करें, और नए विजेट पर काम करते रहें (नए स्थानीय कमिट बनाएँ)। यदि आपका परिवर्तन शब्दशः लागू होता है, तो आपको केवल चेकआउट की आवश्यकता है और लीड के रेपो को मर्ज करें। यदि यह शब्दशः लागू नहीं किया गया था तो आप अपने बाद के काम को फिर से कर सकते हैं। यदि परिवर्तन वास्तव में महत्वपूर्ण है, तो आप इसे अपने स्वयं के सार्वजनिक रेपो में प्रकाशित कर सकते हैं और लोगों को इसे वहां से चेकआउट करने या बस उन्हें पैच भेजने के लिए कह सकते हैं। इस मामले gitमें पता चलेगा कि एक बदलाव पहले से ही किया गया था और सिर्फ विशिष्ट अपस्ट्रीम पैच को लागू करना छोड़ दें।
ह्यूबर्ट करियो

9
इस प्रश्न में अंतिम पंक्ति वास्तव में मेरी नज़र में संपूर्ण बिंदु है। एक डेवलपर जिस पर भरोसा नहीं किया जाता है वह सबसे अच्छा अप्रभावी होगा और सबसे बुरी तरह से उसकी नौकरी से नफरत करेगा। उन लोगों को न रखें जिन्हें आप भरोसा नहीं करेंगे। यह उन लोगों पर पैसे बर्बाद कर रहा है जिन्हें आप वैसे काम करने की अनुमति नहीं देंगे, जो आप उन्हें वैसे भी दे रहे हैं।
जिमी हॉफ

1
@HubertKario - आप आई से बेहतर जानते हैं। मैं जिस वातावरण में था, वह विभिन्न शाखाओं / बदलावों को टालने के लिए कष्टप्रद था।
तेलस्तीन

5
@Telastyn मुझे नहीं पता कि क्या मैं आपके जवाब की व्याख्या करने वाला हूं जैसा कि मैंने वास्तव में किया था, लेकिन इसके साथ एक और नकारात्मक यह होगा कि एनोटेशन / दोष इतिहास सब गलत होगा। यदि आपको ऐसा कुछ कोड मिला जिसे आप समझ नहीं पाए हैं, तो आप समीक्षक से पूछेंगे कि यह प्रतिबद्ध है, न कि प्रोग्रामर जिसने इसे लिखा है।
डैनियल कपलान

28

नहीं। किसी को भी करने में सक्षम होना चाहिए।

यदि आपको बग की समस्या हो रही है तो यह स्रोत नियंत्रण नीति नहीं है जो गलत है। यह देवता है जो यह सुनिश्चित करने में विफल रहता है कि वह क्या काम करता है। तो आपको क्या करना है, यह स्पष्ट दिशानिर्देशों को परिभाषित करना है कि क्या करना है और कब करना है।

एक और बड़ी बात इकाई परीक्षण कहा जाता है;)

हालांकि एक विकल्प है।

a) यदि आप वितरित संस्करण नियंत्रण का उपयोग करते हैं तो आप एक मुख्य रिपोज बना सकते हैं जिसमें केवल पुल अनुरोध किए जा सकते हैं। इस तरह से मुख्य शाखा का नियंत्रण प्राप्त करते समय सभी देवता अपने स्वयं के कोड का संस्करण प्राप्त कर सकते हैं।

बी) तोड़फोड़ और इसी तरह आप शाखाओं का उपयोग कर सकते हैं जहां प्रत्येक देव को इसे मुख्य शाखा में लाने के लिए पैच बनाने पड़ते हैं।


1
यह। यदि आप इकाई के बिना काम कर रहे हैं और परीक्षण का निर्माण कर रहे हैं, तो कोड समीक्षा की आवश्यकता होना एक अपूर्ण पट्टी है।
ब्रायन नोब्लुक

हाँ। इसलिए मैंने विकल्पों का उल्लेख किया है। कोड समीक्षा कुछ नहीं से बेहतर है। कोड को संस्करण करने में सक्षम नहीं होना एक दर्द है जिसे किसी भी डेवलपर को उजागर नहीं किया जाना चाहिए।
jgauffin

2
यदि वे एक ही द्वारा लिखे गए हैं तो यूनिट परीक्षण मदद नहीं करते हैं <इकाई कोड के रूप में अपने fav 4 अक्षर यहां डालें>।
ott--

@BrianKnoblauch: कोई यह तर्क दे सकता है कि विपरीत सच भी है। आदर्श रूप से, आपके पास दोनों होना चाहिए।
डॉक्टर ब्राउन Brown

@ ott-- मैंने सिर्फ एक देव के बारे में एक कहानी सुनी जो एक फिक्स की भयानक गड़बड़ी करने के बाद छोड़ दिया और अपनी इकाई परीक्षणों में सभी ऐसर्स की टिप्पणी की। डिफ़ॉल्ट रूप से परीक्षण सफल रहे इसलिए इस मुद्दे पर ध्यान देने में थोड़ा समय लगा!
एलेक्स

8

आपके पास जेरिट जैसी परियोजनाओं पर एक नज़र होनी चाहिए जो सभी डेवलपर्स को अपने कोड को 'समीक्षा' शाखा में धकेलने की अनुमति देती है और एक बार जब आप वरिष्ठ / लीड देव इन परिवर्तनों से खुश होते हैं तो वे उन्हें मास्टर / रिलीज़ में धकेल सकते हैं।

यदि वे खुश नहीं हैं, तो वे कोड की एक पंक्ति के बगल में टिप्पणी छोड़ सकते हैं, अद्यतन पैच के लिए पूछ सकते हैं आदि।

इस तरह से बदलाव के साथ कोई भी इसे जल्द से जल्द तैयार कर सकता है और केवल योग्य लोग (गेरिट में सही +2 विशेषाधिकार के साथ) उस कोड को परीक्षण करने और बाद में उत्पादन करने के लिए धक्का दे सकेंगे।


2
हम बड़ी सफलता के साथ जेरिट का उपयोग करते हैं। हर मुद्दे को हल करता है ओपी के साथ एक समस्या है और यहां तक ​​कि कुछ को वह नहीं जानता है कि उसके पास है।
मटनज़

8

नहीं, यह आपकी सर्वश्रेष्ठ प्रतिभा का खराब उपयोग है। एक प्रकाशन कंपनी की कल्पना करें कि उनके सबसे सफल लेखक हैं और उन्हें संपादन करना है; बुरा विचार।

कोड की समीक्षा होनी चाहिए, लेकिन इसका मतलब यह नहीं है कि यह हमेशा सीनियर है। आखिरकार, टीम पर सभी को उस स्तर तक पहुंचने की उम्मीद की जानी चाहिए जहां वे न्यूनतम मार्गदर्शन के साथ कोड का योगदान कर सकते हैं। वे विश्वास के तीन स्तरों से गुजरते हैं:

  1. इससे पहले कि आप इसे चेक करें, कोई नहीं - मैं कोड की हर लाइन देखना चाहता हूं।
  2. कुछ - मुझे बताएं कि आप क्या कर रहे हैं और मैं प्रतिक्रिया प्रदान करूंगा
  3. अधिकांश - अपना काम करो और जरूरत पड़ने पर ही मदद मांगो।

अपनी प्रतिभा को मुक्त करने के लाभ:

  • डिजाइन पर ध्यान दें
  • कोडिंग मानकों और प्रवर्तन रणनीतियों को स्थापित करने में भागीदारी (मैन्युअल रूप से यह सब स्वयं किए बिना)
  • कठिन कोडिंग समस्याओं से निपटने
  • मेंटरशिप प्रदान करें (कोड की प्रत्येक पंक्ति को अनुमोदित किए बिना)

एक प्रबंधन पथ में रुचि रखने वाले डेवलपर्स हैं जो पूरे दिन कोड नहीं करना पसंद कर सकते हैं; दूसरों को अकेला छोड़ दो।


1
+1। टीम को टीम की समीक्षा करने दें - समीक्षक और समीक्षक दोनों लाभान्वित हो सकते हैं, भले ही समीक्षक समीक्षा की तुलना में कम अनुभवी हो। और आप AFTER चेक-इन सभी समीक्षा कर सकते हैं। IMO, यदि आप लोगों को चेक करने से रोकते हैं, तो उनकी उत्पादकता घट जाएगी (उनकी प्रेरणा के बावजूद)।
एंडी

5

उत्पादकता हिट के लायक समीक्षा है?

यह टीम "बैलेंस" पर निर्भर करता है और समीक्षा कैसे सेट की जाती है। दोनों प्रबंधन और टीम वर्क के मामले हैं, संस्करण नियंत्रण तकनीकी जादू (केंद्रीकृत या वितरित) की कोई राशि उस पर पर्याप्त प्रभाव नहीं डाल सकती है।

यदि गलत किया गया है , तो उत्पादकता की हिट समीक्षा के किसी भी लाभ को मार देगी; हालांकि इसका उत्तर समीक्षाओं के विचार को छोड़ना नहीं है, बल्कि यह पता लगाना है कि यह सही कैसे करना है

एक दृष्टिकोण यह जानने के लिए कि क्या आपकी समीक्षाएं ठीक हैं, समीक्षाओं पर खर्च किए गए समय को ट्रैक करने के लिए समस्या ट्रैकिंग टूल का उपयोग करना है (कुछ कोड समीक्षा उपकरण उसके लिए भी अनुमति देते हैं)। यदि आपको पता है कि समीक्षा में काफी समय लग रहा है, तो चीजों को बेहतर बनाने के कारणों और तरीकों को खोजने में कुछ प्रयास करें। इसके अलावा, कोड की समीक्षा के साथ संभावित मुद्दों की खोज करने के लिए टीम के सदस्यों के साथ नियमित 1: 1s के लिए चोट नहीं पहुंचेगी ।


अगर टीम में "सर्वश्रेष्ठ" प्रोग्रामर को गंदे कोडर्स द्वारा उत्पादित समझ से बाहर कचरे के माध्यम से खुदाई करने के लिए घंटे खर्च करने के लिए मजबूर किया जाता है, तो समाधान बकवास निर्माताओं को आग लगाने के लिए है, न कि वीसीएस तकनीक से अपील करने के लिए।

  • पिछली परियोजनाओं में से एक में, मुझे एक घटक में स्थायी रूप से कम-प्रदर्शन करने वाली टीम के सदस्य द्वारा किए गए कोड परिवर्तनों की समीक्षा करने के लिए सौंपा गया था, जिसमें परीक्षणों का निर्माण और चलाने में लगभग एक घंटे का समय लगा था। मैंने डिस्क्स पढ़ना शुरू कर दिया और जब मैंने एक असमान परिवर्तन देखा, तो मैंने बस समीक्षा समाप्त कर दी, आवश्यक टिप्पणियां पोस्ट कीं और प्रबंधन को यह सुनिश्चित करने के लिए कहा कि आगे की समीक्षा अनुरोध लिखित पुष्टि के साथ आए कि उनका कोड संकलित हो। तब से कोई "समीक्षा अनुरोध" नहीं था और जल्द ही लड़का छोड़ दिया गया।

दूसरी तरफ, जब टीम यथोचित संतुलित होती है, तो कोड समीक्षाएं मज़ेदार और शिक्षाप्रद होती हैं। मेरी पूर्व परियोजना में, हमें 100% कोड समीक्षा की आवश्यकता थी और इसमें न तो ज्यादा समय लगा और न ही ध्यान भंग हुआ। समीक्षा के माध्यम से बग की खोज की गई, और शैली और डिजाइन विकल्पों को कोड करने के बारे में बहसें हुईं, लेकिन यह सिर्फ महसूस किया गया ... सामान्य


यदि कोड परिवर्तन दिनों के लिए अवरुद्ध हो रहे हैं ... परीक्षण के लिए क्यूए से "समीक्षा के कारण" होने के सप्ताह, वीसीएस ट्रिक्स के बारे में अध्ययन इस समस्या को हल करने के लिए कम से कम संभव तरीका होगा। इसके बजाय किसी को बेहतर तरीके से उन मुद्दों पर ध्यान देने के अपने प्रयास पर ध्यान केंद्रित करना चाहिए कि कैसे समीक्षा प्रक्रिया आयोजित की जाती है।

  • - इस परिवर्तन के ओह एकीकरण में बहुत देरी हुई क्योंकि समीक्षक अचानक बीमार हो गए, यह क्या दुर्भाग्य है।
    - नमस्ते! हेल-लो-ओ, क्या आपने कभी इस तरह के मामलों से निपटने के लिए बैकअप समीक्षकों के होने के बारे में सोचा ?

4

हाँ। लेकिन केवल अगर आप वितरित स्रोत नियंत्रण के बारे में बात कर रहे हैं। केंद्रीकृत के साथ - यह निर्भर करता है।

यदि केवल कुछ प्रोग्रामर हैं, तो बहुत कम समय लगता है। निश्चित रूप से बग और तकनीकी ऋण को हटाने के लिए आवश्यक सुधारों की तुलना में कम है।

यदि बहुत सारे प्रोग्रामर हैं, तो आप लेफ्टिनेंट को वास्तविक कोड-समीक्षा के कार्य को सौंप सकते हैं और लीड डेवलपर को अपने परिवर्तनों (लगभग) को निर्विवाद रूप से खींच सकते हैं। यह लिनक्स कर्नेल के लिए काम करता है, मुझे नहीं लगता कि कोई बड़ी सॉफ्टवेयर परियोजनाएं हैं ...

फिर से, यदि प्रोजेक्ट छोटा है, तो लीड जल्दी से देखेगा कि कौन अच्छा कोड देता है और कौन खराब कोड का उत्पादन करता है। वह बहुत जल्दी देखेगा कि जे। रैंडम अच्छा कोड लिखता है जिसे केवल वास्तु निर्णयों की जाँच की आवश्यकता होती है जबकि इंटर्न खराब कोड लिखता है जिसे विलय से पहले लाइन द्वारा समीक्षा की आवश्यकता होती है। इस तरह से उत्पन्न प्रतिक्रिया से लाइन के रखरखाव का बोझ कम हो जाएगा और इंटर्न वास्तव में जो कुछ भी सीखते हैं उस पर पहले हाथ का अनुभव देंगे और उन्हें कंपनी में रखा जाना चाहिए। अन्य gitरेपो से शाखा को खींचने और विलय करने का शाब्दिक अर्थ (एक) दर्जन सेकंड होता है, आमतौर पर प्रतिबद्ध संदेशों के शीर्षक को पढ़ने में अधिक समय लगेगा, इसलिए मुझे पता है कि अच्छे कोड लिखने के लिए किस पर भरोसा किया जा सकता है अन्य लोगों के कोड को विलय करना एक गैर-मुद्दा है।


2

कोड समीक्षा के लिए केवल आपके बहुत अच्छे प्रोग्रामर के ध्यान की आवश्यकता नहीं है। IMO, यह एक अनौपचारिक बात होनी चाहिए। उत्पादन में जांच होने से पहले एक गैर-रूकी से कोड के एक टुकड़े पर बस एक दूसरी राय या आंखों की दूसरी जोड़ी। यह प्रमुख ओवरसाइट्स को कम करने में मदद करता है जबकि लोगों को अन्य देव दृष्टिकोणों के संपर्क में आने से शिल्प के रूप में कोडिंग में बेहतर होने में मदद करता है।

एक कम-अप्रिय जोड़ी-प्रोग्रामिंग लाइट की तरह। दूसरे शब्दों में, इसे लंबा नहीं होना चाहिए और आपको किसी के लिए घंटों इंतजार नहीं करना चाहिए। आपकी विकास प्रक्रिया में कुछ भी शामिल है जो चीजों की प्रतीक्षा कर रहे लोगों को पैसे की बर्बादी और गति / मनोबल, आईएमओ के लिए अपंग है।

यदि कोड समीक्षा का मतलब 99.5% बग्स को रोकना है, तो इससे पहले कि वे आपके कोड बेस में प्रवेश करें, परिष्कृत संस्करण नियंत्रण के लिए कोई वास्तविक बिंदु नहीं होगा। उस ने कहा, git पहली बार में भयभीत कर रहा है, लेकिन बुनियादी सामान्य उपयोग यह जटिल नहीं है और यह अत्यधिक विन्यास योग्य है .. आपको हर घंटे इसे सिखाने के लिए कुछ घंटों के लिए रोकना चाहिए। हर कोई करता है। जब तक वे किसी चीज में विशेषज्ञता का प्रदर्शन नहीं करते हैं तब तक सभी महानतम धोखेबाज समीक्षा करते हैं।


0

जब तक प्रस्तुत किए जा रहे परिवर्तनों की समीक्षा 'सर्वश्रेष्ठ प्रोग्रामर' द्वारा की जाती है, तब तक किसी को भी कोड जमा करने की अनुमति दी जानी चाहिए। एकमात्र व्यक्ति जिसके पास रिपॉजिटरी पर नियंत्रण लागू करने की क्षमता होनी चाहिए, वह रिलीज़ इंजीनियर है, यदि वह व्यक्ति मौजूद है।

व्यक्तिगत रूप से, यदि मुझे अन्य लोगों के कोड की जांच करनी पड़े तो मुझे अच्छी तरह से नाराज होना पड़ेगा।

आपके संपादन पर कुछ इनपुट: नहीं, उन्हें नहीं चाहिए। समीक्षा एक आवश्यक बुराई है, वे नुकसान की तुलना में अधिक अच्छा करते हैं और अच्छे प्रोग्रामर इसकी सराहना करेंगे। हो सकता है कि समीक्षाओं में भाग लेने की अनिच्छा हो क्योंकि उन्हें अपने कोड की आलोचना करने वाले 'कम प्रोग्रामर' का विचार पसंद नहीं है। यह बहुत बुरा है। यदि कोडलाइन लगातार छोटी है और वे अन्य लोगों के आधे पके हुए सबमिशन के बाद सफाई करने में अपना समय व्यतीत करते हैं, तो उन्हें छोड़ने की अधिक संभावना होगी।


0

हां, समीक्षा इसके लायक है। यदि समीक्षा प्रक्रिया निम्नलिखित कारणों से आनुपातिक है, तो मुझे यकीन नहीं है कि कोई उत्पादकता हिट है:

  • यह प्रोग्रामर को ईमानदार रखता है - यदि आप जानते हैं कि इसकी समीक्षा की जाएगी, तो लोग कम शॉर्टकट लेंगे
  • यह नए प्रोग्रामर को अधिक अनुभव प्रोग्रामर से सीखने में मदद करता है
  • यह डोमेन विशिष्ट ज्ञान को स्थानांतरित करने में मदद करता है
  • समीक्षा एक और गेट है जहां बग और संभावित मुद्दे मिल सकते हैं और तय किए जा सकते हैं

सभी प्रोग्रामर को स्रोत नियंत्रण का उपयोग करने की अनुमति नहीं देने से वे परिवर्तनों को ट्रैक करने, गलतियों को पूर्ववत करने और परिवर्तनों का एक उचित इतिहास देखने की क्षमता खो देते हैं। मुझे यकीन नहीं है कि आप कभी भी अपने "सर्वश्रेष्ठ" प्रोग्रामर को चेक करने में सक्षम होना चाहेंगे।

यह कहने के बाद, मुझे लगता है कि यह उचित है कि आपके पास कोई है जो कुछ प्रमुख शाखाओं का प्रभारी है, जैसे कि रिलीज़ शाखा। इस मामले में मुझे लगता है कि हर कोई गिट रिपॉजिटरी का उपयोग कर सकता है, लेकिन केवल कुछ लोग रिलीज शाखा में विलय कर सकते हैं। मुझे यकीन नहीं है कि गिट में इसे लागू करने का एक तरीका है, लेकिन यह प्रक्रिया द्वारा करना संभव है और बस किसी अन्य व्यक्ति ने इसकी जांच नहीं की है।

रिलीज शाखा में विलय "सर्वश्रेष्ठ" प्रोग्रामर द्वारा किया जा सकता है, या पर्याप्त समीक्षा के बाद सक्षम लोगों द्वारा किए जाने की अधिक संभावना है।


1
-1: यह प्रोग्रामर को ईमानदार रखता है - यदि आप जानते हैं कि इसकी समीक्षा की जाएगी, तो लोग कम शॉर्टकट लेंगे। - हम्म ... मैं नैतिक खतरे की शुरुआत के बारे में चिंतित हूँ। यही है, डेवलपर्स आलसी या सुस्त हो सकते हैं क्योंकि वे जानते हैं कि एक अधिक वरिष्ठ डेवलपर हमेशा कोड समीक्षा के रूप में अपने कोड की जिम्मेदारी लेगा।
जिम जी।

1
समीक्षक कोड के लिए बिल्कुल भी ज़िम्मेदारी नहीं लेता है, बल्कि कोड के साथ मुद्दों पर सलाह और निर्देश देता है। मूल डेवलपर को मुद्दों को ठीक करना चाहिए और अभी भी कोड के लिए जिम्मेदार है।
स्टीव

-1

क्या अच्छा प्रोग्रामर छोड़ देते हैं अगर उनकी नौकरी का एक महत्वपूर्ण हिस्सा अन्य लोगों के कोड की समीक्षा करना है?

यदि वे नौकरी का आनंद नहीं ले रहे हैं और इस गतिविधि को करने के लिए मजबूर हैं, तो हाँ। ऐसा होने की बहुत संभावना है। जैसा कि एक अच्छे डेवलपर के लिए अगला दिलचस्प काम खोजना आजकल कोई बड़ी चुनौती नहीं है।

क्या आपके सर्वश्रेष्ठ प्रोग्रामर को स्रोत नियंत्रण में अन्य सभी के कोड की जांच करनी चाहिए?

बिलकुल नहीं। यह उनके समय की बर्बादी के लिए है, कुछ महत्वपूर्ण तर्क को छोड़कर, जो रॉक-सॉलिड अवस्था में होना चाहिए ।

हालांकि, जूनियर या अनुभवी डेवलपर्स शायद एक कोड की गुणवत्ता के लिए परिवीक्षा समय पर होना चाहिए , बस एक सुरक्षित पक्ष पर होना और यह सुनिश्चित करना कि उनका कोड टीम विकास के दिशानिर्देशों का पालन करता है, कम से कम कुछ हफ़्ते पहले खुद को कमिट करने का विशेषाधिकार प्राप्त करने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.