तकनीकी ऋण से निपटने के लिए मैं प्रबंधन को कैसे मना सकता हूं?


158

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

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


5
"डेवलपर्स के साथ काम करना" "इसे प्रबंधन से संवाद करें" आप किसके बारे में पूछ रहे हैं? डेवलपर्स या प्रबंधक? आप किसका व्यवहार बदलना चाहते हैं?
S.Lott

45
तकनीकी ऋण वित्तीय ऋण की तरह है - लंबे समय में इसे शुरू करने के लिए बस जमा नहीं करना बहुत आसान है। सप्ताह में एक बार अपने सभी तकनीकी बिलों का भुगतान करें।
लॉरेंस डॉल

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

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

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

जवाबों:


191

जब मैं इस बारे में चर्चा करने के लिए अपने बॉस से मिला, तो उन्होंने कहा कि मुझे अपने सभी अनुमानों में शामिल होना चाहिए। उन्होंने कहा कि यह ऐसी समस्या नहीं है जिसके बारे में वह सोचना चाहते हैं। इसके बजाय, मुझे इसे संभालना चाहिए।

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

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


30
मेरा अनुभव आम तौर पर इस की तर्ज पर है। नई सुविधाओं को जोड़ते ही तकनीकी ऋण साफ हो जाता है। कभी-कभी इन चीजों को साफ करने के लिए कुछ 'संबंधित' सुधारों / सुविधाओं के अनुमानों को शामिल किया जाता है।
केन हेंडरसन

4
+1। आप मेरी भावनाओं को बिल्कुल साझा करते हैं ... सिवाय इसके कि आपने खुद को बहुत अधिक कूटनीतिक रूप से व्यक्त किया है;)
माइकल ब्राउन

7
अच्छा उत्तर। मुझे अभी तक एक ऐसा व्यवसाय देखना है जो एक 'रीफैक्टरिंग' परियोजना पर हस्ताक्षर करने में प्रसन्न है जो ग्राहक को कोई लाभ नहीं देगा, केवल स्तरीय कोड। Refactor-के रूप में-यू-गो।
JBRWilkinson

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

8
@ jmort253: इस अन्यथा उत्कृष्ट नीति के साथ एक (मामूली) मुद्दा है -> यह व्यापक परिवर्तनों (जैसे डेटाबेस को ओपी द्वारा कहा गया है) बदलना संभव नहीं है। जिन्हें स्पष्ट रूप से संबोधित किया जाना चाहिए।
मैथ्यू एम।

48

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

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

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

लेकिन यहां बात यह है कि जो कंपनियां गुणवत्ता-पहला दृष्टिकोण लेती हैं ... आप उनके बारे में क्या नोटिस करते हैं? यह सही है, वे इंजीनियर द्वारा चलाए जा रहे हैं, न कि सेल्समैन, मार्केटर्स, प्रोजेक्ट मैनेजर या अकाउंटेंट। HP, Apple, id, Google, Microsoft और IBM के बारे में सोचें। सभी ने इंजीनियरों द्वारा शुरू किया और सफल बनाया, न कि सेल्समैन, हालांकि सेल्समैन ने निश्चित रूप से एक भूमिका निभाई, और मुझे यकीन है कि कई Microsoft गुणवत्ता से जुड़े होने पर बहस करेंगे :)। और उनमें से, जो नीचे चला गया, इंजीनियरिंग-संचालित नेतृत्व से दूर हो गया। उस बयान में तर्कों की एक पूरी मेजबानी है, हालांकि, बहुत सारी तकनीकी कंपनियां हैं जो अंततः बदलते समय के अनुकूल होने और अपनी स्वयं की वृद्धि का प्रबंधन करने में असमर्थता के कारण विफल रहीं। मैं उन असफलताओं के कारण के रूप में इंजीनियरिंग-आधारित नेतृत्व नहीं देखता, जो मेरे लिए है ' कौशल और व्यावसायिक कौशल का एक मुद्दा है जो किसी के लिए एक डेवलपर या एक एकाउंटेंट होने से स्वतंत्र है। मुझे लगता है कि आम तौर पर बोलना, हालांकि, इंजीनियरिंग में जवाबदेही और अनुशासन की कठोरता के लिए एक समर्पण है जो उन कंपनियों को लाभ पहुंचाता है जहां इंजीनियरिंग एक घटक है।

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

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


