तकनीकी ऋण का ध्यान रखने से आपने क्या भुगतान किया है?


29

तकनीकी ऋण पर इस लेख में कुछ अच्छे बिंदु हैं, जिनमें शामिल हैं:

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

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

इस दृष्टिकोण के कम से कम ये फायदे हैं:

  • कहानियों का "सर्वश्रेष्ठ समझदार" प्रवाह बनाए रखता है;
  • सभी टीम प्रतिभाओं से सहायता प्रदान करता है;
  • कोड को साफ रखने के तरीके सीखने के लिए पूरी टीम प्रदान करता है;
  • जहाँ इसकी आवश्यकता है, ठीक उसी तरह सुधार पर ध्यान केंद्रित करता है;
  • सुधार को बर्बाद नहीं करता है कि "की आवश्यकता हो सकती है";

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

अपने कोड आधार को साफ करने और तकनीकी ऋण से खुद को दूर करने से आपने क्या सकारात्मक लाभ देखे हैं? काम पूरा करने के लिए आपने किन तरीकों का इस्तेमाल किया?


1
कोड भी क्यों मौजूद होगा, अगर यह उपयोगकर्ता की कहानी को प्रभावित नहीं करता है? (एक सिस्टम के प्रशासक अभी भी उपयोगकर्ता हैं - इसलिए लॉगिंग और 'कवर के तहत' सामान अभी भी लागू होता है)
स्टीवन एवर

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

(cleaup के बारे में आपकी टिप्पणी) +1। मुझे पता है कि तुम किस बारे में बात कर रहे हो।
तालोंक्स

जवाबों:


31

मैं आपको अपने अनुभव से एक उदाहरण दे सकता हूं।

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

मैं इस गंदगी को देने के लिए एक खुश टूरिस्ट नहीं था।

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

बहुत सारा काम तकनीकी ऋण को चुकाने में चला गया लेकिन यह अच्छी तरह से, इसके लायक था। रात के बीच में कोई भी फोन कॉल न आना अच्छा था कि सिस्टम फेल हो गया। यह मोनिंग में कार्यालय में आकर और लॉग में अच्छी खबर के अलावा कुछ भी नहीं देखकर अच्छा लगा।

(एक तरफ ... कुछ वर्षों के बाद मैं इस प्रणाली के मुख्य डेवलपर्स में से एक में भाग गया। उसने मुझसे पूछा कि यह कैसे हो रहा है और मैंने उसे बताया कि यह प्रणाली कितनी खराब है। उसने वास्तव में माफी मांगी और मुझे बताया कि वह जानता था कि यह होगा। उनके जाने के बाद समर्थन करने के लिए मुट्ठी भर और काश उन्होंने उस पर बेहतर काम किया होता)।


8
आउच, एक दर्दनाक अनुभव की तरह लगता है, लेकिन एक सकारात्मक परिणाम के साथ। साझा करने के लिए धन्यवाद।
अली

11

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


2
मैं सहमत हूं - सबसे अच्छा भुगतान आमतौर पर नहीं देखा जाता है, और यह बढ़ी हुई उत्पादकता में है।
माइकल के

5

तकनीकी ऋण को समाप्त करने से कम तकनीकी सहायता मिलती है और संवर्द्धन के लिए बेहतर आधार मिलता है

हमेशा


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

@ नीमी: सभी तकनीकी ऋण समान नहीं बनाए गए हैं; कृपया अच्छे निर्णय का उपयोग करें।
स्टीवन ए। लोव

1
मैं सिर्फ टिप्पणी कर रहा था, आप जानते हैं, क्योंकि आपके पोस्ट में बड़े बोल्ड ALWAYS हैं। मुझे लगता है कि शायद मुझे आपका जवाब गलत लगा।
नेमी

4

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

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


PO / BO के साथ समस्या पर चर्चा करने के लिए +1। यह है कि यह कैसे काम करना चाहिए (आदर्श रूप से :-))।
sleske

और BTW, मैं तकनीकी ऋण का एक उदाहरण भी नहीं कहूंगा। यह स्पष्ट रूप से एक लापता विशेषता है, जिसे आपकी टीम को मैन्युअल काम से क्षतिपूर्ति करना था। मेरी परिभाषा यह होगी: यदि यह अंतिम उपयोगकर्ता (प्रत्यक्ष या अप्रत्यक्ष रूप से) को प्रभावित करता है, तो यह तकनीकी ऋण नहीं है, लेकिन बस एक बग / लापता सुविधा है
Sleske

2

पिछले दो बिंदुओं के बारे में: मैं समझता हूं कि यह कहां से आ रहा है, जैसा कि उनकी मूल पोस्ट में बताया गया है :

या, इन तकनीकी मामलों को करने के लिए कुछ डेवलपर्स को आश्वस्त करना संभव है, जबकि बाकी टीम उपयोगकर्ता-उन्मुख सामान पर जारी है? यह टीम के वेग को प्रभावित कर सकता है, लेकिन ऐसा क्या है?

"तो क्या" बराबर होता है: उत्पाद के मालिक और अन्य व्यवसाय-पक्ष के लोग दुखी हो जाते हैं। और जब मम्मा दुखी, सब लोग दुखी।

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

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


2

तकनीकी ऋण का भुगतान करने के परिणामस्वरूप एक संगठन को जो सबसे बड़ा लाभ होगा, वह चक्रवृद्धि ब्याज से बचना है। नीचे दिए गए ब्लॉग प्रविष्टि में एक उदाहरण है कि पता चलता है कि कैसे तकनीकी ऋण पर मूल राशि 160k से $ $ 430k मात्र पांच वर्षों में चली गई। यह एक पूर्णकालिक प्रोग्रामर होगा जो पूरी तरह से कर्ज की उस राशि की सर्विसिंग के लिए समर्पित होगा। निर्णय निर्माताओं के लिए इसे परिप्रेक्ष्य में रखने में मदद मिलेगी!

से blog.acrowire.com

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