कॉलेज के छात्रों के साथ एक विकास प्रक्रिया को कैसे लागू किया जाए


9

एक सॉफ्टवेयर डेवलपर के रूप में मेरी पहली नौकरी में, मेरी टीम ने हमारे प्रोजेक्ट वर्कफ़्लो को प्रबंधित करने के लिए फुर्तीली / घबराहट का इस्तेमाल किया और इसने बहुत अच्छा काम किया। मेरे पास कुछ अनुभवी संरक्षक थे जिन्होंने मुझे सही रास्ते पर स्थापित किया - मैंने उन्हें कृतज्ञता का एक बड़ा ऋण दिया। मैंने कुछ वर्षों तक वहां काम किया, फिर कुछ महीने पहले एक नए अवसर पर चले गए।

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

मैं सभी को ट्रैक पर लाने, कोड की गुणवत्ता बढ़ाने और अधिक स्थिर सॉफ़्टवेयर को लागू करने में मदद करने के लिए एक विकास प्रक्रिया को लागू करना चाहता हूं। मुझे यकीन नहीं है कि कहाँ से शुरू करूँ।

मैं "प्रति स्क्राम का उपयोग करें", "एक कंबन बोर्ड सेट करें", या "फुर्तीले पर नज़र रखना" जैसे उत्तरों के लिए नहीं कह रहा हूँ ! (हालांकि विचारों की सराहना की जाती है)। अधिक विशेष रूप से, मैं इस काम के माहौल के लिए एक विकास प्रक्रिया को लागू करने के तरीके में अंतर्दृष्टि प्राप्त करने की उम्मीद कर रहा हूं । कर्मचारी आमतौर पर आगे बढ़ने से पहले 1 से 2 साल के बीच काम करते हैं, आम तौर पर अनुभवहीन होते हैं, और दैनिक स्टैंडअप मीटिंग्स जिनमें सभी को शामिल करना असंभव होता है अनुसूची के लिए होता है।

इस तरह के कार्यस्थल में एक पालक गुणवत्ता, दक्षता और संचार कैसे करता है?

अपडेट: कुछ उत्तरों और टिप्पणियों को पढ़ने के बाद, मैंने सोचा कि मैं कुछ अतिरिक्त पृष्ठभूमि प्रदान करूंगा।

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

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


क्या डेवलपर्स अपने स्वयं के क्यूए के लिए जिम्मेदार हैं?
svidgen

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

इसलिए, मुझे लगता है कि हम अंशकालिक छात्र डेवलपर्स की एक टीम के बारे में बात कर रहे हैं? और आप? ... किसी भी पूर्णकालिक या वरिष्ठ डेवलपर्स (> = 10 साल का अनुभव) टीम में सभी पर?
svidgen

एक युगल पूर्णकालिक देवता हैं जो दूर से काम करते हैं, लेकिन हम उन्हें (या बिल्कुल भी) नहीं देखते हैं। कार्यालय में, हाँ, कर्मचारी सभी अंशकालिक छात्र हैं। मैं वर्तमान में पूरा समय काम कर रहा हूं, लेकिन जल्द ही मास्टर्स प्रोग्राम शुरू कर रहा हूं, ताकि इसमें बदलाव हो;) मुझे 5 साल का अनुभव है, बहुत सारे प्रोजेक्ट मैनेजमेंट का अनुभव नहीं है।
अंधेरे

अभी तक पूर्ण उत्तर के लिए समय नहीं था। लेकिन, सिर्फ कुछ पर विचार करने के लिए: मैं लगभग 20 वर्षों से कोड लिख रहा हूं। पेशेवर सेटिंग में कम से कम 10 साल, अन्य सुंदर वरिष्ठ लोगों के बीच। अनुभवी सॉफ्टवेयर देवों को "अच्छा" और "बुरा" कोड में विविधता विशाल है । एक अच्छा पहला कदम कलाकारी हो सकता है जो कोड को "अच्छा" या "बुरा" बनाता है एक तरह से वह सीमाएं प्रदान कर सकता है जिसमें प्रयोग को प्रोत्साहित किया जाता है, रचनात्मकता और नवाचार को पुरस्कृत किया जाता है, और आपके अनुभव और राय को मूल्यवान माना जाता है, लेकिन अंततः सीमित है
svidgen

