कैसे साबित करने के लिए एक आवेदन एक खराब कोडबेस पर बनाया गया है?


23

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

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


6
programmers.stackexchange.com/questions/59050/… हो सकता है कि "बड़े पुनर्लेखन" को कितनी बुरी तरह से किया जाए जो आमतौर पर एक व्यावसायिक दृष्टिकोण से समाप्त होता है। यह वही होगा जो एक अधिक "वरिष्ठ स्तर" प्रोग्रामर करेगा।
क्वेंटिन-स्टारिन

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

1
@JasonLewis: (मैं अनुमान लगा रहा हूं कि आपने मेरी पिछली टिप्पणी में लिंक का अनुसरण नहीं किया है?) ऐसा लगता है कि किसी ऐसे व्यक्ति के लिए सलाह दी जाती है जो एक साल से भी कम समय में आत्म-वर्णित होता है, जिसमें महत्वपूर्ण कौशल की कमी होती है, जो एक वरिष्ठ स्तर का होता है। ' टी पता है कि एक नई परियोजना शुरू करते समय कहां से शुरू करें।
क्वेंटिन-स्टारिन

5
@JasonLewis मैं आपसे पूरी तरह सहमत हूँ। हर बार जब कोई एसई में किसी ऐप को फिर से लिखने के बारे में पूछता है तो बहुत से लोग यह कहते हैं कि "एक बड़ा पुनर्लेखन मत करो" विचारधारा। मुझे लगता है कि ऐसा करने के लिए निश्चित रूप से कई कारण हैं, लेकिन आपको हर कीमत पर इससे बचना नहीं चाहिए। मैंने कोड ऐप की 100k लाइनों के पुनर्लेखन में भाग लिया है और हमने जो कुछ भी वर्णित किया है, उसी के अनुरूप आपको बहुत सफलता मिली है। हम इसे मॉड्यूल (यूआई का पहला हिस्सा, फिर सर्वर, फिर बाकी) द्वारा मॉड्यूल को फिर से लिखने में सक्षम थे। 12 महीने बाद हमारे पास एक बहुत खुश ग्राहक आधार है और हर किसी को हमारे द्वारा लिए गए निर्णय पर गर्व है।
एलेक्स

2
यह अधिक सामान्य समस्या का हिस्सा है: आपके पूर्ववर्ती के दीर्घकालिक परिणामों पर तत्काल परिणाम के लिए। ओवर लेते समय, आपको यह समझाना होगा कि आप समान आउटपुट क्यों नहीं रख सकते हैं।
डेविड थॉर्नले

जवाबों:


23

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

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

अंत में, यदि आप किसी अन्य विभाग के डेवलपर से काम कर सकते हैं, जिस पर आप भरोसा करते हैं, तो कोड पर आंखों की एक दूसरी जोड़ी प्राप्त करें। एक डेवलपर ने कहा कि 'यह बकवास है' को खारिज करना आसान है, जब एक वरिष्ठ डेवलपर जो उसके पास थोड़ी देर के लिए गया हो और कहता है, 'नहीं, जिम, वह सही है। यह एक बकवास क्रैकर है। '

बेशक, यह सब आपके पर्यावरण, कंपनी के आकार, आदि पर निर्भर करता है।

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


7
कोई डॉक्स नहीं हैं और कोड बहुत अधिक अप्राप्य है जब तक कि हम उससे बाहर नरक को रिफैक्ट करने नहीं जा रहे हैं। मुझे पूरा विश्वास है कि मैं कई सहयोगियों द्वारा समर्थित किया जा रहा हूँ ताकि चर्चा में एक और डेवलपर को मदद मिल सके।
क्रिस 29

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

यदि आप कुछ लोड टेस्टिंग सॉफ़्टवेयर का उपयोग कर सकते हैं, तो आप यह बता सकते हैं कि यह एक उच्च भार के तहत कैसे टूट सकता है।
HLGEM

13

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

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

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

मैं अपने हितधारकों को इस तरह से अपनी चिंताओं को दूर करने का सुझाव दूंगा जिसमें यह सुझाव दिया गया है कि सॉफ्टवेयर ने अपने मूल डिजाइन को आगे बढ़ाया है और अब इसे जारी रखने के लिए समस्याग्रस्त है।


5

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


हां, मैंने औसत साइक्लोमैटिक जटिलता की गणना करने और तर्क के रूप में उपयोग करने के बारे में सोचा है, लेकिन मुझे यकीन है कि यह प्रबंधन के लिए एक बात साबित नहीं होगी। लेकिन यह एक कोशिश के लायक है, thnx
क्रिस 37

5
@ क्रिसमकर्स: एक प्रबंधक के लिए कुछ भी "सिद्ध" नहीं किया जा सकता है। "प्रमाण" भूल जाओ। डेटा एकत्रित करें। तथ्य आपके पास हैं। अधिक तथ्य अधिक आश्वस्त करते हैं। लेकिन कोई "प्रमाण" नहीं है।
एस.लॉट

4

एक उदाहरण चुनें जो यह समझना आसान है कि प्रबंधन कहां सोचता है कि यह एक साधारण बदलाव का अनुरोध है, लेकिन मौजूदा डिजाइन के कारण यह अधिक कठिन है।

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