43

पहली बात यह है कि शब्दों को बदलना है। इसे "तकनीकी ऋण" कहना प्रबंधन को यह विचार देता है कि यह किसी प्रकार का निवेश है - जब वास्तव में यह वायरस की तरह अधिक होता है। (मैं तकनीकी ऋण के डेव रैमसे की तरह हूं ।)

अवैतनिक रूप से जाने के लिए इसे देना एक बड़ी लागत के साथ आता है जिसे आसानी से नहीं देखा जा सकता है।

सूची की समस्याओं जैसे प्रबंधन के लिए निम्नलिखित हैं:

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

7
+1, हालाँकि मुझे लगता है कि अंतिम गोली "अच्छी / सर्वश्रेष्ठ टीम के सदस्य छोड़ रहे हैं"
केन हेंडरसन

12
बिट तकनीकी ऋण है एक निवेश कभी कभी। यदि आप किसी अन्य कंपनी के साथ दौड़ रहे हैं और सबसे पहले लॉन्च करने वाले को खुद के लिए बाजार मिलता है, तो यह तेजी से लॉन्च करने के लिए कोड में शॉर्टकट बनाने के लिए समझ में आता है। कोई भी परवाह नहीं करेगा कि यदि आपके पास शून्य भुगतान करने वाले ग्राहक हैं तो आपके पास सही कोड है।
quant_dev 10

3
@quant_dev यदि आप इसे "तेज" और "सही कोड" के बीच एक द्वंद्ववाद के रूप में देखते हैं, तो निश्चित रूप से आप इस तरह से सोचेंगे। कोई कारण नहीं है कि शॉर्टकट तकनीकी रूप से ध्वनि नहीं कर सकते हैं जिस स्थिति में उन्हें तकनीकी ऋण नहीं माना जाता है।
निकोल

2
@ रेनेसिस "कोई कारण नहीं है कि शॉर्टकट तकनीकी रूप से ध्वनि नहीं हो सकते" - यह सिर्फ सच नहीं है।
मात्रा_देव

3
और कभी-कभी यह तकनीकी ऋण बिल्कुल नहीं है, यह सिर्फ एक गड़बड़ है: sites.google.com/site/unclebobconsultingllc/…
TrueWill

30

मेरे प्रबंधन ने वास्तव में तकनीकी ऋण को संबोधित करने के लिए एक गंभीर प्रयास करना शुरू कर दिया है, जो उन कारणों में से एक है जो मुझे वहां काम करना पसंद है, लेकिन यह एक दीर्घकालिक प्रयास है और यह कभी भी यह याद दिलाने के लिए दर्द नहीं करता है कि प्रयास इसके लायक क्यों है।

एक तरह से मैं दबाव बनाए रखता हूं, जब भी मुझसे एक अनुमान के लिए कहा जाता है, और समय बचाया जा सकता था अगर मुझे विशिष्ट तकनीकी ऋण मुद्दों से निपटना नहीं था, तो मैं इसे अपने अनुमान में शामिल करता हूं । उदाहरण के लिए, " इस बग को नीचे ट्रैक करने में मुझे 2-3 दिन लगेंगे, लेकिन अगर हम पहले से ही इन 2 अन्य 'कम प्राथमिकता वाले' कीड़ों को संबोधित कर चुके थे, जो हमेशा के लिए कतार में हैं, तो यह संभवतः एक से भी कम समय लेगा। " अक्सर। प्रतिक्रिया तब होगी जब आप उस पर हों और उन दूसरे को ठीक कर लें।

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

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

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


