प्रोग्रामर एक प्रोजेक्ट पर एक साथ कैसे काम करते हैं?


81

मैंने हमेशा अकेले प्रोग्राम किया है, मैं अभी भी एक छात्र हूं इसलिए मैंने कभी किसी और के साथ प्रोग्राम नहीं किया, मैंने पहले कभी भी एक संस्करण नियंत्रण प्रणाली का उपयोग नहीं किया है।

मैं अब एक प्रोजेक्ट पर काम कर रहा हूं, जिसमें किसी कंपनी में सॉफ्टवेयर के एक टुकड़े पर प्रोग्रामर के एक साथ काम करने के ज्ञान की आवश्यकता होती है।

सॉफ्टवेयर कैसे संकलित किया जाता है? क्या यह संस्करण नियंत्रण प्रणाली से है? क्या यह व्यक्तिगत प्रोग्रामर द्वारा किया जाता है? क्या यह आवधिक है? क्या यह तब होता है जब कोई निर्माण करने या कुछ करने का फैसला करता है? क्या कोई परीक्षण हैं जो यह सुनिश्चित करने के लिए किए जाते हैं कि यह "काम करता है"?

कुछ भी करेगा।


24
मैंने "नॉट-प्रोग्रामिंग-संबंधित" टैग को हटा दिया क्योंकि टीम के रूप में लोग कैसे प्रोग्राम करते हैं निश्चित रूप से संबंधित प्रोग्रामिंग।
ब्रेंडन लॉन्ग

@ ब्रेंडन लोंग: रेटाग के लिए धन्यवाद।
सिंह जावेद

जवाबों:


60

दरअसल, इन प्रक्रियाओं पर उतनी ही विविधताएं हैं जितनी कि कई कंपनियां हैं। अर्थ: हर कंपनी में दूसरों की तुलना में थोड़ा अलग सम्मेलन होते हैं, लेकिन कुछ सामान्य सर्वोत्तम प्रथाएं हैं जो आमतौर पर ज्यादातर जगहों पर उपयोग की जाती हैं।

सर्वोत्तम अभ्यास जो हमेशा उपयोगी होते हैं

  • परियोजना के सभी स्रोत कोड और इसे बनाने के लिए आवश्यक कुछ भी संस्करण नियंत्रण (जिसे स्रोत नियंत्रण भी कहा जाता है) के अंतर्गत है । कोई भी एक क्लिक के साथ पूरी परियोजना का निर्माण करने में सक्षम होना चाहिए।
    इसके अलावा, अनावश्यक फ़ाइलों (ऑब्जेक्ट फ़ाइलों या संकलित बायनेरिज़) को रिपॉजिटरी में नहीं जोड़ा जाना चाहिए , क्योंकि वे काफी आसानी से पुनर्जीवित हो सकते हैं और रेपो में बस जगह बर्बाद कर देंगे।
  • प्रत्येक डेवलपर को अपडेट करना चाहिए और प्रति दिन कुछ बार संस्करण नियंत्रण के लिए प्रतिबद्ध होना चाहिए । अधिकतर जब वे उस कार्य को पूरा कर लेते हैं जिस पर वे काम कर रहे होते हैं और इसका पर्याप्त परीक्षण करते हैं, तो वे जानते हैं कि इसमें तुच्छ कीड़े नहीं हैं।
  • दोबारा: किसी को भी एक क्लिक के साथ प्रोजेक्ट बनाने में सक्षम होना चाहिए। यह महत्वपूर्ण है और सभी के लिए परीक्षण करना आसान बनाता है। यदि गैर-प्रोग्रामर (जैसे। बॉस) ऐसा करने में सक्षम हैं, तो भी बड़ा फायदा। (यह उन्हें यह देखने में सक्षम बनाता है कि टीम वास्तव में क्या काम कर रही है।)
  • प्रत्येक डेवलपर को रिपॉजिटरी के लिए प्रतिबद्ध करने से पहले उन्हें जोड़ने वाली नई सुविधा या बग फिक्स का परीक्षण करना चाहिए
  • एक सर्वर सेट करें जो रेगुलेटरी (पूर्व निर्धारित अंतराल में) रिपॉजिटरी से खुद को अपडेट करता है और पूरे प्रोजेक्ट में सब कुछ बनाने की कोशिश करता है । यदि यह विफल रहता है, तो यह ई-मेल को टीम के साथ नवीनतम नियंत्रण के साथ संस्करण नियंत्रण के लिए भेजता है (जिसके बाद से यह निर्माण करने में विफल रहा) ने इस समस्या को दूर करने में मदद की। इस अभ्यास को निरंतर एकीकरण कहा जाता है और बिल्ड को नाइटली बिल्ड भी कहा जाता है(इसका मतलब यह नहीं है कि डेवलपर्स को अपनी मशीनों पर कोड का निर्माण और परीक्षण नहीं करना चाहिए। जैसा कि ऊपर उल्लेख किया गया है, उन्हें ऐसा करना चाहिए।)

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