लोड टेस्टिंग के लिए सुझाव एक अच्छा तरीका हो सकता है, लेकिन वे इस बात को लेकर आश्वस्त नहीं हो सकते हैं कि बढ़ी हुई चिंताएं किसी भी वास्तविक विश्व विकास क्षमता को पूरा करती हैं (कंपनी एक साल में दोगुनी नहीं होने वाली है।)

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


1
परिवर्तन करने के बाद, अलग फाइल दिखाएं, जो एक खराब कोडबेस में कई अलग-अलग स्रोत फ़ाइलों को स्पर्श करेगी, एक "क्या है इसके साथ क्या करना है?" तत्व, आदि का प्रबंधन करने के लिए समझाइए कि यह काम कितना है, अर्थात, समय == $ $, खराब कोडबेस से संबंधित था और जो परिवर्तन आगे चल रहे हैं, उन सभी में यह विशेषता होगी।
लैरी ओब्रायन

3

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

आपके मामले में, मुझे लगता है कि साबित करने के लिए 2 चीजें हैं।

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

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

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

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

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

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

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


2

मुझे लगता है कि यह निर्भर करता है कि कोड आधार के बारे में क्या बुरा है। "जिस तरह से मैं चीजों को नहीं करूंगा" होने का मतलब यह नहीं है कि यह एक बुरा कोड आधार है।

चीजें जो वास्तव में एक बुरा कोड-आधार बनाती हैं:

  • सुरक्षा के छेद

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

  • वर्किंग ब्रोकन

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

  • वास्तव में काम नहीं करता है

    यह काम करने के लिए प्रकट होता है लेकिन परिणाम गलत हैं। यह आम तौर पर लाइन की समस्याओं का कारण बनता है जैसे संख्याओं का मिलान नहीं होना, उच्च दोष दर, आदि।

क्या बुरा कोडबेस नहीं है (सिर्फ अच्छा नहीं):

  • अप्रचलित असमर्थित तकनीक पर लिखा गया। (VB6, COBOL, .net1.1 आदि)

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

  • अनजाने / खराब प्रारूपित कोड

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


1

आपने एक तरह से अपने ही सवाल का जवाब दिया है।

सिस्टम पर पैसा खर्च करने के लिए उन्हें समझाने का तरीका यह है कि जब तक यह उपयोगकर्ता के लिए अच्छी तरह से काम नहीं करता है, तब तक प्रतीक्षा करें। अगर आपको लगता है कि यह पैमाना नहीं होगा, तो इसे होने के लिए प्रतीक्षा करें या इसे साबित करने के लिए लोड टेस्ट करें।

इसके बाद इस पैमाने पर सफाई का एक सरल प्रस्ताव एक्स घंटे खर्च होंगे।


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

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

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

1
@ जैसनवेलिस अगर कंपनी में खिलाड़ी जैसे वाक्यांशों का उपयोग कर रहे हैं, I told you soतो वह दोष की एक विषैली संस्कृति है, न कि ऐसी जगह जो ओपी लंबे समय तक काम करना चाहेगी। एक अच्छा प्रबंधक दोष नहीं देता है, एक अच्छा प्रबंधक समस्याओं को स्वीकार करता है और एक योजना के साथ आता है।
maple_shaft

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

1

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

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

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

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


1

पहले अपने कोडबेस में संचित तकनीकी ऋण का निर्धारण करें। फिर इस सवाल और जवाब पर एक नज़र डालें , जहां यह समझाया गया है कि आगे बढ़ने से पहले तकनीकी ऋण का भुगतान करने के लिए प्रबंधन को कैसे समझा जाए।


0

कारण है कि सभी परिपक्व सॉफ्टवेयर गड़बड़ की तरह दिखते हैं:

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

इस प्रकार के रवैये से प्रोग्रामर बड़े पैमाने पर तकनीकी ऋण को अज्ञानता या आलस्य से बाहर निकालने के लिए प्रेरित करते हैं। एक प्रोग्रामर का काम सार के उपयोग के माध्यम से व्यावसायिक तर्क को सांकेतिक शब्दों में बदलना है। म्यूटेबल बारीकियों को मेटाडेटा में रहना चाहिए, न कि हार्ड-कोडेड मैजिक नंबर। दूसरे, 'थोड़ा पुराना' व्यक्तिपरक हो सकता है। IMHO, 'थोड़ा पुराना' का अर्थ है कि ढांचा / मंच अभी भी सक्रिय रूप से विकसित है, और मेरे पास अपग्रेड पथ है। विकल्प 'अप्रचलित' है। नंबर 3 अक्षम्य है। आपने अभी-अभी cruft का वर्णन किया है। किसी ने कोड आधार को अपवर्तित या साफ नहीं किया है, और यह स्वीकार्य है?
जेसन लुईस

यकीन है, लेकिन आपके द्वारा सार के उपयोग के माध्यम से व्यावसायिक तर्क को एन्कोड करने के बाद परिणाम क्या है ... कोड जटिल दिखने वाला है। यही "गड़बड़" की परिभाषा है। , (3) जटिल नहीं है, क्योंकि जटिलता अभी भी आवश्यक है; समस्या के हल होने के बाद भी इसे गायब करने की आवश्यकता नहीं थी।
tp1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.