20

आप क्रेडिट कार्ड सादृश्य की कोशिश कर सकते हैं। उनसे पूछें "क्या आप समय की विस्तारित अवधि में अपने क्रेडिट कार्ड के बयानों को अवैतनिक छोड़ने में सहज महसूस करते हैं?"

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

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


12

कोई भी उस चीज़ को बदलने के लिए पैसा नहीं देगा जो किसी और चीज़ के साथ काम करती है (किसी भी भाग्य के साथ) भी काम करती है।

आप जो कुछ भी कर सकते हैं, उसे कुछ ऐसा करने का प्रस्ताव है, जो तकनीकी ऋण की सर्विसिंग को एक उन्नयन में बंडल करता है, जो तत्काल और मूर्त व्यावसायिक लाभ लाता है।

बेशक आपको इसके बारे में खुला होना चाहिए, हम यहां एक नई परियोजना में "इसे छींकने" के बारे में बात नहीं कर रहे हैं।

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

किसी भी प्रकार की समझाने से उस स्थिति में परिवर्तन नहीं होगा, और यदि आप एक अनिवार्य कोड गुणवत्ता मानक का परिचय देते हैं, तो आपके नौ-से-पांच डेवलपर्स सिस्टम को काम करने का एक तरीका खोज लेंगे, जबकि आपके समर्पित डेवलपर्स अनिवार्य रूप से पूरी प्रक्रिया से नाराज होंगे (जो isn है) उन पर उद्देश्य नहीं है, लेकिन आप यह नहीं कह सकते कि डेवलपर X को नियमों का पालन करना चाहिए, जबकि Y जो चाहे कर सकता है)।

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


5
+1 लेकिन वे 9-5 डेवलपर्स, ठीक है, आप उनके लिए रिवाल्विंग दरवाजा चाहते हैं, आदर्श रूप से त्वरक के कुछ रूप के साथ।
परिक्रमा

3
@Orbling: +1। यदि वे पर्याप्त देखभाल नहीं करते हैं तो उन्हें वास्तव में कहीं और काम करना चाहिए। इसके महान देवता आपके पास "मैं सिर्फ इस विचार के साथ आया था ..."।
जल्दी से

3
@Orbling विकास के कुछ क्षेत्रों में वे उपयोगी हो सकते हैं। मैं "डेवलपर स्नोबेरी" का प्रशंसक नहीं हूं, लेकिन आपको किसी भी उपयोग के लिए उनके लिए हर किसी के आला को ढूंढना होगा। सबसे बुरा आप यह कर सकते हैं कि आप सभी को पसंद करें।
biziclop

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

"मूर्त लाभ (बिक्री अंक) की पेशकश करने के लिए एक रिफैक्टरिंग में रोल अपग्रेड करें" जो मैं अपने मुख्य वास्तुकार से सुनता रहता हूं, इसलिए मुझे यह दूसरा करना होगा।
मारियो टी। लान्ज़ा

12

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

या वे नीचे, तेजी से चलते हैं ।

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

एक इंजीनियर के रूप में, मैं पुराने कोड को रिफलेक्टर करना पसंद करूंगा, जो अब वास्तव में उद्देश्य के लिए फिट नहीं है, हर बार कुछ अप्रचलित या पदावनत हो गया। लेकिन मैंने जिन कंपनियों में काम किया है, उनमें मेरे एमडी के रूप में मेरे लिए कहा है: "कौन भुगतान करेगा?"


12

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

मैं सुविधाओं को लागू करने से अलग कार्य के रूप में परावर्तन नहीं देखता। यह इसका एक अभिन्न हिस्सा है।


5
मैं और अधिक सहमत नहीं हो सकता था: "तकनीकी ऋण वित्तीय ऋण की तरह है - यह लंबे समय में बहुत आसान है बस इसे शुरू करने के लिए जमा न करें। सप्ताह में एक बार अपने सभी तकनीकी बिलों का भुगतान करें"
लॉरेंस Dol

