পাঠ ২৭ · ৫৭-এর মধ্যে · মডিউল ৬
Home / Courses / Ethics in Computing & AI Safety / অ্যাকাউন্টেবিলিটি

অ্যাকাউন্টেবিলিটি ও "প্রবলেম অফ মেনি হ্যান্ডস"

Accountability and the problem of many hands
৯ মিনিট পড়া মধ্যবর্তী · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • "প্রবলেম অফ মেনি হ্যান্ডস" ধারণাটি সুনির্দিষ্টভাবে বোঝা
  • কেন বিতরিত দায়িত্ব ঐতিহ্যগত (একক-ব্যক্তি-কেন্দ্রিক) অ্যাকাউন্টেবিলিটি মডেলকে চ্যালেঞ্জ করে
  • "সবাই কিছুটা দায়ী" আর "কেউ দায়ী নয়" -- এই দুটো ভুল সিদ্ধান্তের মধ্যে পার্থক্য
  • Python দিয়ে একটি সিন্থেটিক দৃশ্যকল্পে একটি "কন্ট্রিবিউশন ম্যাট্রিক্স" গণনা -- কার অবদান কতটা

১ · দায়ভার যখন বিতরিত থাকে

L26-এ আমরা দেখেছি কীভাবে একাধিক পক্ষের ছোট ছোট, প্রত্যেকের প্রেক্ষাপটে হয়তো যুক্তিসঙ্গত মনে হওয়া সিদ্ধান্ত একত্রে একটি মারাত্মক ব্যর্থতা তৈরি করতে পারে। এই ধরনের পরিস্থিতিকে দার্শনিক ও প্রকৌশল-এথিক্সের সাহিত্যে "প্রবলেম অফ মেনি হ্যান্ডস" বলা হয় -- যখন একটি জটিল সিস্টেমে এত বেশি মানুষ ও প্রক্রিয়া জড়িত থাকে যে কোনো একক ব্যক্তির সিদ্ধান্তকে চূড়ান্ত ফলাফলের একমাত্র কারণ হিসেবে চিহ্নিত করা যায় না।

এটি একটি গুরুত্বপূর্ণ ভারসাম্যের প্রশ্ন তোলে। একদিকে, "অনেকে জড়িত ছিল" বলে দায় সম্পূর্ণভাবে অস্বীকার করা (কেউ দায়ী নয়) স্পষ্টতই ভুল -- প্রকৃত ক্ষতি ঘটেছে, এবং কারো না কারো সিদ্ধান্তই তা ঘটিয়েছে। অন্যদিকে, একজন একক ব্যক্তিকে (সাধারণত সবচেয়ে দৃশ্যমান বা সবচেয়ে কম ক্ষমতাবান কাউকে) সম্পূর্ণ দায় চাপিয়ে দেওয়াও ভুল যদি প্রকৃত সিদ্ধান্তগুলো ব্যাপকভাবে বিতরিত ছিল। সঠিক দৃষ্টিভঙ্গি হলো: দায়ভার আনুপাতিকভাবে বিতরণ করা, সম্পূর্ণ অস্বীকার বা সম্পূর্ণ কেন্দ্রীভূতকরণ -- কোনোটিই নয়।

২ · একটি সিন্থেটিক কন্ট্রিবিউশন ম্যাট্রিক্স

নিচের দৃশ্যকল্পটি সম্পূর্ণ কাল্পনিক ও ইলাস্ট্রেটিভ -- এটি L26-এর বাস্তব Boeing কেসের কোনো নির্দিষ্ট তথ্য পুনর্ব্যবহার করছে না, বরং একটি সাধারণ, জেনেরিক পরিস্থিতি তৈরি করছে: একটি কাল্পনিক সেফটি-ক্রিটিক্যাল সফটওয়্যার ত্রুটি যা প্রোডাকশনে ক্ষতির কারণ হয়েছে। L03-এর স্টেকহোল্ডার ইমপ্যাক্ট ম্যাট্রিক্সের ধারণাটিকে এখানে উল্টে দেওয়া হয়েছে -- এবার আমরা "কে প্রভাবিত হলো" নয়, বরং "কে কতটা কার্যকারণগতভাবে অবদান রাখলো" তা আনুমানিকভাবে স্কোর করছি এবং যোগ করছি।

Python
# সিন্থেটিক, ইলাস্ট্রেটিভ দৃশ্যকল্প -- কোনো নির্দিষ্ট বাস্তব কোম্পানি বা ঘটনার তথ্য নয়।
# একটি কাল্পনিক সেফটি-ক্রিটিক্যাল সফটওয়্যার ত্রুটি যা প্রোডাকশনে ক্ষতির কারণ হয়েছে।
# "causal_contribution" মান লেখক কর্তৃক নির্ধারিত একটি ইলাস্ট্রেটিভ অনুমান, কোনো বাস্তব
# তদন্তের ফলাফল নয় -- লক্ষ্য হলো "দায় বিতরিত হতে পারে" ধারণাটি সংখ্যা দিয়ে দেখানো।

