এই অনেক প্রশ্নের মত, আমি মনে করি উত্তরটি হ'ল:
এটা নির্ভর করে
বিশ্বাস করার কারণ রয়েছে যে প্রত্যেক প্রোগ্রামারকে কোডের প্রতিটি লাইন জানতে হবে এমন অবস্থান নেওয়া বিপথগামী।
যদি আমরা এক মুহুর্তের জন্য ধরে নিই যে কোনও কোডের একটি গভীর বোঝার সাথে যে কেউ একেবারেই জানেন না তার চেয়ে 5 গুণ দ্রুত পরিবর্তন করবে (আমার অভিজ্ঞতায় বিশ্বাসের এক বিশাল লাফ নয়) এবং এটি প্রায় এক মাস সময় নেয় উল্লেখযোগ্য আকারের মডিউলটি (অযৌক্তিকও নয়) এর সত্যিকারের ভাল ধারণা পাওয়ার জন্য কোডিংয়ের অভিজ্ঞতার পরে আমরা কয়েকটি (সম্পূর্ণ বোগাস এবং কল্পিত) সংখ্যা চালাতে পারি:
- প্রোগ্রামার এ: গভীর বোঝাপড়া আছে
- প্রোগ্রামার বি: কোনটিই নয়
আসুন বলুন প্রোগ্রামার এ প্রতিদিন 1 ইউনিট কাজ করে। 5 কর্ম দিবসের 4 সপ্তাহের মধ্যে সে 20 ইউনিট কাজ করতে পারে।
সুতরাং প্রোগ্রামার বি, প্রতিদিন ২.২ ইউনিট কাজ শুরু করে এবং তার ২০ তম দিনে (২১ তম দিনে তারা প্রোগ্রামার এ হিসাবে ভাল) কাজ শেষ করে, একই সাথে ১১..6 ইউনিট কাজ সম্পাদন করবে 20 দিনের সময়কাল। সেই মাসে প্রোগ্রামার বি প্রোগ্রামার এ এর সাথে তুলনা করে 58% দক্ষতা অর্জন করেছিল তবে আপনার কাছে এখন আর একজন প্রোগ্রামার আছেন যিনি সেই মডিউলটিও প্রথমটি জানেন।
অবশ্যই, একটি শালীন আকারের প্রকল্পে, আপনার কাছে ... 50 টি মডিউল থাকতে পারে? সুতরাং তাদের সকলের সাথে পরিচিত হতে আপনাকে প্রায় 4 বছর সময় নেয় এবং এর অর্থ হল প্রোগ্রামার এ ... এইচএমএম এর তুলনায় লার্নিং প্রোগ্রামারটি গড়ে 58% দক্ষতার সাথে কাজ করে।
সুতরাং এই পরিস্থিতিটি বিবেচনা করুন: একই প্রোগ্রামাররা, একই প্রকল্প (এ সবই জানে, এবং বি এর কিছুই জানে না)) বলুন যে বছরের 250 টি কার্যদিবস রয়েছে। ধরে নেওয়া যাক যে কাজের চাপ 50 মডিউলগুলিতে এলোমেলোভাবে বিতরণ করা হয়েছে। যদি আমরা উভয় প্রোগ্রামারকে সমানভাবে বিভক্ত করি তবে এ এবং বি উভয়ই প্রতিটি মডিউলে 5 কার্যদিবস পান। এ প্রতিটি মডিউলটিতে 5 টি ইউনিট কাজ করতে পারে, তবে বি কেবল পেয়ে যায়, আমার সামান্য এক্সেল সিমুলেশন অনুযায়ী, প্রতিটি মডিউলটিতে 1.4 ইউনিট কাজ করা হয়েছে। মোট (A + B) মডিউল প্রতি কাজের 6.4 ইউনিট। কারণ বি তাদের বেশিরভাগ সময় তারা যে মডিউলটিতে কাজ করছেন তাতে কোনও দক্ষতা ছাড়াই ব্যয় করে।
এই পরিস্থিতিতে, মডিউলগুলির একটি ছোট উপসেটে বি ফোকাস করা আরও অনুকূল। বি যদি কেবল 25 টি মডিউলগুলিতে মনোনিবেশ করে তবে তারা প্রতিটিটির জন্য 10 দিন সময় পাবে, প্রতিটিটিতে কাজ করে মোট 3.8 ইউনিট। প্রোগ্রামার এ তারপরে বি কাজ করছে না এমন ২৫ টি মডিউলগুলিতে প্রতিটি 7 দিন এবং বি হিসাবে একই কাজ করে প্রতিটি 3 দিন ব্যয় করতে পারে মোট উত্পাদনশীলতা 6.8 থেকে 7 ইউনিট পর্যন্ত গড়, গড় 6.9, এবং এটি উল্লেখযোগ্যভাবে বেশি A এবং B সমানভাবে কাজটি ছড়িয়ে দেওয়ার সময় আমরা মডিউলটির 6.4 ইউনিটগুলির চেয়ে বেশি হয়েছি।
আমরা যে মডিউলগুলির বি কাজ করে তার পরিধি সংকীর্ণ করার সাথে সাথে আমরা আরও দক্ষতা পেয়েছি (এক বিন্দু পর্যন্ত)।
প্রশিক্ষণ
আমি আরও যুক্তি দিয়ে বলব যে যে কেউ মডিউল সম্পর্কে খুব বেশি জানেন না সে সেই ব্যক্তিকে বাধা দেবে যিনি আরও অভিজ্ঞতার সাথে অনেক বেশি কিছু করেন। সুতরাং উপরের এই সংখ্যাগুলি বিবেচনা করবেন না যে বি তারা যে কোডটি বুঝতে পারে না তার জন্য যত বেশি সময় ব্যয় করে, এ-এর আরও বেশি সময় প্রশ্ন জিজ্ঞাসা করে নেয় এবং কখনও কখনও এ কী করে তা ঠিক করতে বা সমস্যা সমাধানে সহায়তা করে। কাউকে প্রশিক্ষণ দেওয়া সময় সাপেক্ষ কার্যকলাপ।
সন্তোষজনক সমাধান
সে কারণেই আমি মনে করি যে সর্বোত্তম সমাধানটি এই জাতীয় প্রশ্নের উপর ভিত্তি করে তৈরি করতে হবে:
- আপনার দলটি কত বড়? প্রত্যেকে প্রত্যেকটি অংশকে প্রশিক্ষিত করে তোলা কি অর্থবোধ করে না, বা যদি আমাদের একটি 10 জন ব্যক্তি থাকে তবে আমরা কি কেবলমাত্র প্রতিটি মডিউলটি কমপক্ষে 3 জন ব্যক্তি দ্বারা পরিচিত কিনা তা নিশ্চিত করতে পারি? (10 প্রোগ্রামার এবং 50 টি মডিউল সহ প্রতিটি প্রোগ্রামারকে 3x কভারেজ পেতে 15 টি মডিউল জানতে হবে))
- আপনার কর্মচারী টার্নওভার কেমন? যদি আপনি প্রতি 3 বছরে গড়ে কর্মীদের উপর ঝুঁকছেন, এবং সিস্টেমের প্রতিটি কোণটি সত্যিই জানতে এটির চেয়ে বেশি সময় লাগবে, তবে প্রশিক্ষণটি তাদেরকে ফেরত দেওয়ার পক্ষে তারা যথেষ্ট সময় পাবে না।
- সমস্যাটি নির্ণয়ের জন্য আপনার কি সত্যিই বিশেষজ্ঞের প্রয়োজন? অনেক লোক অজুহাতটি ব্যবহার করে, "যদি সেই ব্যক্তি ছুটিতে যায় তবে", তবে এমন কোনও সিস্টেমে আমার কোনও অভিজ্ঞতা নেই বলে চিহ্নিত করার জন্য আমাকে বহুবার ডাকা হয়েছিল। এটি সত্য হতে পারে যে অভিজ্ঞ ব্যক্তি এটির দ্রুত আবিষ্কার করতে পারে তবে এর অর্থ এই নয় যে আপনি তাদের ছাড়া এক বা দুই সপ্তাহ বাঁচতে পারবেন না। কয়েকটি সফ্টওয়্যার সিস্টেম এতটাই মিশন সমালোচনামূলক যে সমস্যাটি 5 ঘন্টার পরিবর্তে 1 ঘন্টার মধ্যে নির্ণয় করতে হবে বা বিশ্ব শেষ হয়ে যাবে। আপনাকে এই ঝুঁকিগুলি ওজন করতে হবে।
সে কারণেই আমি "এটি নির্ভর করে" বলে মনে করি। আপনি ঠিক মাঝখানে দুটি প্রোগ্রামার মধ্যে 20 টি মডিউল বিভক্ত করতে চান না (প্রতিটি 10), কারণ তখন আপনার কোনও নমনীয়তা নেই, তবে আপনি 50 টি মডিউলটিতে ট্রেন 10 প্রোগ্রামারও অতিক্রম করতে চান না কারণ আপনি প্রচুর হারান দক্ষতা এবং আপনার এতটা অপ্রয়োজনীয় দরকার নেই।