7

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

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

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


6

तकनीकी ऋण की इस व्याख्या के बाद, आपके प्रबंधन को इसे चुकाने के लिए आश्वस्त होना चाहिए:

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

रसोई आपका कोड है, भोजन आपका उत्पाद है, और भोजन आपके उत्पाद को बेच रहा है।

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


4

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

चलो अपने आप को एक ग्राहक के रूप में स्थान देने के लिए इसे फिर से परिभाषित करें। अच्छी पुरानी भूमिका।

मान लीजिए आप एक रेफ्रिजरेटर खरीद रहे थे। और आप $ 1000 के लिए एक फ्रिज खरीद सकते हैं जो एक्मे कॉर्प से ठीक काम करता है या एकमे डिलक्स फ्रिज से $ 2000 के लिए एक फ्रिज है जो बाहर से समान दिखता था और उसी तकनीकी चश्मा था, लेकिन क्लीनर आंतरिक वास्तुकला के कारण रखरखाव की लागत कम थी।

एक ग्राहक के रूप में, जो आप स्वयं खरीदेंगे?

और एक्मे डीलक्स के इंजीनियरों को क्या लगता है बेहतर जवाब है?


3
मुझे इस पर अपने रुख को निर्धारित करने में मुश्किल समय आ रहा है। मुझे लगता है कि आपका जवाब "यह ग्राहक क्या चाहता है पर निर्भर करता है"। समस्या यह है कि हर ग्राहक यह नहीं समझता है कि कम लागत वाला फ्रिज पिघल कर रिसने वाला है, फ्रीजर सेक्शन से गंदा गंक, जोर से शोर करता है, और आखिरकार 5 साल बाद काम करना बंद कर देता है, जबकि दूसरा 20 साल तक सुचारू रूप से चलेगा। और तब तक प्रतिस्थापित नहीं किया जाएगा जब तक कि मालिकों द्वारा इसे शैली से बाहर नहीं समझा जाता है जो इसे एक नए मॉडल के बदले में फिर से बेचना होगा। फिर भी, मुझे वह प्रश्न पसंद है जो आपने प्रस्तुत किया है। यह उत्तेजक है। +1
jmort253

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

3

" तकनीकी ऋण " प्रबंधन को प्रस्तुत करने के लिए एक मुश्किल विषय हो सकता है क्योंकि वे इसकी आवश्यकता नहीं देख सकते हैं। इस सवाल को फंसाया जा सकता है कि कंपनी में कोई चैंपियन है या नहीं, "देखो, हम यहां तकनीकी ऋण पर काम करने के लिए X% समय ले रहे हैं। हमें यह काम अच्छा दिखाने के लिए 3 महीने का समय दें," या कुछ और। समान। वहाँ स्वायत्तता के लिए एक दावा है, लेकिन एक समय सीमा भी है क्योंकि अन्यथा प्रबंधन को आश्चर्य हो सकता है कि कब तक वे कुछ परिणाम देखते हैं जो कि खतरनाक क्षेत्र है।

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


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

2
मेरे वर्तमान कार्यस्थल में, गलत कारणों के लिए ओवरटाइम आवंटित किया जाता है। अगर अग्निशमन समस्याओं के बजाय ऐप को स्वस्थ रखने में समय लगाया गया, तो पैसा ओवरटाइम पर बचाया जाएगा और डेवलपर्स को जलाए जाने और प्रबंधन पर नाराज होने के बजाय अधिक सशक्त बनाया जाएगा।
ग्रह

लेकिन प्रबंधन (ज्यादातर मामलों में सही ढंग से!) इसे इस तरह से देखता है। मेरे पास १ ९ mag० का मैगीमिक्स है जो अभी भी काम करता है और आपका कहना है कि मैं इसे सिर्फ इसलिए बदल सकता हूं क्योंकि इसका पुराना और रंग निराला है!
जेम्स एंडरसन

2

