इससे पहले कि मैं बहुत दूर हो जाऊं, मुझे कहना चाहिए कि सॉफ़्टवेयर अनुमान: ब्लैक आर्ट का प्रदर्शन करना लोगों को देखने और अनुमानों के बारे में सोचने के लिए एक उत्कृष्ट संसाधन है। नीचे दिए गए दोनों चित्र उस पुस्तक से हैं जैसे कि यदि निम्नलिखित विचार प्रस्तुत किए गए हैं तो कोर हैं।
जैसा कि आपने नोट किया है, अनुमान सही भविष्यवाणी करने और कार्य योजना बनाने में सक्षम होने में एक महत्वपूर्ण हिस्सा हैं। अनुमान नहीं होने से व्यवसाय अंधा हो जाता है कि कितना समय लगेगा। व्यापार के लिए पूरी तरह से गलत विचार रखना असामान्य नहीं है कि चीजों को कितना समय लगेगा - उन्हें जो लगता है वह आसान है छह से आठ सप्ताह लगते हैं और जो कुछ कठिन माना जाता है वह शुक्रवार की दोपहर की हैक है।
पहली बात एक अनुमान देना है। एक अनुमान ही एक संख्या नहीं है - एक प्रतिबद्धता है। "एबीसी को कितना समय लगेगा" -> "लगभग 5 दिन" का अर्थ है कि इसका लगभग 5 दिन। हालांकि, एक अच्छा अनुमान एक सीमा है जहां आप 90% आश्वस्त हैं कि आपके पास उस सीमा में होगा। यदि आपके कहने का अर्थ है "मुझे 90% विश्वास है कि यह 1 और 5 दिन दांव लगाएगा" तो कहें कि। "मुझे नहीं लगता कि यह 1 से 10 दिनों के बीच काम करेगा, इसलिए 5 दिन शायद औसत के बारे में हैं" - एक अनुमान नहीं है और आप समय का 50% गलत होंगे।
खैर, समय का 50% या अधिक, प्रोग्रामर कार्य समय के लिए कुख्यात अंडरस्टीमेटर्स हैं।
अनिश्चितता के शंकु पर विचार करें:
से छवि http://www.construx.com पर पूरा लेख - http://www.construx.com/Thought_Leadership/Books/The_Cone_of_Uncertainty/
एहसास है कि उस रेंज में पहला अनुमान 16x है। यह कहने के लिए कि "मुझे लगता है कि यह एक दोपहर और दो सप्ताह के बीच ले जाएगा" - लेकिन आप अभी तक नहीं जानते हैं। जैसा कि आप डिजाइन के साथ थोड़ा आगे बढ़ते हैं, रेंज 4x तक नीचे आ जाती है। इसका मतलब यह नहीं है कि इसमें एक सप्ताह लगेगा, इसका मतलब है कि आप इसके बजाय "थोड़ा सा देखने के बाद, यह तीन सप्ताह के बीच ले जाएगा" - हाँ, अनुमान ऊपर चला गया, लेकिन अनुमान की सीमा भी गई नीचे।
आपके द्वारा दिए गए प्रत्येक अनुमान के साथ, आपको 90% सुनिश्चित करने की आवश्यकता है कि अनुमान उस सीमा के भीतर है। आप गलत हो सकते हैं - उस सीमा से 10% नीचे गिर जाएगा।
रहे हैं कई परियोजनाओं के आकार का अनुमान तरीके। पिछली परियोजनाओं की तुलना में, एक प्रॉक्सी का उपयोग करके (मुझे लगता है कि यह कोड की 1000 लाइनें लेगा जो लिखने में लंबा समय लेगा), फ़ंक्शन बिंदुओं का उपयोग करके (LOC में बदलने के लिए ...), कई लोगों से अनुमान प्राप्त करना और फिर। इसे पुन: परिष्कृत करते हुए ... कुछ परियोजनाओं के लिए काम करते हैं, कुछ अन्य परियोजनाओं के लिए काम करते हैं।
इस पुस्तक का एक बहुत महत्वपूर्ण अध्याय जिसका मैंने शीर्ष # 23 पर उल्लेख किया है, जो अनुमान की राजनीति और प्रबंधकों और अधिकारियों के साथ व्यवहार करता है।
एक अनुमान के लिए महत्वपूर्ण है कि इसे थोड़ा काम करने के बाद इसे परिष्कृत करने की पुनरावृत्ति प्रक्रिया।
प्रक्रिया में बहुत जल्दी एक अनुमान के बहुत सटीक देने से बहुत त्रुटि हो सकती है। यदि आप इसके बारे में सुनिश्चित नहीं हैं, तो विस्तृत अनुमान दें और फिर समस्या में अधिक आत्मनिरीक्षण के लिए कुछ समय के बाद एक और अनुमान के साथ वापस आएं और संभवत: स्केचिंग करें कि आप इसे कैसे करेंगे, यह देखने के लिए कि आपने इसे कितना कोड लिखा है अंतिम समान समस्या और अन्य कारक जो अनुमान को प्रभावित करेंगे।
अनुमानों में कुछ विचार की आवश्यकता होती है - कफ अनुमानों को न दें। जब आप इसके बारे में थोड़ा सोचते हैं, तो इसकी तुलना में इनमें अक्सर भारी त्रुटियां होती हैं ।
से कैसे प्रतिक्रिया करने के लिए जब आप एक अनुमान के लिए कहा जाता है?
क्या कहना है जब एक अनुमान के लिए पूछा
आप कहते हैं "मैं तुम्हारे पास वापस आऊंगा।"
आप लगभग हमेशा बेहतर परिणाम प्राप्त करते हैं यदि आप इस प्रक्रिया को धीमा करते हैं और इस खंड में वर्णित चरणों से गुजरने में कुछ समय बिताते हैं। कॉफी मशीन पर दिए गए अनुमान (जैसे कॉफी) आपको परेशान करने के लिए वापस आएंगे।
सॉफ्टवेयर अनुमान के अध्याय 4 से:
ध्यान दें कि इसमें, थोड़ी समीक्षा के बाद अनुमान व्यवस्थित रूप से कम जंगली और कफ अनुमानों की तुलना में त्रुटि प्रवण हैं। कफ अनुमान बंद मत करो। बैठ जाओ और कार्य के बारे में सोचो और उस पर थोड़ा विचार करने के बाद अनुमान लगाओ।