ये सरल चीजें सुनिश्चित करती हैं कि परियोजना नियंत्रण से बाहर न जाए और हर कोई कोड के एक ही संस्करण पर काम करे। निरंतरता एकीकरण प्रक्रिया में मदद करता है जब कुछ बहुत बुरा हो जाता है।

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

यदि वह पर्याप्त नहीं है, तो आप इसे स्वचालित परीक्षण करने के लिए सेट कर सकते हैं, वह भी, यदि यह प्रश्न में परियोजना के साथ संभव है।

कुछ और विचार

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

कुछ उपयोगी लिंक:
निरंतर एकीकरण , डेली बिल्ड आपके मित्र , संस्करण नियंत्रण , यूनिट परीक्षण हैं

उदाहरण:

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

बग ट्रैकिंग सॉफ्टवेयर के लिए, जीरा और बुगज़िला बहुत लोकप्रिय हैं। हमने पिछले कार्यस्थल पर मेंटिस का भी इस्तेमाल किया ।

निरंतर एकीकरण सॉफ्टवेयर के लिए, वहाँ है Teamcity एक के लिए (भी CruiseControl और उसके नेट समकक्ष उल्लेखनीय हैं)।

आपके प्रश्न का उत्तर "परियोजना का मुख्य डिजाइन कौन तय करता है?"

बेशक, वह प्रमुख डेवलपर होगा।
कंपनियों में, लीड डेवलपर वह व्यक्ति होता है जो परियोजना के वित्तीय / विपणन लोगों से बात करता है, और कंपनी की वित्तीय क्षमता के अनुसार, आर्किटेकचर तय करता है, नियोजित उपयोगकर्ताओं से आवश्यकताओं की पूर्ति करता है, और जो समय मिलता है।

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


4
आपको तोड़फोड़ पर विचार करना चाहिए। तोड़फोड़ CVS से बेहतर है, और गिट तोड़फोड़ की तुलना में कहीं अधिक बेहतर है। इसके अलावा, तोड़फोड़ में कुछ विचित्रताएँ हैं, भले ही सीखने में आसान हो। विशेष रूप से प्लगइन्स के रूपों में। हालांकि TortoiseSVN मीठा है (जब विंडोज सिस्टम पर काम कर रहा है)।
श्याम

5
@ श्यम - वास्तव में, मैंने गिट के बारे में सुना है। इसके फायदे हैं, लेकिन मैं "कहीं अधिक बेहतर" नहीं कहूंगा। विशेष रूप से यह देखते हुए कि यह अभी तक एक सभ्य विंडोज क्लाइंट नहीं है। फिर भी, यह एक व्यक्तिगत प्राथमिकता है, इसलिए मैंने इसे अपने उत्तर में जोड़ा।
वेनमो

@ वेनमो: यह प्रोग्रामिंग को उबाऊ नहीं बनाता है? तुरंत अपने कोड का परीक्षण करने और निर्माण की प्रतीक्षा करने में सक्षम नहीं होने और फिर आपके द्वारा लिखे गए का बहुत कम या कोई प्रभाव नहीं देखा जा सकता है? इसके अलावा, परियोजना का मुख्य डिजाइन कौन तय करता है? (भाषा, सुविधाएँ, पुस्तकालय, रूपरेखा, वास्तुकला, आदि)
लियो ज्वेदा

