मेरे व्यक्तिगत अनुभव के अनुसार, पेमदास ने जो कहा है , वह बिल्कुल विपरीत है : अभ्यास के साथ, मैंने अभी समझा है कि किसी कार्य के लिए कितने समय की आवश्यकता होगी, इसका अनुमान लगाना पूरी तरह असंभव है। सॉफ्टवेयर विकास में अपने करियर की शुरुआत में, मैंने अक्सर "45 दिन", "पांच सप्ताह" आदि जैसे अनुमान दिए, फिर समय में समाप्त करने की बहुत कोशिश की। कुछ वर्षों के बाद, मैंने "लगभग एक महीना", "पाँच से सात सप्ताह" जैसे कम सटीक अनुमान देने शुरू कर दिए, आदि, वास्तव में, मैं या तो किसी भी अनुमान को नहीं देने की कोशिश करता हूं, या ग्राहक को अपना अनुमान देने के लिए कहता हूं। या समय सीमा या मैं जितना संभव हो उतना अनुमान दे सकता हूं।
एक अनुमान लगाना इतना मुश्किल क्यों है? क्योंकि यह जानना लगभग असंभव है कि वास्तव में इसे लिखने से पहले पूरे स्रोत कोड को कैसे लिखा जाएगा, और क्योंकि आपका काम अन्य लोगों के काम के रूप में यादृच्छिक चीजों पर निर्भर करता है, आपकी प्रेरणा, आदि। यहां संभावित कारणों की अधिक विस्तृत सूची है:
यह जानना आसान नहीं है कि किसी उत्पाद को करने के लिए वास्तव में क्या आवश्यक है, और विशेष रूप से यह कैसे करना है । बहुत बार मैंने एक आवेदन के कुछ हिस्सों को शुरू किया, काम के दिनों की तुलना में, यह समझा कि मेरा पहला दृष्टिकोण गलत था, और यह कि चीजों को करने का एक बेहतर और बेहतर तरीका है।
कुछ समस्याएं उत्पन्न हो सकती हैं । उदाहरण के लिए, यदि, अपना काम शुरू करने के लिए, आपको अपने मशीन पर एक फैंसी SQL सर्वर स्थापित करना होगा और इंस्टॉलेशन विफल हो जाता है और समर्थन कुछ भी नहीं है, तो आप इस समस्या को हल करने में सप्ताह बिता सकते हैं।
आवश्यकताएँ अक्सर पर्याप्त स्पष्ट नहीं होती हैं , लेकिन शुरुआत में उन्हें पढ़ने के बाद, आपको लगता है कि वे हैं। कभी-कभी आप समझ सकते हैं कि 'ए' का मतलब है, और, उन्हें लागू करना शुरू करने के बाद, आप देखेंगे कि उनका मतलब 'बी' है।
ग्राहक आपकी आवश्यकताओं को तब बदलते हैं, जब आपने संबंधित भाग को अभी-अभी समाप्त किया है , और वे वास्तव में यह नहीं समझते हैं कि आप एक छोटे से बदलाव के लिए दो और सप्ताह और $ 2000 का अनुरोध क्यों कर रहे हैं, क्योंकि वे नहीं देखते हैं कि इस छोटे से परिवर्तन की आवश्यकता है अन्य चीजों को बदलें, जिन्हें दूसरों को बदलने की आवश्यकता होती है, आदि।
आप अपनी प्रेरणा का अनुमान नहीं लगा सकते । ऐसे दिन हैं जब आप घंटों काम कर सकते हैं और अच्छी तरह से सफल हो सकते हैं। ऐसे सप्ताह होते हैं, जब कोड की दस पंक्तियाँ लिखने के बाद, आप प्रोग्रामर StackExchange पर स्विच करते हैं, और प्रश्नों का उत्तर देने वाले घंटे पढ़ते हुए बिताते हैं।
जब आपका अनुमान अन्य लोगों पर निर्भर करता है तो चीजें वास्तव में खराब हो जाती हैं । उदाहरण के लिए, एक 2 महीने की परियोजना में मुझे अपना खुद का काम पूरा करने के लिए एक डिजाइनर का इंतजार करना पड़ा। इस डिजाइनर ने अनुपयोगी बकवास का एक टुकड़ा देने से 3 महीने पहले लिया था। बेशक परियोजना देर हो चुकी थी।
आपका अनुमान आपके ग्राहक पर भी निर्भर करता है । मेरे पास ऐसे ग्राहक थे जो अपने मेल का जवाब देने से पहले हफ्तों बिताते हैं। यह वास्तव में आपके शेड्यूल को प्रभावित कर सकता है जब आपको उनके उत्तर की प्रतीक्षा करनी चाहिए (उदाहरण के लिए यदि आप उन्हें किसी आवश्यकता के बारे में पूछ रहे हैं)।
तुम क्या कर सकते हो?
बड़ा शेड्यूल दें । यदि आपको लगता है कि आप दो सप्ताह में काम कर सकते हैं, तो कहें कि आप इसे एक महीने में वितरित करेंगे।
स्पष्ट हो । यदि आप एक डिजाइनर, किसी अन्य डेवलपर, आदि पर भरोसा करते हैं, तो यह कहें। यह बताने के बजाय कि "मैं तीन महीने में उत्पाद वितरित करूंगा", यह कहें कि "मैं डिज़ाइनर द्वारा मुझे PSD फ़ाइलें प्रदान करने के बाद दो महीने में उत्पाद वितरित करूंगा।"
बता दें कि यदि आवश्यकताओं में हर दिन बदलाव होता है, तो परियोजना को समय पर वितरित नहीं किया जाएगा।
अपने शेड्यूल को स्लाइस करें । समय पर एक बड़ी परियोजना के कुछ हिस्सों को वितरित करना आसान है।
जब आप किसी ऐसे उत्पाद का उपयोग करते हैं, जिसे आप अच्छी तरह से नहीं जानते हैं या विशेष रूप से, जब आप किसी और के स्रोत कोड पर काम करेंगे, तो कभी भी अनुमान न दें: आप कभी भी यह अनुमान नहीं लगा सकते कि स्रोत कोड कितना भद्दा हो सकता है और आप कितना समय व्यतीत करेंगे डेली डब्ल्यूटीएफ के लिए इसे समझना और कॉपी-पेस्ट करना।