मैं 4 देवों की एक परियोजना टीम में हूं, जिसमें मैं भी शामिल हूं। हम इस बात पर लंबी चर्चा कर रहे हैं कि किसी एक काम के मद में आने वाले अतिरिक्त काम को कैसे संभालना है।
यह अतिरिक्त काम आमतौर पर ऐसी चीजें हैं जो कार्य से थोड़ा संबंधित हैं, लेकिन हमेशा आइटम के लक्ष्य को पूरा करने के लिए आवश्यक नहीं है (यह एक राय हो सकती है)। उदाहरणों में शामिल हैं, लेकिन इन तक सीमित नहीं हैं:
- कार्य आइटम द्वारा परिवर्तित कोड का पुनःचयन
- आइटम के द्वारा बदला गया कोड पड़ोसी को फिर से भरना
- टिकट के आसपास के बड़े कोड क्षेत्र को फिर से आर्किटेक्चर करना। उदाहरण के लिए यदि किसी आइटम में आपने कोई फ़ंक्शन बदला है, तो आपको पता चलता है कि इस बदलाव को बेहतर तरीके से समायोजित करने के लिए अब पूरी कक्षा को फिर से तैयार किया जा सकता है।
- आपके द्वारा संशोधित किए गए फ़ॉर्म पर UI में सुधार करना
जब यह अतिरिक्त काम छोटा होता है तो हमें कोई आपत्ति नहीं होती। समस्या तब होती है जब यह अतिरिक्त कार्य मूल सुविधा बिंदु अनुमान से परे वस्तु के पर्याप्त विस्तार का कारण बनता है। कभी-कभी 5 बिंदु वाली वस्तु वास्तव में 13 बिंदुओं का समय लेगी। एक मामले में हमारे पास एक 13 अंक था जो कि रेट्रोस्पेक्ट में 80 अंक या उससे अधिक हो सकता है।
इसे कैसे संभाला जाए, इस बारे में हमारी चर्चा के दो विकल्प हैं।
हम एक ही कार्य मद में अतिरिक्त कार्य को स्वीकार कर सकते हैं, और इसे गलत अनुमान के रूप में लिख सकते हैं। इसके लिए तर्क शामिल हैं:
- हम स्प्रिंट के अंत में "पैडिंग" की योजना बनाते हैं ताकि इस तरह की चीज का हिसाब किया जा सके।
- हमेशा बेहतर पाए जाने की अपेक्षा कोड को बेहतर आकार में छोड़ें। आधे-गधे के काम में जाँच न करें।
- यदि हम बाद के लिए रिफैक्टरिंग छोड़ देते हैं, तो शेड्यूल करना मुश्किल है और कभी नहीं हो सकता है।
- अब आप इस काम को संभालने के लिए सबसे अच्छे मानसिक "संदर्भ" में हैं, क्योंकि आप पहले से ही कोड में गहरी हैं। बेहतर होगा कि इसे अभी से हटा दें और बाद में वापस आने पर उस संदर्भ को खोने से ज्यादा कुशल हों।
हम वर्तमान कार्य आइटम के लिए एक रेखा खींचते हैं, और कहते हैं कि अतिरिक्त काम एक अलग टिकट में जाता है। तर्क में शामिल हैं:
- एक अलग टिकट होने से एक नए अनुमान की अनुमति मिलती है, इसलिए हम खुद से झूठ नहीं बोल रहे हैं कि वास्तव में कितने अंक हैं, या यह स्वीकार करना है कि हमारे सभी अनुमान भयानक हैं।
- स्प्रिंट "पैडिंग" अप्रत्याशित तकनीकी चुनौतियों के लिए है जो टिकट आवश्यकताओं को पूरा करने के लिए प्रत्यक्ष अवरोध हैं। यह साइड आइटम के लिए अभिप्रेत नहीं है जो सिर्फ "गुड-टू-हैव्स" हैं।
- यदि आप रिफैक्टरिंग शेड्यूल करना चाहते हैं, तो इसे बैकलॉग के शीर्ष पर रखें।
- एक अनुमान में इस सामान को ठीक से खाते हुए हमारे लिए कोई रास्ता नहीं है, क्योंकि यह ऊपर आने पर कुछ हद तक मनमाना लगता है। एक कोड समीक्षक कह सकता है "वे UI नियंत्रण (जिन्हें आपने वास्तव में इस कार्य मद में संशोधित नहीं किया था) थोड़ा भ्रमित कर रहे हैं, क्या आप इसे भी ठीक कर सकते हैं?" जो एक घंटे की तरह है, लेकिन वे कह सकते हैं "ठीक है अगर यह नियंत्रण अब अन्य लोगों की तरह एक ही आधार वर्ग से विरासत में मिला है, तो आप इस सब को (सैकड़ों की संख्या में) कोड को आधार में स्थानांतरित नहीं करते हैं और इस सभी सामान को फिर से जोड़ते हैं , कैस्केडिंग परिवर्तन, आदि? " और इसमें एक सप्ताह का समय लगता है।
- यह टिकट में असंबंधित काम को जोड़कर "अपराध जगत को दूषित करता है", जिससे हमारी मूल विशेषता बिंदु का अनुमान बेकार हो जाता है।
- कुछ मामलों में, अतिरिक्त कार्य एक चेक-इन को स्थगित कर देता है, जिससे देवों के बीच अवरुद्ध हो जाता है।
हम में से कुछ अब कह रहे हैं कि हमें कुछ कट ऑफ तय करना चाहिए, जैसे कि यदि अतिरिक्त सामान 2 एफपी से कम है, तो यह उसी टिकट में जाता है, यदि यह अधिक है, तो इसे नया टिकट बनाएं।
चूँकि हम Agile का उपयोग करने में केवल कुछ ही महीने हैं, इस बारे में यहाँ के सभी अधिक अनुभवी Agile दिग्गजों की राय क्या है इसे कैसे संभालें?