आपको इसके बारे में शिकायत करना बंद कर देना चाहिए।

यहाँ पर क्यों:

  1. वे कभी भी एक वर्ष से अधिक समय तक सॉफ्टवेयर का उपयोग करने की योजना नहीं बनाते हैं
  2. यह सिर्फ समय की बर्बादी है अगर उनकी योजना इसे बाद में डंप करने की है
  3. कुछ वास्तविक समस्याएं हैं जिन्हें अब ठीक करने की आवश्यकता है
  4. प्रोग्रामर को केवल रखरखाव से निपटने के लिए सीखने की जरूरत है, भले ही यह हमेशा मजेदार न हो
  5. शिकायत करना कि आप बेहतर जानते हैं कि क्या करने की जरूरत है, अभिमानी है - कोई और निर्णय करता है, और आपको इसके बारे में खुश होना चाहिए
  6. वे वैसे भी आप पर अच्छा कोड लिखने के लिए भरोसा करते हैं

तो सबसे अच्छा तरीका आगे है:

  1. जब वे आपको नया कार्य दें, तो दिए गए समय में इसे लागू करने का प्रयास करें
  2. इसे पूरी तरह से पहली बार लिखें। यदि आपको इसे बाद में बदलने की आवश्यकता है, तो आपने पहली बार एक गलती की है और कोई भी परिवर्तन हमेशा गलत दिशा में जा रहा है - और जब आप गलती करते हैं तो यह प्रोग्रामर के लिए सीखने का अवसर है।
  3. इसके लिए अतिरिक्त समय न मांगें, आप इसे प्राप्त नहीं करेंगे, ऐसी समय सीमाएँ हैं जिन्हें आप जानते हैं।

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

@ एंगेलो - क्या टीम को मौन में झेलने की बजाय अपनी चिंताओं को आवाज़ देना बेहतर नहीं होगा? मैंने देखा है कि यह समस्या टीम के मनोबल को क्या करती है और समय के साथ समय / धन की बर्बादी भी। मैं इसे "विलाप" के रूप में नहीं देखता। आप केवल परियोजना जोखिमों की ओर इशारा कर रहे हैं और यदि आपके विचार डिलीवरी के समय को तेज कर सकते हैं और प्रक्रियाओं को व्यवस्थित कर सकते हैं, तो कम से कम अपनी चिंताओं को आवाज़ देने की कोशिश क्यों न करें? यदि यह बहरे कानों से गिरता है, तो कम से कम आप जानते हैं कि आप कहां खड़े हैं।
सांत्वना ग्रह

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

1

मुझे लगता है कि आप इसे फिर से लिखने / बदलने या यहां तक ​​कि उन्नयन और मौजूदा प्रणाली में शामिल करने की परियोजना में शामिल नहीं हैं।