2
@ लीथ जे: 1. सामान्य रूप से काम करना उबाऊ है। धैर्यवान होना एक गुण है। 3. इस बात से कोई फर्क नहीं पड़ता कि कौन परियोजना को डिजाइन करता है, ग्राहक निर्णय लेता है। कोई फर्क नहीं पड़ता कि 'कैसे' अभिनव, शानदार या शानदार विचार है। उद्धार करता है। जीवित रहने के लिए काम करो, काम करने के लिए जीवित मत रहो।
श्याम

1
@ श्यम - मैं व्यक्तिगत रूप से गिट के बारे में एक बात नहीं जानता, और मैं उन चीजों का न्याय नहीं करता जिनके बारे में मुझे कम जानकारी है। इसे ज्वलंत में बदलने की आवश्यकता नहीं है। मतभेदों को यहां अच्छी तरह से समझाया गया है: stackoverflow.com/questions/871/… और मैं Git में तब तक परिवर्तन नहीं करूंगा जब तक कि यह सरल और दिन-प्रतिदिन की चीज हासिल करना इतना कठिन नहीं हो: stackoverflow.com/questions/2733873/… । मुझे एसवीएन का दृष्टिकोण भी बेहतर लगता है और इसे सीखना बहुत सरल है। और मुझे सरल पसंद है।
वेनमो

13

मैं एक छात्र भी हूं, जिसने हाल ही में एक सॉफ्टवेयर इंजीनियरिंग पाठ्यक्रम पूरा किया है, जहां पूरे सेमेस्टर में एक विशाल समूह परियोजना शामिल है। मुझे केवल यह कहने से शुरू करें कि हम 3 लोगों के साथ कर सकते हैं, ऐसा करने के लिए हमें पूरे सेमेस्टर में से 12 का समय लगा। लोगों के साथ काम करना कठिन काम है। संचार कुंजी है।

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

** मैं Redmine जैसे बग ट्रैकर की भी सिफारिश करूंगा। आप सभी के लिए खाते सेट कर सकते हैं, और लोगों को अलग-अलग प्राथमिकताओं के साथ कार्य सौंप सकते हैं, और यह भी देख सकते हैं कि क्या लोगों ने कुछ समस्याओं का ध्यान रखा है, या यदि अधिक आ गए हैं।

और, जैसा कि पहले कहा गया है, यूनिट परीक्षण से बहुत मदद मिलेगी। शुभकामनाएँ! आशा है कि यह मदद की :-)


ऐसा लगता है जैसे आपने समूह परियोजना में वास्तव में एक मूल्यवान सबक सीखा है जो आपके कॉलेज के लिए बहुत अच्छा है। लोगों के साथ काम करना कठिन है लेकिन आप इसे करने में बहुत समय लगा रहे हैं। और यह पुरस्कृत भी हो सकता है।
उच्च प्रदर्शन मार्क

बग ट्रैकर के लिए +1 - जो हम उपयोग करते हैं (दूसरों को नहीं जानते हैं) हमें नोट्स जोड़ने की अनुमति देते हैं, और हम बग के पूरे इतिहास का पालन कर सकते हैं और चीजों को बहुत बेहतर याद रख सकते हैं अगर कुछ तय होने के 3 महीने बाद आता है
रॉक्स

जब मैं यूनी पर था, तो समूह की गतिशीलता, संचार या कमजोर लिंक के कारण समूह में शामिल हर एक परियोजना देने में विफल रही। जब आप किसी कंपनी के लिए काम करते हैं तो यह फायदा होता है कि पूरी तरह से अक्षम या असंबद्ध सहकर्मी (आमतौर पर) उस समय के आसपास नहीं लटकते हैं।
बेंजोल

@ बैंजोल - अधिक सहमत नहीं हो सकता! फ़ीड-बैक हर किसी के लिए धन्यवाद :-)
एलैना आर

8

बड़ी चीजें हैं:

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

अंत में, आपको योजना को पूरा करने की दिशा में एक साथ काम करने की इच्छा की आवश्यकता है। यह सब बहुत कठिन हिस्सा है।