contributors = [
    {"role": "ডিজাইন ইঞ্জিনিয়ার",         "causal_contribution": 0.25},
    {"role": "কোড রিভিউয়ার",              "causal_contribution": 0.15},
    {"role": "QA/টেস্ট লিড",                "causal_contribution": 0.20},
    {"role": "ইঞ্জিনিয়ারিং ম্যানেজার",     "causal_contribution": 0.15},
    {"role": "সেফটি সার্টিফায়ার/রেগুলেটর", "causal_contribution": 0.15},
    {"role": "নির্বাহী (ডেডলাইন-চাপ)",      "causal_contribution": 0.10},
]

total_contribution = sum(c["causal_contribution"] for c in contributors)

print("পক্ষ                            | আনুমানিক কার্যকারণ-অবদান")
for c in contributors:
    pct = c["causal_contribution"] * 100
    print(f"{c['role']:<30} | {pct:>5.1f}%")

print(f"\nমোট কার্যকারণ-অবদান: {total_contribution*100:.1f}%")

largest = max(contributors, key=lambda c: c["causal_contribution"])
print(f"সবচেয়ে বড় একক অবদান: {largest['role']} ({largest['causal_contribution']*100:.1f}%) -- তবুও ৫০%-এর অনেক নিচে")

others_combined = total_contribution - largest["causal_contribution"]
print(f"বাকি সব পক্ষের সম্মিলিত অবদান: {others_combined*100:.1f}%")

    
লক্ষ্য করুন -- ছয়টি পক্ষের অবদান যোগ করলে মোট ১০০% হয় (এই ইলাস্ট্রেটিভ মডেলে), অথচ সবচেয়ে বড় একক অবদানও (ডিজাইন ইঞ্জিনিয়ার, ২৫%) সংখ্যাগরিষ্ঠের অনেক নিচে। বাকি পাঁচটি পক্ষ মিলে ৭৫% অবদান রাখে। এটিই "প্রবলেম অফ মেনি হ্যান্ডস"-এর সংখ্যাগত সারমর্ম -- কোনো একক পক্ষ দায়ের সংখ্যাগরিষ্ঠ অংশ বহন না করলেও, প্রত্যেকের অবদান প্রকৃত এবং শূন্য নয়।
ভুল চরম ১ "অনেকে জড়িত, তাই কেউ দায়ী নয়" সঠিক দৃষ্টিভঙ্গি দায় আনুপাতিকভাবে বিতরিত ভুল চরম ২ একজনকে সম্পূর্ণ দায়ী করা কন্ট্রিবিউশন ম্যাট্রিক্স: প্রতিটি পক্ষের আনুমানিক অবদান আলাদাভাবে মূল্যায়ন করে
দায়মুক্তির অজুহাত এবং একক-ভিলেন উভয় দৃষ্টিভঙ্গিই সমস্যাজনক -- একটি কন্ট্রিবিউশন ম্যাট্রিক্স প্রতিটি পক্ষের বাস্তব, আংশিক অবদানকে স্বীকার করার একটি কাঠামো দেয়।
প্রফেশনাল এথিক্স মডিউলের সাথে সম্পর্ক

M5-এর প্রফেশনাল কোড অফ কন্ডাক্ট পাঠে আলোচিত নীতিগুলো (সততা, জনস্বাস্থ্য/নিরাপত্তার অগ্রাধিকার) প্রতিটি ব্যক্তিগত ভূমিকার জন্য প্রযোজ্য -- কিন্তু এই পাঠ দেখায় যে ব্যক্তিগত এথিক্যাল আচরণ যথেষ্ট নয় যদি প্রাতিষ্ঠানিক কাঠামো (যেমন ডেডলাইন-চাপ বা অপর্যাপ্ত রিভিউ প্রক্রিয়া) ব্যক্তিদের ভালো সিদ্ধান্ত নেওয়া কঠিন করে তোলে।

মূল কথা · Key takeaway

যখন একটি খারাপ ফলাফল অনেক মানুষের ছোট ছোট সিদ্ধান্তের সম্মিলিত ফল হয়, তখন ন্যায্য অ্যাকাউন্টেবিলিটির অর্থ হলো প্রতিটি পক্ষের প্রকৃত, আনুপাতিক অবদান স্বীকার করা -- না দায় সম্পূর্ণ অস্বীকার করে, না একজনকে একক ভিলেন বানিয়ে। এই দৃষ্টিভঙ্গি প্রাতিষ্ঠানিক সংস্কারের (শুধু ব্যক্তিগত শাস্তির নয়) দিকে মনোযোগ আকর্ষণ করে -- কারণ বিতরিত দায় প্রায়ই বিতরিত সমাধান দাবি করে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন -- তারপর "→ উত্তর" চাপুন।

প্র ০১ "অনেকে জড়িত ছিল, তাই কেউ দায়ী নয়" -- এই যুক্তিটি কেন সমস্যাজনক?

