"এইটা করতে কতটুকু টাইম লাগবে?"
"এই চেঞ্জ করতে কতটুকু কঠিন হবে?"
আপনি যদি রেগ ওয়ার ফラストেটেড ফিল করছেন, তবে আপনি সম্ভবত একজন সফটওয়্যার ডেভেলপার। এস্টিমেশন পেইনফুল, বিশেষ করে যখন যে ব্যক্তি আপনাকে একটি টাস্ক এস্টিমেট করতে বলছে (চলুন তাকে 'বব' বলি) সেটি সম্পর্কে শুধু একটি রफ़ আইডিয়া রেখেছে। এই পেইনের অনেক অংশ বব চায় এবং আপনি কী মনে করেন বব চায় সেটির পার্থক্য থেকে আসে।
এস্টিমেশন গোল নয়
একজন ডেভেলপার হিসেবে, আমি একটি এস্টিমেশনকে ভাবি "গড়ে কতটুকু টাইম লাগবে আমাকে একটি টাস্ক অকম্পলিশ করতে?" আমি ফラストেটেড হই কারণ আমার সাধারণত এতটুকু ইনফো থাকে না যে আমি সেই কুয়েশনের উত্তর দিয়ে দিই, এবং আমি জানি আমাকে আমার কথা অনুযায়ী জাজ করা হবে। আমি অনুমান করি এই এস্টিমেশন হিট করার আমার ক্ষমতা আমার সামগ্রিক পারফরম্যান্সের ইন্ডিকেটর হবে, তাই আমি স্ট্রেসড এবং অ্যানয়েড হই।
সেগুলো একটি কমিউনিকেশন টুল
যেকোনো প্রোডাক্ট যা শিপ হয় তার উপর ডিপেন্ড করা কিছু কিছু জিনিস থাকে। কোম্পানি কত বড় সেটি উপর ডিপেন্ড করে, সেটি হতে পারে মার্কেটিং, পাব্লিসিটি, বিজনেস অ্যানালিসিস, ফিউচার প্রোডাক্ট প্ল্যানিং, বা আরও অনেক কিছুর। এর মানে বব যে আন্সারটি খুঁজছে সেটি হল "আমি কখন থেকে অনুমান করতে পারব এই জিনিসটি হবে, যাতে আমি সেটির ওপর ডিপেন্ডেন্ট জিনিসগুলো প্ল্যান করা শুরু করতে পারি?"
আমি উত্তর দিচ্ছি "এইটা হোক এই সময় পর্যন্ত হয়ে যাবে...", কিন্তু বব খুঁজছে "এইটা হবে এই সময় পর্যন্ত..."।
David Bryant Copeland-র একটি চমৎকার বই আছে, The Senior Software Engineer, যা এর প্রথম চ্যাপ্টারে এই बारे আলোচনা করে:
একজন সিনিয়র সফটওয়্যার ইঞ্জিনিয়ার বিশ্বস্ত এবং এক্সপেক্টেড করা হয় সবচেয়ে গুরুত্বপূর্ণ কাজ করার জন্য এবং সেটি নির্ভরযোগ্যভাবে করা। সেটি অর্জন করার উপায় হল আপনি যা কিছু করেন সেটি রেজাল্ট ডেলিভারির ওপর ফোকাস করা।
এটি মনে রেখে, ববকে তার শর্তে মিট করা বেস্ট। এর মানে হলো:
-
এস্টিমেশন ৯০% কনফিডেন্সে করা উচিত, ৫০% নয়
বব জানতে চায় সে কখন থেকে ডিপেন্ডেন্ট জিনিসগুলো প্ল্যান করা শুরু করতে পারবে। যদি এর মানে হয় এস্টিমেশন প্যাড করা দরকার (সম্ভবত দরকার), তাহলে সেটি ঠিক। যদি এর মানে হয় আপনাকে এক বা দুই ঘণ্টা পর 그에게 ফিরে যেতে হয়, সেটিও ঠিক।
-
এস্টিমেশন টাইম-টু-শিপ বেসড হওয়া উচিত, টাইম-টু-টেস্ট-হ্যান্ডঅফ বা টাইম-টু-ডিপ্লয়-কিউ বা অন্য কিছুতে নয়
এটি রেজাল্ট ডেলিভারির ওপর ফোকাসে ফিরে যায়। যদি বব একটি প্রোজেক্ট শিপ হওয়ার জন্য অপেক্ষা করছেন, তবে এটা কিউতে আটকে থাকলে তার কোনো লাভ নেই। এটি সাধারণত মানে এস্টিমেশন আবার প্যাড করা দরকার, যা ঠিক।
-
সেরা এস্টিমেশন často হয় "আমি এখন উত্তর দিতে পারছি না, কিন্তু আমি ফিরে যাব।"
৯০%-কনফিডেন্স টাইম-টু-শিপ এস্টিমেশনে পৌঁছানো অনেক সহজ হয় যদি এস্টিমেশন ছোট ছোট অংশে ভাঙা থাকে, যেগুলো প্রতিটি বুঝতে সহজ। অনেক বই এক্যুরেট এস্টিমেশন করার ট্যাক্টিক্স আলোচনা করে, কিন্তু এই পোস্টের স্কোপের বাইরে।
কি হয় যদি আমাকে বলা হয় যে আমি যথেষ্ট দ্রুত চলছি না?
যেখানে কোথাও আমি কাজ করেছি, আমাকে বলা হয়েছে ম্যানেজমেন্ট চায় আমরা আরও দ্রুত চলে। কতটুকু দ্রুত প্রোডাক্ট ডেলিভার হোক, এমনকি কোয়ালিটি সম্পূর্ণ স্যাক্রিফাইস করলেও, এমনকি এস্টিমেশন абсолют ইনসেইন হোক, এমনকি আপনি ২০ ঘণ্টা দিনে কাজ করলেও, ম্যানেজমেন্ট এখনো চাইবে আপনি আরও দ্রুত চলেন। এটি একটি ডেভেলপারের কাজ যে সেটি শুধু একটি উইশ এবং তাদের কাজ করা হল একটি ফাস্ট বাট মেইনটেইনেবল পেস মেনে চলা, প্রেডিক্টেবল হয়া, রেজাল্ট ডেলিভার করা, এবং একটি হাই কোয়ালিটি বারে রাখা।
কি হয় যখন আমি হাস্যকরভাবে আমার এস্টিমেশন বীট করি এবং লাগে আমার এস্টিমেশনগুলো অবিশ্বাস্যভাবে প্যাডেড?
আমি কখনো किसीকে রেগুলারলি ওভারএস্টিমেট করার জন্য পানিশড হয়ে দেখিনি, এবং এটি পরবর্তীবার পে আপনি একটি প্রোজেক্ট পাবেন যা আপনার এক্সপেক্টেশন থেকে অনেক বেশি লম্বা হবে সেটি পে আউট করবে। একটি দিয়ে দিয়ে ওভারএস্টিমেশন অনেক, অনেক ভালো অন্ডারএস্টিমেশন থেকে একই পরিমাণে (আমি মনে করি এটি вероятно লস এভারশনের মত)। অধিকাংশ সময়, একটি ব্যাকলগ থাকবে এবং আপনি পরবর্তী টাস্ক আগে শুরু করতে পারবেন। চমৎকার!
আপনি যদি ৫০% কেস টার্গেট করেন, তবে আনএক্সপেক্টেড কমপ্লিকেশন পুরো প্রোডাক্ট শিডিউল ধ্বংস করতে পারে। আপনি সেটি প্রায় আধা সময় করবেন! আপনি যদি ৯০% কেস টার্গেট করেন, তবে জিনিসগুলো খারাপ হলে, বাকি শিডিউল ইনটেন্ডেড মত অপারেট করতে পারবে। প্রোডাক্ট টাইমে শিপ হবে, সবাই খুশি, আপনি রেইজ এবং প্রোমোশন পাবেন, এবং সেরা রিওয়ার্ড: আপনি আরও এস্টিমেশন করতে পারবেন!