आइटम की आवश्यकताएं निरंतर एकीकरण प्रणाली के रूप में मदद कर सकती हैं, लेकिन वे वास्तव में सूचीबद्ध अन्य चीजों के पहलू हैं।
डोनाल्ड फेलो

8

कैसे प्रोग्रामर एक कंपनी में सॉफ्टवेयर के एक टुकड़े पर एक साथ काम करते हैं

डेवलपर्स कभी भी टीम के रूप में काम नहीं करते हैं। टीमें चूसती हैं। दिलबर्ट मजाकिया नहीं है क्योंकि वह नासमझ जैसा हास्य चरित्र है। वह मजाकिया है क्योंकि वह असली है और लोग उन स्थितियों को पहचानते हैं जो वह अंदर है।

हास्य


7

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

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

आप एक संस्करण नियंत्रण प्रणाली (तोड़फोड़, सीवीएस, गिट, आदि में से एक) और एक निर्माण प्रणाली (उदाहरण के लिए, जावा में चींटी और मावेन हैं) के लिए प्रलेखन में देखना पसंद कर सकते हैं।


यदि बिल्ड परिणाम रिपॉजिटरी में नहीं हैं, तो बड़ी परियोजनाओं के डेवलपर्स टेस्ट बिल्ड कैसे चला पाएंगे? मुझे यकीन नहीं है कि यह केवल मेरी मानसिकता है क्योंकि मैंने हमेशा अकेले काम किया है, लेकिन जब मैं अपना कार्यक्रम चलाता हूं तो मैं हमेशा "काम" की जांच करता हूं।
सिंह जावेद

टेस्ट बिल्ड (और बिल्ड प्रक्रिया द्वारा बनाया गया डेटा) या तो एक इंस्टॉलर में या नेटवर्क शेयर पर एक फ्लैट फाइल सिस्टम के रूप में बंडल किया जाएगा ताकि इसे बस भर में कॉपी किया जा सके। यह उपयोगी है जहाँ आपके पास समर्पित परीक्षक हैं ताकि वे बग फिक्स आदि पर प्रतिक्रिया प्रदान कर सकें
graham.reeds

3

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

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

Microsoft या Google जैसे सबसे बड़े संगठनों में, उनके पास एक पूरी तरह से समर्पित समूह और पूर्ण प्रयोगशाला होगी जो अधिक या कम-से-कम लगातार आधार पर बनेगी, जिससे प्रत्येक रन का परिणाम उपलब्ध होगा। इन संगठनों में बहुत औपचारिक प्रक्रियाएँ और प्रक्रियाएँ होती हैं, जिनके बारे में जाँच की जाती है और कब, क्या कोड समीक्षा प्रक्रियाएँ होती हैं, आदि।


MS और Google में डेवलपर अपने कोड का परीक्षण कैसे करते हैं? आइए इसका सामना करें, चाहे हम कुछ भी करें, जब तक हम अपना कोड संकलित नहीं करते और चलाते हैं, हम कभी भी यह सुनिश्चित नहीं कर सकते हैं कि यह काम करता है।
सिंह जावेद

जैसा कि ऊपर, यह उस टीम पर निर्भर करता है जिस पर आप हैं। विंडोज की तरह सबसे बड़ी टीमों में एक बड़ी और जटिल शाखा संरचना होगी जो व्यक्तिगत सुधारों के स्थानीय परीक्षण की सुविधा देती है, एकीकरण समस्याओं की प्रारंभिक पहचान के साथ जब तक कि यह WinMain तक पहुंच न जाए तब तक शाखाओं को बदल दिया जाता है। जब आपको उत्पाद पर काम करने वाले 5,000 देव और एसडीईटी जैसे कुछ मिले हों तो आपको यही करना होगा। एमएस में BTW, SDETs वास्तव में प्रोग्राम करते हैं, बहुत कुछ। उत्पाद कोड के साथ उनके परीक्षण कोड की जाँच की जाती है और उन्हें समान कोडिंग और गुणवत्ता मानकों को पूरा करना चाहिए।
jfawcett

3

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