কারণ এটি বাস্তব ক্ষতির কারণ হওয়া প্রকৃত সিদ্ধান্তগুলোকে অস্বীকার করে না, শুধু তাদের দায়কে অদৃশ্য করে দেয়। যদি কেউ কোনো দায় স্বীকার না করে, তাহলে ভবিষ্যতে একই ধরনের সিদ্ধান্ত পুনরাবৃত্তি হওয়ার সম্ভাবনা থেকে যায় -- জবাবদিহিতা ছাড়া প্রাতিষ্ঠানিক শিক্ষা ঘটে না।

প্র ০২ একজন একক ব্যক্তিকে (যেমন সবচেয়ে কম ক্ষমতাবান কর্মীকে) সম্পূর্ণ দায়ী করা কেন প্রায়ই অন্যায্য?

কারণ এটি প্রায়ই প্রকৃত ক্ষমতার কাঠামো উপেক্ষা করে -- একজন জুনিয়র ইঞ্জিনিয়ার হয়তো একটি সিদ্ধান্তের বাস্তবায়ন করেছেন, কিন্তু সেই সিদ্ধান্তের পেছনের সময়সীমা, রিসোর্স, বা নীতিগত চাপ তৈরি করেছিলেন আরও ক্ষমতাবান পক্ষ। একক ব্যক্তিকে দায়ী করা প্রকৃত প্রাতিষ্ঠানিক সমস্যাগুলোকে আড়াল করে দেয় এবং ভবিষ্যতে একই কাঠামোগত সমস্যার পুনরাবৃত্তি ঠেকায় না।

প্র ০৩ উপরের কোড সেলে যদি "নির্বাহী (ডেডলাইন-চাপ)"-এর causal_contribution বাড়িয়ে 0.30 করা হতো (এবং অন্য কোনো মান সমন্বয় না করা হতো), তাহলে মোট কত হতো, এবং এটি কী সমস্যা তৈরি করে?

মোট হতো 0.25+0.15+0.20+0.15+0.15+0.30 = 1.20 অর্থাৎ ১২০% -- যা অর্থহীন, কারণ মোট কার্যকারণ-অবদান ১০০%-এর বেশি হতে পারে না (এটি একটি "সম্পূর্ণ ভাগ করে দেওয়া" মডেল)। এই সীমাবদ্ধতাই দেখায় যে একটি পক্ষের অবদান বাড়ালে বাস্তবে অন্য কোনো পক্ষের অবদান কমাতে হবে -- মোট দায় স্থির, শুধু তার বণ্টন পরিবর্তনযোগ্য।

অনুশীলন

  1. চিন্তা করুন: আপনার পরিচিত কোনো সংস্থা বা প্রকল্পে এমন একটি ব্যর্থতার কথা ভাবুন (কাল্পনিক হলেও চলবে) যেখানে একাধিক ব্যক্তি বা দল জড়িত ছিল। প্রতিটি পক্ষের অবদান আলাদা করে চিহ্নিত করার চেষ্টা করুন।

    বেশিরভাগ বাস্তব সাংগঠনিক ব্যর্থতায় সাধারণত অন্তত তিন-চারটি স্তর জড়িত থাকে -- যিনি সিদ্ধান্ত বাস্তবায়ন করেছেন, যিনি তা পর্যালোচনা করেছেন (বা করেননি), যিনি সময়সীমা/রিসোর্স নির্ধারণ করেছেন, এবং যিনি সামগ্রিক নীতি ঠিক করেছেন। প্রতিটি স্তরে একটি ছোট ফাঁক থাকলেও, সবগুলো একত্রে বড় সমস্যা তৈরি করতে পারে।

  2. পরীক্ষা করুন: উপরের কোড সেলে একটি নতুন পক্ষ যোগ করুন -- যেমন {"role": "থার্ড-পার্টি ভেন্ডর", "causal_contribution": 0.05} -- এবং বাকি মানগুলো এমনভাবে সমন্বয় করুন যাতে মোট আবার ঠিক ১০০% হয়। Run চেপে যাচাই করুন।

    যেকোনো একটি বা একাধিক বিদ্যমান পক্ষের মান সামান্য কমিয়ে মোট ১০০%-এ ফিরিয়ে আনা যায় -- উদাহরণস্বরূপ "নির্বাহী"-র মান 0.10 থেকে 0.05-এ কমিয়ে নতুন "থার্ড-পার্টি ভেন্ডর"-কে 0.05 দেওয়া যেতে পারে। এই ছোট ব্যায়ামটি দেখায় যে বাস্তব তদন্তেও নতুন তথ্য পাওয়া গেলে (যেমন একটি ভেন্ডরের ভূমিকা আবিষ্কৃত হলে) বিদ্যমান পক্ষগুলোর আনুমানিক অবদান পুনর্মূল্যায়ন করতে হয়, মোট সবসময় স্থির থাকে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
কেস স্টাডি: Boeing 737 MAX MCAS