"सॉफ्टवेयर तब किया जाता है जब उसका काम किया जाता है, जल्दी नहीं, बाद में नहीं।"
यह सच है, लेकिन प्रत्येक कार्य के लिए जिस पर आपके डेवलपर्स काम करना शुरू करते हैं, क्या आपके संगठन में हर व्यक्ति प्रत्येक कार्य के लिए परिभाषा की समझ रखता है ?
ऐसा लगता है कि आपके सबसे बड़े मुद्दों में से एक अनुमान है , लेकिन डेवलपर्स केवल एक यथार्थवादी अनुमान प्रदान कर सकते हैं जब उनके पास एक स्पष्ट और स्पष्ट रूप से निर्दिष्ट 'किए गए की परिभाषा' हो। (जिसमें कंपनी प्रक्रिया के मुद्दे शामिल हैं - जैसे उपयोगकर्ता प्रलेखन, औपचारिक रिलीज पर काम के पैकेज, आदि)
यह आश्चर्य की बात नहीं है कि अधिक-आकलन एक समस्या पैदा कर रहा है, यह देखते हुए कि अधिकांश डेवलपर्स देखते हैं कि किसी कार्य को पूरा करने के लिए आवश्यक समय का अनुमान लगाना सबसे कठिन है जो उनसे पूछा जाता है।
हालाँकि, अधिकांश डेवलपर्स के पास एक निश्चित अवधि के लिए प्रयास करने की मात्रा पर एक उचित (यद्यपि आशावादी ) हैंडल होता है ।
समस्या अक्सर यह है कि डेवलपर्स एक कार्य और प्रयास की कुल राशि के बीच संबंध बनाने के लिए संघर्ष करते हैं, जब वे अधूरी जानकारी के साथ काम कर रहे होते हैं - खासकर यदि वे सभी जवाबों के साथ आने के लिए दबाव डाला जाता है, तो वास्तव में बहुत बड़ा काम ।
यह स्वाभाविक रूप से समय के अनुमानों को वास्तविकता से अलग हो जाता है, और वे निर्माण प्रक्रिया और उपयोगकर्ता प्रलेखन जैसी चीजों की दृष्टि खो देते हैं।
जब कार्य का वर्णन किया जाता है तो डिस्कनेक्ट बहुत शुरुआत में शुरू होता है; और यह आमतौर पर एक गैर-तकनीकी व्यक्ति द्वारा आवश्यक प्रयासों की मात्रा का कोई सुराग न होने के बिना आवश्यकताओं की एक सूची को चित्रित करके किया जाता है।
कभी-कभी वरिष्ठ प्रबंधन के लोग कार्यों को निर्दिष्ट करते हैं और कंपनी की प्रक्रिया के मुद्दों को पूरी तरह से अनदेखा करते हैं; वरिष्ठ प्रबंधन के लिए यह सोचना असामान्य नहीं है कि परीक्षण को परिभाषित करने, या एक औपचारिक रिलीज़ किए गए निर्माण को बनाने, या उपयोगकर्ता दस्तावेज़ को अपडेट करने जैसी चीजें बिना किसी समय या प्रयास के जादुई रूप से होती हैं। की आवश्यकता है।
कभी-कभी परियोजनाएं विफल हो जाती हैं, इससे पहले कि कोई डेवलपर कोड की एक पंक्ति भी लिख दे क्योंकि कोई व्यक्ति, कहीं अपना काम सही तरीके से नहीं कर रहा है।
यदि विकास टीम आवश्यकताओं को स्वीकार करने या स्वीकृति मानदंडों को कैप्चर करने में शामिल नहीं है, तो यह प्रबंधन की विफलता है - क्योंकि इसका मतलब है कि कोई व्यक्ति जिसके पास कोड की अपर्याप्त समझ है और तकनीकी मुद्दों ने आवश्यकताओं के अपूर्ण सेट के लिए व्यवसाय को प्रतिबद्ध किया है, और गलत व्याख्या, गुंजाइश रेंगना, सोना चढ़ाना, आदि के लिए परियोजना को खुला छोड़ दिया
यदि विकास टीम आवश्यकताओं को कैप्चर करने और सहमत करने में शामिल होती है, तो यह टीम की असफलता हो सकती है, जो विवरणों को स्पष्ट करने के लिए जिम्मेदार हैं (और स्वीकृति मानदंड - यानी "डिलिजेबल कैसा दिखता है? कब किया जाता है ?" )। विकास टीम भी NO कहने के लिए जिम्मेदार है जब रास्ते में अन्य अवरुद्ध मुद्दे हैं, या यदि एक आवश्यकता सिर्फ अवास्तविक है।
तो अगर डेवलपर्स आवश्यकताओं को पकड़ने में शामिल हैं:
- क्या टीम के पास उत्पाद प्रबंधक के साथ बैठकर किए गए आवश्यकताओं / परिभाषा को स्पष्ट करने का अवसर है?
- क्या टीम निहित / ग्रहण की गई आवश्यकताओं को स्पष्ट करने के लिए पर्याप्त प्रश्न पूछती है? कितनी बार उन सवालों का संतोषजनक जवाब दिया जाता है?
- क्या टीम अनुमान प्रदान करने से पहले स्वीकृति मानदंड (काम की परिभाषा) की मांग करती है ?
- आमतौर पर प्रत्येक कार्य के लिए स्वीकार्यता मानदंड कितने अच्छे हैं? क्या यह विरल विस्तार के साथ एक अस्पष्ट दस्तावेज है या यह मूर्त कार्यक्षमता का वर्णन करता है, और यह भी कि डेवलपर एक परीक्षण में अनपेक्षित रूप से अनुवाद कर सकता है ?
संभावना यह है कि आपकी टीम की उत्पादकता कोई मुद्दा नहीं है; आपकी टीम संभवतः वे सभी प्रयास कर रही है जो वे विकास के संबंध में करने में सक्षम हैं। आपके वास्तविक मुद्दे निम्नलिखित में से एक या अधिक हो सकते हैं:
- अपूर्ण और अस्पष्ट आवश्यकताएं।
- आवश्यकताएँ / कार्य जो पहली जगह में बहुत बड़े हैं।
- विकास टीम और ऊपरी प्रबंधन के बीच खराब संचार।
- कार्यों को टीम को सौंपने से पहले स्पष्ट रूप से परिभाषित स्वीकृति मानदंड की कमी।
- स्वीकृति परीक्षणों के अपूर्ण या अस्पष्ट / अस्पष्ट विनिर्देश। (यानी परिभाषा पूरी की)
- स्वीकृति मानदंड को परिभाषित / सहमत करने के लिए आवंटित अपर्याप्त समय।
- डेवलपर्स ने मौजूदा बेसलाइन कोड का परीक्षण करने या मौजूदा बग को ठीक करने के लिए समय पर विचार नहीं किया
- डेवलपर्स ने मौजूदा बेसलाइन कोड का परीक्षण किया, लेकिन आवश्यकताओं पर अनुमान प्रदान करने से पहले कीड़े को ब्लॉकिंग मुद्दे के रूप में नहीं उठाया
- प्रबंधन ने मुद्दों / बगों को देखा और निर्णय लिया कि नए कोड लिखने से पहले बग्स को ठीक करने की आवश्यकता नहीं है।
- डेवलपर्स पर अपने समय के 100% के लिए जिम्मेदार होने के लिए दबाव डाला जाता है, भले ही उनके समय का संभवतः 20% (या कुछ इसी तरह की संख्या) संभवतः मीटिंग्स, डिस्ट्रैक्शन, ईमेल आदि द्वारा लिया जाता है।
- अनुमान अंकित मूल्य पर सहमत हैं और कोई भी त्रुटि या आकस्मिकता के लिए कमरे को समायोजित नहीं करता है (उदाहरण के लिए "हमने तय किया कि यह 5 दिन लगना चाहिए, इसलिए हम उम्मीद करेंगे कि यह 8. में किया जाए")।
- अनुमान हर किसी (डेवलपर्स और प्रबंधन) द्वारा एक यथार्थवादी "रेंज" संख्याओं के बजाय एकल संख्याओं के रूप में माना जाता है - अर्थात
- सबसे अच्छा मामला अनुमान
- यथार्थवादी अनुमान
- सबसे खराब मामला है
... सूची इससे कहीं अधिक लंबी हो सकती है।
आपको कुछ "फैक्ट फाइंडिंग" करने की जरूरत है और यह पता लगाना है कि अनुमानों को वास्तविकता से अलग क्यों किया गया है। क्या मौजूदा बेसलाइन सॉफ्टवेयर खराब है? क्या इसमें यूनिट टेस्ट कवरेज की कमी है? क्या आपके डेवलपर्स प्रबंधन के साथ संचार से बचते हैं? क्या प्रबंधन डेवलपर्स के साथ संचार से बचता है? जब "डेऑन ऑफ डेन" की बात आती है, तो क्या प्रबंधन की उम्मीदों और डेवलपर की उम्मीदों के बीच कोई अंतर है ?