बिल्ड को प्रत्येक डेवलपर द्वारा नया कोड जोड़ते समय, या समय-समय पर "बिल्ड सर्वर" द्वारा किया जा सकता है। अंतिम दृष्टिकोण के लिए अधिक सेटअप की आवश्यकता होती है, लेकिन यह जल्द ही त्रुटियों को बनाने में मदद करता है।


2

संक्षिप्त उत्तर - "यह निर्भर करता है"।

वर्तमान में, मैं अपने आप से एक परियोजना पर काम कर रहा हूं, इसलिए मैं वह हूं जो वीसीएस का निर्माण / उपयोग करता है। मुझे अन्य स्थानों के बारे में पता है कि आपके पास प्रोजेक्ट पर काम करने वाली टीमें हैं जो कंपकंपी ईमेल द्वारा एक साथ काम करती हैं । या VCS का उपयोग करके बड़ी (+5) टीमें।

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

वास्तव में, जोएल आपके अधिकांश प्रश्नों के बारे में बात करता है - मैं 10 साल के अभिलेखागार को पढ़ने की सलाह दूंगा - उसके पास यह सभी अत्यधिक उपयोगी जानकारी है, और इसमें से अधिकांश आपके वर्तमान और निकट भविष्य की स्थिति के अनुकूल है।


एसवीएन शायद सीखने के लिए सबसे उपयोगी है, क्योंकि ज्यादातर लोग उन नए-बांटे गए वीसीएस (कम से कम एक व्यवसाय में) का उपयोग नहीं करते हैं।
ब्रेंडन लॉन्ग

1
लगभग कोई भी संस्करण नियंत्रण प्रणाली किसी से बेहतर नहीं है। अपवाद वीएसएस, आरसीएस और एससीसीएस हैं; किसी को भी इस दिन और उम्र में उपयोग नहीं करना चाहिए। (यदि केवल कोई वास्तव में उनका उपयोग नहीं कर रहा था , लेकिन यह एक और कहानी है।)
डोनाल्ड फेलो

@ ब्रेंडन लॉन्ग: पिछले कुछ वर्षों से मैंने जिन व्यवसायों में काम किया है, उन "नए-नए बांटे गए वीसीएस वितरित किए गए हैं (विशेष रूप से मेरे मामले में)।"
PTBNL

@ डॉनल फेलो: आपकी सूची में आरसीएस एकमात्र वीसीएस है जिसका मैंने उपयोग किया है, लेकिन मुझे लगता है कि इसका उपयोग करना कुछ भी नहीं के लिए बेहतर होगा। मैं आपके व्यापक बिंदु से सहमत हूं कि नए को स्थानांतरित करना बेहतर होगा।
PTBNL

@PTBNL: आरसीएस से सीवीएस में प्रवास करना बहुत आसान है। मुख्य चीज़ जो आपको दूर करने के लिए मिली है, वह भंडार है जो किसी को छुट्टी पर चले गए हैं! मुझे इसमें कोई संदेह नहीं है कि सीवीएस की तुलना में बेहतर संस्करण नियंत्रण प्रणाली हैं, लेकिन यह निश्चित रूप से व्यवहार में काम कर सकता है।
डोनाल्ड फेलो

1

उचित प्रोग्रामिंग एक गहरी चीज है जो अनुभव से बहुत लाभान्वित होती है। पेयर-प्रोग्रामिंग जागरूकता के कई प्रोसेसरों को चलाने जैसा है ... एक दूसरे द्वारा देखी गई किसी चीज़ को अनदेखा कर सकता है और जब तक वे इसे संप्रेषित कर रहे हैं, इसके परिणामस्वरूप बहुत प्रगति हो सकती है।


5
यह सवाल के साथ क्या करने की बात नहीं है।
डेनबैन

1
/ असहमति - मेरे रेकॉर्डिंग जोड़ी-प्रोग्रामिंग द्वारा सबसे दिलचस्प और अक्सर यहां तक ​​कि 'प्रोग्रामर के एक प्रोजेक्ट पर एक साथ काम करने का सबसे उत्पादक संस्करण' है ... जो अनिवार्य रूप से सवाल था। बेशक यह एक सूक्ष्म जगत है, लेकिन वास्तव में मेरा पसंदीदा एक है।
१५:३४ पर हरदौरी