ये सफलतापूर्वक पूर्ण होने वाली सबसे कठिन परियोजनाओं में से कुछ हैं। आपके सामने कुछ समस्याएं आएँगी:

  1. व्यावसायिक नियम समय में खो जाते हैं।
  2. प्रलेखन और कार्यान्वयन पूरी तरह से सिंक से बाहर हैं।
  3. आप एक बग के रूप में जो देखते हैं वह उपयोगकर्ताओं को एक सुविधा के रूप में देखते हैं।
  4. इसके विपरीत कई "सुविधाओं" को उपयोगकर्ताओं द्वारा दोष के रूप में देखा जाएगा।
  5. आपको उपयोगकर्ता खरीदने में नहीं मिलेगा - वे आपके "तथ्य खोजने" को "बेवकूफ सवाल पूछने वाले बेवकूफ" के रूप में मानेंगे, वे परीक्षण के प्रयास को समय की बर्बादी के रूप में मानेंगे, वे नई सुविधाओं को जोड़ने पर जोर देंगे, इस प्रकार एक परियोजना को लंबा करेंगे पहले से ही कार्यक्रम के पीछे हो।
  6. संभावना स्रोत कोड चल रहे निष्पादन योग्य के साथ 100% से मेल नहीं खाते हैं।
  7. जबकि आपका विभाग विकास को फिर से शुरू करने के लिए गड़बड़ कर रहा है, जो वास्तव में चाहता है कि व्यवसाय नहीं किया जा रहा है।
  8. संभावना है कि आपके पुन: फैक्टरिंग में "क्लीनर बेहतर इंटरफेस" शामिल होगा, इस प्रकार अन्य परियोजनाओं को देर से वितरण और विफल परीक्षणों के अपने दलदल में खींच लेंगे।
  9. परियोजना के डिब्बाबंद होने के बाद (इनमें से 50% से अधिक प्रयास पूरी तरह से विफल हो जाते हैं) आप सभी क्रेडिटबिलिटी खो देंगे - आपको किसी दूसरे शहर में दूसरी कंपनी में जाने की जरूरत होगी ताकि कोई व्यक्ति आपको सुनने के लिए तैयार हो सके।
  10. यदि परियोजना "सफल" होती है, तो हर कोई याद करेगा कि यह क्या बुरा सपना था - आप करेंगे ......।

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

वाक्यांश में बहुत ज्ञान है "अगर यह टूट नहीं गया है तो इसे ठीक न करें"।


1
"मुझे लगता है कि आप इसे फिर से लिखने / बदलने या यहां तक ​​कि उन्नयन और मौजूदा प्रणाली में शामिल नहीं हुए हैं" - गलत, इसके 7 साल।
सूतक ग्रह

1
मैं पूरी तरह से सहमत हूं कि एक पूर्ण पुन: लिखना अक्सर एक आपदा है। लेकिन मेरे करियर के अंतिम 8 वर्षों में मेरे तीन उदाहरण हैं। एक लंबा नारा था जिसके परिणामस्वरूप हम उत्पाद को बेहतर बनाए रखने में सक्षम थे लेकिन कोई व्यावसायिक मूल्य नहीं दिया; एक और एक छोटा पुनर्लेखन था जो कुल सफलता थी; तीसरा, फिर से लिखना नहीं करने का निर्णय था, जिसने अंततः कंपनी को मार डाला। अपना जहर चुन लो।
टॉम हैरिसन जूनियर

1

मेरे जीवन के लिए मुझे समझ नहीं आ रहा है कि कुछ लोग बदलाव से क्यों डरते हैं - यह आपकी अपनी क्षमताओं में आत्मविश्वास की कमी है।

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

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

मैं अभी एक ऐसी परियोजना पर हूं जिसमें पुनर्निर्माण के लिए एक स्पष्ट मामला है: विरासत सॉफ्टवेयर पूरी तरह से .NET वेबफॉर्म का उपयोग करके लिखा गया था। लगभग सभी व्यावसायिक तर्क HTML / सर्वर टैग व्यू लॉजिक के साथ सह-मेल किए जाते हैं और अब उन अन्य अनुप्रयोगों में नहीं बढ़ाए जा सकते हैं, जो व्यापार में वृद्धि हुई है।

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

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

सौभाग्य!


1
इस प्रश्न का उत्तर कैसे दिया जाता है, "आप इसे तकनीकी ऋण को छांटने में रुचि लेने के लिए प्रबंधन से कैसे संवाद करते हैं?"
gnat

1
@gnat: उस सवाल का अधिकांश "उत्तर" सीधे कैसे देते हैं? उदाहरण के लिए, जेम्स एंडरसन, tp1, या सबसे अधिक वोटों के साथ शीर्ष पर किसी भी उत्तर के उदाहरण देखें। लेकिन आपके सवाल का जवाब देने के लिए, मैंने एक वैकल्पिक सादृश्य प्रदान किया जो ओपी उपयोग कर सकता है। मुझे लगता है कि आप बस इस मामले पर मेरी राय से असहमत हैं। यह ठीक है, लेकिन कोई कारण नहीं है।
मैट कैसहैट

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

