2008-09-20 13 views
12

तो आपको बस बॉस द्वारा जगह पर रखा गया है। आपको कुछ नई सुविधा के अतिरिक्त लिफाफे अनुमान के पीछे आने के लिए 15 मिनट मिल गए हैं। आपका मालिक (सौभाग्य से) यह स्वीकार करता है कि आप उस समय एक सटीक अनुमान प्रदान नहीं कर सकते हैं ताकि परिमाण के सही क्रम में कुछ ऐसा हो।कोडिंग कार्यों के लिए आप बहुत तेज़ (और गंदे) अनुमान कैसे करते हैं?

सवाल यह है कि आप समय सीमा में अनुमान लगाने के बारे में कैसे जाते हैं जो परिमाण के क्रम के लिए सटीक है?


ध्यान दें कि यह मतलब है एक त्वरित और गंदा अनुमान है, कुछ नहीं है कि सवाल से की तरह this

+1

मैं इस प्रश्न को ऑफ-विषय के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह प्रोग्रामिंग के बारे में नहीं है। –

उत्तर

0

उम्मीद की जा सकती मैं व्यक्तिगत रूप से बात के इस प्रकार से मना किया जाना है। लेकिन फिर मैं अपने लिए काम करता हूं, इसलिए मैं किसी मालिक को जवाब नहीं देता हूं। बस एक ग्राहक, लेकिन उन्हें जगह पर करने के लिए मुश्किल समझने के लिए आसान है।

0

इस तरह के समय में, मुझे मैकेंज़ी ब्रदर के शासन को मेट्रिक में बदलने पर शासन याद है: "इसे दोहराएं, और तीस जोड़ें।"

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

5

अतीत में किए गए समान कार्यों और उन्हें कितने समय तक ले गए हैं, उनके बारे में सोचें।

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

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

7

सबसे अच्छा तरीका सभी प्रमुख उप-घटकों के त्वरित टूटने का प्रयास करना है, उदा।

  1. अद्यतन डाटा मॉडल स्क्रिप्ट (2 टेबल में 3 आइटम)
  2. इनपुट बदलें स्क्रीन (3 नई आदानों)
  3. चेक इनपुट (3 नई आदानों)
  4. अद्यतन डाटा।
  5. परिणाम आदि प्रदर्शन ...
  6. बिल्ड इकाई परीक्षण

इनमें से प्रत्येक पर एक मोटा अनुमान असाइन करें और अगर आप एक नीचे कम से कम 2 घंटे डाल के बारे में सोच नहीं सकते, क्योंकि यहां तक ​​कि सबसे सरल आइटम शायद कम से कम एक घंटे लेगा, लेकिन 2x अनिश्चितता के लिए अनुमति देगा।

कम से कम आप उन सभी वस्तुओं के बारे में सोचा होगा जो आपको करना होगा ताकि अनुरोध के अनुसार यह परिमाण के सही क्रम में होगा।

+1

बिल्कुल। यह जोएल रास्ता है, मैंने इस दृष्टिकोण के बारे में उससे एक ब्लॉग पोस्ट देखा है। –

+2

यह आपके अनुमान को चुनौती देने पर मालिकों के चेहरे में लहर करने के लिए कुछ भी करने का लाभ है - इसके बाद आप सापेक्ष संख्याओं के बारे में उत्पादक चर्चा कर सकते हैं। –

17

हवा में मुंह, चाटना, हवा में लहर रखें और पिछले अनुभव के आधार पर एक संख्या बनाएं। फिर इसे दोहराएं।

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

3

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

तो मैं प्रत्येक संभावनाओं को समझाता हूं। बेशक, यह केवल समझने वाले मालिक के साथ काम करता है, लेकिन यदि आपका मालिक इतना अज्ञानी या मूर्ख है कि वह पूर्ण स्पष्टीकरण सुनने से इंकार कर देता है, तो आपको अन्य समस्याएं हैं।

उदाहरण के लिए, यहां मैंने हाल के मामले के लिए यह कैसे किया जहां मुझे वास्तव में ऐसा करना पड़ा।

x264, जिस वीडियो एन्कोडर पर मैं काम करता हूं, केवल इंटरलस्ड कोडिंग का एक बहुत ही प्राचीन रूप लागू करता है जिसके कारण इसे लागू करना बहुत आसान था। हम इस कोडिंग के पूर्ण रूप को लागू करना चाहते थे, लेकिन मुझे नहीं पता था कि इस तरह के मामले में सरलीकृत संस्करण के लिए कितनी धारणाएं विफल हो जाएंगी।

तो मैंने उन चीजों के विभिन्न स्तरों के माध्यम से सोचा जो शायद बदलना पड़ सकता है, और अनुमान लगाया जा सकता है - अच्छी तरह से, यह पहले से ही लगभग काम कर रहा है, लेकिन यह संदिग्ध है। और सबसे बुरी चीजें हैं जो सामानों की एक पूरी टन बदलनी चाहिए। इसलिए, मैंने अपने मालिक से कहा, यह संभवतः यहां सबसे खराब मानना ​​बेहतर था, क्योंकि यह कल्पना बहुत जटिल थी और उस जटिलता के बारे में जानने के बावजूद, मुझे संदेह था कि कार्यक्रम में संबंधित कोड की प्रमुख कमी को देखते हुए, लगभग कोई भी नहीं वह जटिलता वास्तव में लागू की गई थी। अंत में मैं सही था - परिवर्तनों की आवश्यकता काफी जटिल हो गई, और उन्होंने प्रोजेक्टर को H.264 के अंतःस्थापित कोडिंग की जटिलताओं में अधिक विशेषज्ञता के साथ आउटसोर्स किया।