1

सबसे पहले, टीम रिपॉजिटरी का उपयोग करके काम करती है (जो पेशेवर संस्करण नियंत्रण हो सकता है, या बस निर्देशिका का एक गुच्छा है जिसे 'लाइव' माना जाता है, हालांकि एक संशोधन नियंत्रण प्रणाली वास्तव में मानक है)। इसके अलावा, परियोजना की रणनीति कैसे प्रबंधित की जाती है यह इस बात पर निर्भर करता है कि आप कैसे काम करते हैं (झरना, चुस्त, आदि)। यदि आप पुनरावृत्तियों में काम करते हैं, तो आप ऐसे घटकों / प्लगइन्स / मॉड्यूल / लाइब्रेरीज़ का निर्माण करते हैं जो आत्मनिर्भर हैं, और आप इकाई परीक्षण करते हैं, जब तक कि इसके समाप्त होने पर हस्ताक्षर नहीं किए जाते। एक टीम के रूप में, आप एक टीम में काम करते हैं जिसका मतलब है कि आप एक ही समय में पूरे प्रोजेक्ट पर काम नहीं करते हैं। इसके बजाय, आपको प्रोजेक्ट के दायरे में प्रदर्शन करने के लिए एक कार्य मिलता है। कुछ अवसरों पर आपको कोड को ठीक करना होगा जो आपका नहीं है, लेकिन यह आमतौर पर तब होता है जब एक अजीब व्यवहार होता है। मूल रूप से, आप उन भागों का परीक्षण कर रहे हैं जो आप विकसित करते हैं।

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

मुझे आशा है कि यह आपके लिए कुछ मदद है!


0

आमतौर पर, स्रोत नियंत्रण प्रणाली में स्रोत कोड होता है और आमतौर पर बायनेरिज़ नहीं होता है। यदि आप इसे बनाना और चलाना चाहते हैं, तो आप कोड की जाँच करेंगे और इसे अपने स्थानीय मशीन पर बनाएंगे।

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


0

स्रोत नियंत्रण का उपयोग करने की एक विधि का एक अच्छा परिचय एरिक सिंक के स्रोत नियंत्रण HOWTO http://www.ericsink.com/scm/source_control.html है

अपने उदाहरणों में वह SourceGear वॉल्ट का उपयोग करते हैं क्योंकि उन्होंने इसे और सभी लिखा है, लेकिन तरीकों को अन्य संस्करण नियंत्रण प्रणालियों पर लागू किया जा सकता है।


0

यह फिर से एक अच्छा कारण है कि किसी को ओपन सोर्स प्रोजेक्ट्स पर ध्यान देना चाहिए।

प्रमुख डेवलपर्स जो बड़े OpenSource प्रोजेक्ट्स में काम करते हैं (जैसे क्रोमियम, मोज़िला फ़ायरफ़ॉक्स, MySQL, पॉपुलर ग्नू सॉफ्टवेयर) पेशेवर हैं। उनके पास बहुत अनुभव है और ये परियोजनाएं सैकड़ों ऐसे पेशेवरों के विचारों के साथ विकसित हुई हैं।

अन्य सभी ने अपने उत्तर (प्लान, वर्जन कंट्रोल सिस्टम, इश्यू ट्रैकर, नोटिफिकेशन सिस्टम, बिल्ड सिस्टम, टेस्ट सूट) का उल्लेख किया है, जो इन ओपनसोर्स परियोजनाओं में पाया जा सकता है।

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

पुनश्च: मैं भी एक छात्र हूं और ओपनसोर्स परियोजनाओं में शामिल होना मेरे जीवन में सबसे अच्छी बात है। मुझ पर विश्वास करो! आप भी ऐसा ही महसूस करेंगे।


OpenSource का उल्लेख करना - यह लिखने का एक अजीब तरीका है - जब वे डेटाबेस कनेक्शन की जानकारी और जैसे स्रोत फ़ाइलों की जांच करते हैं, तो वे उस जानकारी को उन लोगों से कैसे बचाते हैं जो चीजों को गड़बड़ाना चाहते हैं?
लियो जवेदा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.