1
मैं इसे फिर से पढ़ने की सलाह देता हूं। भविष्य के काम के लिए पैडिंग अनुमानों द्वारा तकनीकी ऋण को कवर करने के लिए एक विधि के बारे में किसी के बॉस के साथ बातचीत के बारे में बताते हुए, इस सवाल का जवाब नहीं देता है, "आप इसे तकनीकी ऋण को छांटने में रुचि लेने के लिए प्रबंधन से कैसे संवाद करते हैं?" या तो। फिर भी, मैंने जवाब को वोट नहीं दिया क्योंकि यह बातचीत में शामिल हो गया। इसलिए, आप जो करने में सफल हुए हैं, उस मामले पर एक राय बना रहे हैं, जिसके साथ आप बिना किसी ठोस कारण के सहमत हैं। "प्रोग्रामर" एक ऐसी जगह होनी चाहिए जहां हम बातचीत कर सकें। सब कुछ बाइनरी नहीं है।
मैट Cashatt 20

1

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

एक तकनीकी रोडमैप बनाए रखना ऐसा ही एक ढांचा है। एक रोडमैप के साथ शुरू करने से आपको तकनीकी ऋण पर जमा होने से रोकने में मदद मिलेगी, साथ ही मौजूदा ऋण को कम करने में भी आपकी मदद कर सकता है।

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

मेरा सुझाव यह है कि आप इस रणनीति पर अपने प्रबंधकों के साथ चर्चा करें (और यदि संभव हो तो निर्णय लें कि पैसा कहाँ खर्च होता है)।

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

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

रोडमैप वास्तव में उपयोगी हैं, और शायद जोएल टेस्ट में 13 वां सवाल "क्या आपके पास रोडमैप है?"

यहां हाल ही में Red Hat Linux रोडमैप सत्र के पहले घंटे का एक वीडियो है


1

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

समझौते में आगे बढ़ने के लिए महत्वपूर्ण कारक:

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

रिपोर्ट में चल रही लागत के अनुमानों के साथ मुद्दों को विस्तृत किया गया, और 3 विकल्प पेश किए गए:

  1. रुकें जहाँ हम निकट भविष्य में बग फिक्स के साथ नहीं थे।
  2. केवल अंतरिक्ष के लिए कोड का अनुकूलन करें, जिसमें स्थिरता के संबंध में कोई संकेत नहीं है , यह इंगित करता है कि अनुकूलित कोड को बनाए रखने का प्रयास करने वाले को ऑप्टिमाइज़ करने की तुलना में अधिक चालाक होना होगा।
  3. एक उद्योग मानक में उच्च गुणवत्ता वाले, व्यापक रूप से सिखाई जाने वाली, भाषा, (ANSI C), नई, कम लागत, COTS हार्डवेयर, (PC-104) के रूप में पुन: लागू करने के साथ, घर में उपलब्ध कई विक्रेताओं के साथ। शेष मौजूदा हार्डवेयर के साथ काम करने की अनुमति देने के लिए डिज़ाइन किया गया इंटरफ़ेस कार्ड। विकास के एक हिस्से के रूप में नई सुविधाओं के सीमित सेट को जोड़ना, जैसे कि गैर-वाष्पशील भंडारण, एक वॉचडॉग टाइमर एक गलती की स्थिति में स्वचालित पुनरारंभ प्रदान करने के लिए, कुछ इकाइयां दिन में कई बार दुर्घटनाग्रस्त हो रही थीं और रीसेट करने के लिए £ 40 सेवा कॉल की आवश्यकता होती है , प्रक्रिया में बेहतर निदान।

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

कम चरम तकनीकी ऋण वाले मामलों के लिए मैं वह तरीका अपनाता हूं जिसे मैं गुरिल्ला रिफलेक्टरिंग कहता हूं:

जब कोई विशिष्ट मॉड्यूल के साथ कोई समस्या है:

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