जवाबों:


4

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

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

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

फिर हम समीक्षा प्रक्रिया के लिए आते हैं । आप जो सवाल कर रहे हैं वह थोड़ा अस्पष्ट है कि क्या ऐसे अनुभवी डेवलपर भी हैं जिनके फैसले पर छात्रों से ज्यादा भरोसा किया जा सकता है। तो मुझे किसी भी तरह से विस्तृत करें:

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

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

इस तरह के कार्यस्थल में एक पालक गुणवत्ता, दक्षता और संचार कैसे करता है?

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

कुछ अच्छे उत्तर थे, लेकिन यह सबसे गहन और प्रत्यक्ष था, धन्यवाद!
१५:५०

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

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

8

पर्यावरण के उस प्रकार के लिए सबसे बड़ी बात जहां लोग नए हैं और छोड़ने की संभावना अनिवार्य कोड समीक्षाएं हैं।

वे ज्ञान का प्रसार करने में मदद करते हैं कि क्या किया जाना चाहिए। वे सबसे खराब कोड को कोडबेस में जाने से रोकने में मदद करते हैं। वे कार्यान्वयन में स्थिरता को बढ़ावा देते हैं।

क्योंकि इतना टर्नओवर और अनुभवहीनता के साथ, संचार आमतौर पर जितना महत्वपूर्ण है, उससे अधिक महत्वपूर्ण है।


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

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

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

2

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

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

चीजों को एक निश्चित तरीके से करने के स्पष्टीकरण के साथ टिप्पणी या अन्य दस्तावेज जोड़ना भी नए डेवलपर्स को बेहतर कोड प्रथाओं के साथ अधिक तेज़ी से गति प्राप्त करने में मदद करेगा।


2

निरंतर एकीकरण -

यह टीम टूल्स, कौशल और प्रक्रियाओं के वृद्धिशील और लचीले कार्यान्वयन के लिए एक व्यावहारिक और वैचारिक ढांचा है।

सीआई लेखन कोड से तैनाती तक एक कार्य प्रवाह का विचार है। ये कार्य वैचारिक और वास्तव में स्वतंत्र हैं।

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

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

  • रणनीतिक बनो

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

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

गुणवत्ता के लिए सड़क

  • इकाई का परीक्षण

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

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

    • विस्तार में कोड गुणवत्ता में सुधार के लिए यह सबसे बड़ी क्षमता है।
    • एक 2 समीक्षा प्रक्रिया का उपयोग करें।
      • मैं इस बात से बहुत हैरान था कि एक दूसरे की समीक्षा में कितने कीड़े पड़ते हैं।
      • विश्वास करो किन्तु सत्यापित करो। कोड चलाएँ। आपको भी ऐसा क्यों कहना चाहिए? तुरंत ऊपर देखें।
      • प्रारंभ में आप एकमात्र समीक्षक होंगे। क्या टीम आपकी समीक्षा करती है "लाइव।" वे कभी नहीं सीखेंगे कि कैसे सोचना है।
      • जल्द ही आप सिर्फ दूसरे समीक्षक होंगे। व्यक्तिगत कौशल वारंट के रूप में उनकी समीक्षा की है; अंततः दोनों समीक्षक। आप निश्चित रूप से हमेशा अपवाद के बिना, कोड को देख रहे होंगे।
  • पुनर्रचना

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

    • बेसलाइन टूल कॉन्फ़िगरेशन: संस्करण नियंत्रण, आईडीई, सीआई उपकरण, ओएस, आदि।
    • स्रोत कोड, प्रलेखन, कॉन्फ़िगरेशन को संस्करण नियंत्रण में सिंक करना चाहिए।

प्रक्रिया के बारे में एक शब्द

फुर्तीली (और इसकी उप-शैलियां जैसे स्क्रम): इसे भूल जाओ। "तुम फुर्तीले हो, तुम फुर्तीले नहीं हो।" डेव थॉमस द्वारा देखें, एजाइल मेनिफेस्टो के मूल हस्ताक्षरकर्ताओं में से एक ।

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