1

मैं हाल ही में Agile Estimating and Planning पढ़ रहा हूं, और इसे पर्याप्त अनुशंसा नहीं कर सकता।

1

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

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

2

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

न्यूनतम और अधिकतम मानों का योग पूरे कार्य के लिए अंतराल निर्दिष्ट करता है। यह जानकारी आपके मालिक को जोखिम प्रदान करता है, जो हमेशा बहुत उपयोगी होता है।

आप कुछ अंतराल प्राप्त करेंगे, उदा। 12-15 दिन या 5-30 दिन - यह निर्दिष्ट अंतराल के बजाय 16 दिन से अधिक उपयोगी है।

स्टीव मैककोनेल Software Estimation: Demystifying the Black Art द्वारा यह आपके लिए उपयोगी पुस्तक के लिए उपयोगी हो सकता है।

+1

मैंने एक बार कोशिश की। मेरे मालिक ने मेरी सभी न्यूनतम तिथियां जोड़ दीं, और वह आवश्यक डिलीवरी तिथि थी। – EvilTeach

+0

ऐसे मामलों में केवल बॉस के अंतराल के ऊपरी बाउंड को कहना अच्छा होता है, और यह जानने के लिए कि आप कितने अच्छे हैं, अंतराल को ध्यान में रखें। – sergtk

0

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

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

जब मैं किसी और की ओर से अनुमान लगाने के लिए कहा रहा हूँ, मैं (शायद एक अच्छा सन्निकटन "डबल और एक्स जोड़ें" जैसा कि ऊपर उल्लेख किया गया है) में थोड़ा और अधिक विरोध और एक उदार गद्दी प्रणाली के साथ एक समान व्यवहार का अनुसरण

0

फैक्टर # 1 अज्ञात है, और आप सही हैं, आप उन्हें सभी नहीं जान सकते हैं। हालांकि, आपको आमतौर पर कुछ प्रमुख प्रश्न पता चलेगा जो उस समय आपके लिए कोई जवाब नहीं दे सकता है।

फैक्टर # 2 हाथ में टूल्स और संसाधनों की कथित कठिनाई और उपलब्धता है।


परिणाम = मोटे तौर पर डबल अपने अनुमान

1
  • भागों में कार्य नीचे तोड़ और प्रत्येक भाग नहीं 1/2 की तुलना में एक दिन कम की इकाइयों में एक समय

  • कार्य आवंटित। यह माइक्रो-शेड्यूलिंग

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

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

वहाँ हमेशा आशावादी समय के पैमाने लेने और पीआई द्वारा यह गुणा करने का अच्छे पुराने स्टैंडबाय है करते हैं। इससे अधिक बार काम करता है!

3

आवश्यक टूटने के अलावा: व्यावहारिक प्रोग्रामर से मैंने जो सलाह सीखी है, वह हफ्तों में 15 दिनों से अधिक अनुमान व्यक्त करना है, और महीनों में 8 सप्ताह से अधिक का अनुमान है; ताकि इकाई अनुमान की सटीकता को प्रतिबिंबित करे। 30 सप्ताह से ज्यादा सावधान रहें।

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

0

परिमाण के सही क्रम में अनुमान लगाने के लिए, आप की जरूरत:

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

एक संख्या के बारे में सोचें, इसे दोहराएं और फिर इसे दोबारा दोहराएं (यानी। आपके सिर में पहली बार चार गुना पॉप)

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

अंगूठे का एक नियम होगा:

'पहले नंबर' के दिनों की संख्या आपको लगता है कि यह कार्य के रूप में ही वर्णित के दायरे के आधार पर कार्य को पूरा करने के लिए ले जाएगा है। (लेकिन निश्चित रूप से, आपको सबकुछ नहीं बताया गया है)।

पहले कई अतिरिक्त समय पहले प्रदर्शन/मालिक को दी प्रोटोटाइप के बाद पुनःकूटित करने की जरूरत है और वह कहते हैं, "अच्छा, महान। लेकिन आप जोड़ सकते हैं ..."

दूसरा एक से अधिक समय है उत्पादन के लिए सही मानक तक रिकोड को रिकोड करने की आवश्यकता है।

तीसरा एकाधिक परीक्षण के लिए समय है, प्रलेखन & परिनियोजन और अन्य सभी व्यवस्थापक सामान जो आपको वास्तव में चीज़ को बाहर निकालने और जीने के लिए करने की ज़रूरत है।

और चौथा एकाधिक उपर्युक्त के लिए आपकी आकस्मिकता है।

यह आपको एक सुरक्षित अनुमान देना चाहिए। बेशक, आपको जोर देना चाहिए कि एक और पूरी तरह से योजना और आकलन अभ्यास।

0

मुझे विश्वास है कि उत्तर हमेशा "छह से आठ सप्ताह" होता है।

0

"छः से आठ सप्ताह" वास्तव में अच्छी तरह से काम करता है, एक अन्य चीज जो काम करती है वह डेटा मॉडल पर आधारित होती है।

एप्लिकेशन के लिए आवश्यक डेटाबेस टेबल (या समान) की संख्या की कल्पना करें, प्रत्येक तालिका के लिए मॉडल, सीआरयूडी, यूआई आदि को कोड करने के लिए आपको कितने दिन की आवश्यकता है और 30% से 50% के बीच जोड़ें उस के शीर्ष पर समय।