उपकरण के बारे में एक शब्द

सिर्फ मैं। उन "बेस्ट सॉफ्टवेयर टूल्स नाउ ..." से क्लिक करें- शहद के बर्तन पर क्लिक करें।

जेनकींस

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

संस्करण नियंत्रण

मैं Git पर Mercurial पसंद करता हूं। यह ब्लॉग पोस्ट यही है कि मैंने मूल रूप से मर्क्यूरियल को चुना: गिट मैकगाइवर है, मर्क्यूरियल जेम्स बॉन्ड है

तोड़फोड़ अच्छी है। मर्क्यूरियल और गिट में एक अलग वास्तुकला है जो कि तोड़फोड़ से बेहतर है।

समन्वित विकास पर्यावरण

यदि सभी अलग-अलग कोडिंग टूल का उपयोग करते हैं, तो यहां एक बड़ा वसा विचार है: प्लेन टेक्स्ट के रूप में ऐसी कोई बात नहीं है


व्यावसायिक पुस्तकालय के बारे में एक शब्द

इंटरनेट व्यापक, उथला और अव्यवस्थित है।

  • स्टीव मैककोनेल द्वारा कोड पूरा
    • सभी को बीच में तीसरा पढ़ा दें।
    • सुझाए गए पेशेवर पुस्तकों का परिशिष्ट है।
  • Refactoring: मौजूदा कोड के डिजाइन में सुधार
    • संहिताबद्ध रीफैक्टरिंग व्यंजन जो प्रेरित-बग मुक्त कोड परिवर्तन सुनिश्चित करते हैं।
  • सॉफ्टवेयर की विफलता। कोई विशिष्ट सिफारिश नहीं है, लेकिन यह कहानियों का एक विज़न होना चाहिए।

0

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


1
एक लंब प्रोटोटाइप क्या है; आप अपने उत्तर के विस्तार पर विचार कर सकते हैं, बल्कि यह उतना ही कठिन है।
esoterik

मुझे क्षमा करें, मेरे पास आज सुबह का समय बहुत कम था। सबसे पहले, एक [ऊर्ध्वाधर प्रोटोटाइप] (tutorialspoint.com/sdlc/sdlc_software_prototyping.htm) एक प्रकार का प्रोटोटाइप है जिसका अर्थ है कि आप किसी भी कार्यक्षमता को लागू किए बिना अपने सॉफ़्टवेयर का पूरी तरह से निर्माण करते हैं। लाभ यह है कि सबसे पहले माना जाने वाला ग्राहक यह देख सकता है कि उत्पाद कैसा दिख सकता है, दूसरी बात यह है कि यह डेवलपर को इस बात की अच्छी अनुभूति कराता है कि कार्यक्षमता "क्या होना चाहिए" / इसे प्रदान करने के लिए क्या डेटा चाहिए।
ghahaos

क्या आप "बल्कि कविता" से मतलब है? परियोजना प्रबंधन का प्रकार निर्धारित करना कठिन है क्योंकि यह विभिन्न चीजों पर निर्भर करता है, जैसे कि आपकी परियोजना क्या है? आपकी टीम कितनी बड़ी है? उदाहरण के लिए स्कैम में भी आपको एक स्कैम-मास्टर की आवश्यकता होती है, जिसे स्क्रम के बारे में गहरी जानकारी होनी चाहिए। मैंने सिर्फ इस बात पर विचार करने की कोशिश की कि परियोजना प्रबंधन के लिए यह एकमात्र उत्तर नहीं है।
ghahaos

0

यदि आप पहले से ही नहीं हैं तो मैं आपको स्रोत नियंत्रण का उपयोग करने के लिए प्रोत्साहित करूंगा। यह आपको यह देखने की अनुमति देता है कि प्रत्येक डेवलपर द्वारा क्या-क्या चेक-इन किया गया था और यह पता लगाने की अनुमति देता है कि बग को कहां शुरू किया गया था।

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

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

यह आपके छात्रों को "वास्तविक दुनिया" में किस तरह का काम करने के लिए तैयार करेगा और उनमें कुछ यथोचित आदतों को पैदा करेगा।

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