2.7

View in English

2.7 ডকুমেন্টেশন

পরিচিতি ও প্রেরণা

ডকুমেন্টেশন হলো সেই লিখিত জ্ঞান, যা মানুষকে কেবল কোড থেকে বোঝাপড়া জোড়া দিতে না হয়ে সফটওয়্যার ব্যবহার, পরিচালনা ও পরিবর্তন করতে দেয়। এটি বহু ধরনে আসে: কীভাবে শুরু করবেন, কীভাবে একটি কাজ সম্পন্ন করবেন, একটি সিস্টেম কীভাবে কাঠামোবদ্ধ, একটি ঘটনায় কীভাবে সাড়া দেবেন, একটি API কী গ্রহণ করে ও ফেরত দেয়। প্রতিটি ভিন্ন প্রয়োজনের ভিন্ন পাঠকের সেবা করে। ভালো ডকুমেন্টেশন ঐচ্ছিক নয়। এটি বড় প্রতিষ্ঠান জুড়ে বড় হওয়া জ্ঞান এবং কেবল কয়েকজনের মাথায় বাস করা জ্ঞানের পার্থক্য।

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

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

মূল নীতিসমূহ

  • একটি নির্দিষ্ট প্রয়োজনের নির্দিষ্ট পাঠকের জন্য লিখুন; বিভিন্ন ধরনের ডকুমেন্টেশন ভিন্ন উদ্দেশ্য পূরণ করে।
  • ডকুমেন্টেশন কোডের কাছাকাছি রাখুন এবং কোডের মতো দেখুন (ডকস-অ্যাজ-কোড)।
  • সম্পূর্ণতার চেয়ে নির্ভুলতা ভালো; অল্প বিশ্বাসযোগ্য ডকুমেন্টেশন প্রচুর ভুল ডকুমেন্টেশনের চেয়ে ভালো।
  • যা তৈরি করা যায় তা তৈরি করুন; সত্যের উৎস থেকে টুল যা তৈরি করতে পারে তা হাতে রক্ষণাবেক্ষণ করবেন না।
  • ডকুমেন্টেশনের পচনের বিরুদ্ধে সক্রিয়ভাবে লড়ুন; সেকেলে ডক না থাকার চেয়েও খারাপ কারণ তা বিভ্রান্ত করে।
  • ডকুমেন্টেশন খুঁজে-পাওয়া-যায় করুন; খুঁজে না পাওয়া জ্ঞান কার্যত অনুপস্থিত।
  • শুধু বর্তমান অবস্থা নয়, সিদ্ধান্ত ও তার যুক্তি লিপিবদ্ধ করুন।

সুপারিশ

ডকস-অ্যাজ-কোড গ্রহণ করুন

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

Diátaxis কাঠামো দিয়ে বিষয়বস্তু সাজান

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

অপরিহার্য পরিচালনাগত নথি রক্ষণাবেক্ষণ করুন

প্রতিটি রিপজিটরিকে সামনের দরজা হিসেবে একটি স্পষ্ট README দিন: এটি কী, কীভাবে গড়তে ও চালাতে হয়, এবং পরবর্তী কোথায় যেতে হবে। পরিচালনাগত কাজ ও ঘটনা-প্রতিক্রিয়ার জন্য রানবুক লিখুন, যাতে কেবল বিশেষজ্ঞ নন, যে কেউ অন-কলে কাজ করতে পারেন। সিস্টেমের কাঠামো ও মূল উপাদান ব্যাখ্যা করা স্থাপত্য ডকুমেন্টেশন রাখুন। এবং একজন নতুন ইঞ্জিনিয়ারকে দ্রুত কার্যকর করে এমন অনবোর্ডিং ডকুমেন্টেশন দিন। এগুলো সেই নথি যা না থাকলে আপনি সবচেয়ে বেশি মিস করেন।

সত্যের উৎস থেকে API ডক ও চেঞ্জলগ তৈরি করুন

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

স্থাপত্য সিদ্ধান্ত লিপিবদ্ধ করুন

গুরুত্বপূর্ণ স্থাপত্য ও নকশা সিদ্ধান্ত হালকা, তারিখযুক্ত নথি হিসেবে ধরুন, যা প্রেক্ষাপট, সিদ্ধান্ত ও তার পরিণতি জানায়। এই সিদ্ধান্তের নথি সেই যুক্তি সংরক্ষণ করে যা অন্যথায় হারিয়ে যেত, যাতে ভবিষ্যৎ রক্ষণাবেক্ষকরা সিস্টেম যেমন কেন তা দেখতে পারেন, তা নিয়ে দ্বিতীয়বার অনুমান বা পুরোনো ভুলের পুনরাবৃত্তি না করে। এন্টারপ্রাইজ ও সরকারি সিস্টেমের দীর্ঘ আয়ুষ্কালে এগুলো বিশেষভাবে প্রতিদান দেয়।

ডকুমেন্টেশনের পচনের বিরুদ্ধে সুচিন্তিতভাবে লড়ুন

সেকেলে ডকুমেন্টেশনকে ত্রুটি হিসেবে দেখুন। আচরণ বদলানো একই পরিবর্তনের অংশ হিসেবে ডক হালনাগাদ করুন, এবং এটিকে রিভিউয়ের প্রত্যাশা করুন। মালিকানা বরাদ্দ করুন, যাতে প্রতিটি গুরুত্বপূর্ণ নথির জন্য কেউ দায়ী থাকেন। উচ্চ-মূল্যের ডকুমেন্টেশন মাঝে মাঝে নির্ভুলতার জন্য পর্যালোচনা করুন, অপ্রচলিত ছাঁটাই করুন, এবং যা আর বিশ্বাস করেন না তা সরান বা স্পষ্ট চিহ্নিত করুন। যে ডকুমেন্টেশন সবচেয়ে কম পচে তা জীবন্ত ডকুমেন্টেশন: সিস্টেমের বিপরীতে তৈরি বা পরীক্ষিত।

জ্ঞান ব্যবস্থাপনা ও খুঁজে-পাওয়া-যাওয়ায় বিনিয়োগ করুন

ভালো অনুসন্ধান, স্পষ্ট নেভিগেশন এবং একটি পরিচিত ঠিকানার মাধ্যমে ডকুমেন্টেশন খুঁজে-পাওয়া-যায় করুন, যাতে মানুষ কাউকে জিজ্ঞেস না করেই যা দরকার তা পায়। এটিকে অনেক বিচ্ছিন্ন উইকি ও টুলে ছড়িয়ে পড়তে দেবেন না। এবং অন্তর্নিহিত জ্ঞান, চ্যাট থ্রেড ও মানুষের মাথায় বাস করা অনানুষ্ঠানিক বোঝাপড়া, তা পিছলে যাওয়ার আগে টেকসই, খুঁজে-পাওয়া-যায় রূপে ধরুন।

ট্রেড-অফ: সুবিধা ও অসুবিধা

পদ্ধতিসুবিধাঅসুবিধা
ডকস-অ্যাজ-কোডভার্সনযুক্ত, পর্যালোচনাযোগ্য, কোডের কাছাকাছি; কম পচনইঞ্জিনিয়ারের শৃঙ্খলা লাগে; অ-প্রযুক্তিগত লেখকদের জন্য কম বান্ধব
উইকি / জ্ঞান-ভাণ্ডারসম্পাদনা সহজ; সবার জন্য সহজগম্যকোড থেকে সরে যায়; খণ্ডিত হয়; নিঃশব্দে পচে
তৈরি ডক (API, চেঞ্জলগ)সবসময় নির্ভুল; কম রক্ষণাবেক্ষণউৎস যা প্রকাশ করে তাতেই সীমিত; টুলিং লাগে
হাতে-লেখা ব্যাখ্যাযন্ত্র যা তৈরি করতে পারে না এমন সমৃদ্ধ প্রেক্ষাপট ও যুক্তিশ্রম-ঘন; সেকেলে হওয়ার প্রবণতা
Diátaxis কাঠামোপ্রতি পাতায় স্পষ্ট উদ্দেশ্য; নেভিগেট ও রক্ষণাবেক্ষণ সহজঅগ্রিম কাঠামো করার পরিশ্রম; লেখকের শৃঙ্খলা লাগে

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

আপনার দলের সঙ্গে আলোচনার প্রশ্ন

  1. আপনার নথিগুলো কি পাঠকের প্রয়োজন অনুযায়ী আলাদা, নাকি টিউটোরিয়াল, রেফারেন্স ও ব্যাখ্যা একটি পাতায় জট পাকিয়ে আছে? এই অধ্যায় টিউটোরিয়াল, কীভাবে-করবেন নির্দেশিকা, রেফারেন্স ও ব্যাখ্যায় Diátaxis বিভাজনের সুপারিশ করে, এবং ধরন মেশানোকে এমন অ্যান্টি-প্যাটার্ন বলে যা কোনো পাঠকেরই সেবা করে না। বড় পরিসরে সিস্টেম শিখছেন এমন নবাগত এবং সুনির্দিষ্ট তথ্য খুঁজছেন এমন অন-কল ইঞ্জিনিয়ারের আলাদা পাতা দরকার, আর একটি মিশ্র পাতা দুজনকেই ধীর করে। সংকেত আনুন: আপনার সবচেয়ে বেশি-দেখা ডকগুলো বেছে দেখুন প্রতিটির একটি স্পষ্ট কাজ ও একটি স্পষ্ট পাঠক আছে কি না। সবচেয়ে খারাপগুলোকে স্বতন্ত্র ধরনে পুনর্গঠন করুন, যাতে প্রতিটি পাতা লেখা, নেভিগেট করা ও হালনাগাদ রাখা সহজ হয়। প্রতিষ্ঠান বড় হলে সেই কাঠামোই ডকুমেন্টেশনকে রক্ষণাবেক্ষণযোগ্য করে।

  2. আপনি কি গুরুত্বপূর্ণ স্থাপত্য সিদ্ধান্ত তাদের যুক্তিসহ ধরেন, নাকি শুধু বর্তমান অবস্থা? অধ্যায়টি প্রেক্ষাপট, সিদ্ধান্ত ও পরিণতি জানানো হালকা, তারিখযুক্ত সিদ্ধান্তের নথির সুপারিশ করে, এবং উল্লেখ করে এগুলো এন্টারপ্রাইজ ও সরকারি সিস্টেমের দীর্ঘ আয়ুষ্কালে সবচেয়ে বেশি প্রতিদান দেয়। এগুলো ছাড়া বছর পরের একজন রক্ষণাবেক্ষক দেখতে পান না সিস্টেম কেন এমন, তাই তিনি সঠিক পছন্দ নিয়ে দ্বিতীয়বার অনুমান করেন বা পুরোনো ভুলের পুনরাবৃত্তি করেন। সুনির্দিষ্ট সংকেত হিসেবে সাম্প্রতিক একটি কঠিন সিদ্ধান্ত আনুন যার যুক্তি এখন কেবল চ্যাট থ্রেড বা কারও স্মৃতিতে। একটি ছোট সিদ্ধান্তের নথির ফরম্যাট গ্রহণ করুন এবং যেকোনো গুরুত্বপূর্ণ নকশা পরিবর্তনের অংশ হিসেবে একটি লেখা বাধ্য করুন। যুক্তিই ঠিক সেই জ্ঞান, যা কেবল মানুষ জোগাতে পারে এবং না লিখলে সবচেয়ে দ্রুত পচে।

  3. আপনার রানবুক একা থেকে কি যেকোনো অন-কল ইঞ্জিনিয়ার সিস্টেমের নির্মাতাকে পেজ না করে ঘটনায় সাড়া দিতে পারেন? এই অধ্যায় রানবুককে অপরিহার্য পরিচালনাগত নথি বলে, যাতে কেবল বিশেষজ্ঞ নন, যে কেউ অন-কলে কাজ করতে পারেন, এবং একটি সরকারি দলের কথা বর্ণনা করে যারা একটি সিস্টেম উত্তরাধিকার পেতে পেরেছিল কারণ রানবুক চুক্তির সীমানা পেরিয়ে জ্ঞান বহন করেছিল। মূল-ব্যক্তি ঝুঁকিই এই ব্যর্থতা, যার বিরুদ্ধে এটি রক্ষা করে: একমাত্র বিশেষজ্ঞ যখন নাগালের বাইরে বা চলে গেছেন, তখন নথিহীন পুনরুদ্ধার পদ্ধতি একটি রুটিন ঘটনাকে বিভ্রাটে পরিণত করে। প্রমাণ আনুন: একটি সাম্প্রতিক ঘটনা নিয়ে যাচাই করুন কেবল রানবুকই তা সমাধান করত কি না। মানুষ যে পদ্ধতিকে ভয় পায় তার জন্য রানবুক লিখুন ও পরীক্ষা করুন, এবং একা দাঁড়াতে না পারা রানবুককে ত্রুটি গণ্য করুন। সেটাই রাত ২টায় পুনরুদ্ধার ও রাত ২টায় উত্তরণের মধ্যে পার্থক্য।

  4. আপনার কোন API রেফারেন্স ও চেঞ্জলগ সত্যের উৎস থেকে তৈরি, আর কোনগুলো এখনো হাতে-রক্ষণাবেক্ষিত এবং নিঃশব্দে সরে যাচ্ছে? এই অধ্যায় আপনাকে যন্ত্র-পাঠযোগ্য চুক্তি বা কোড অ্যানোটেশন থেকে রেফারেন্স ডকুমেন্টেশন তৈরি করতে বলে, যাতে তা প্রকৃত ইন্টারফেস থেকে বিচ্যুত হতে না পারে, এবং তৈরি-করা-যায় এমন সামগ্রী হাতে রক্ষণাবেক্ষণকে অ্যান্টি-প্যাটার্ন বলে। বড় দলে প্রকৃত ইন্টারফেসের পেছনে পড়া হাতে-লেখা API ডক না থাকার চেয়েও খারাপ: তাতে বিশ্বাস করা প্রতিটি গ্রাহক একটি ভাঙা ইন্টিগ্রেশন লেখেন, আর ব্যর্থতা দেখা দেয় সেই সেকেলে পাতা থেকে বহু দূরে। সুনির্দিষ্ট সংকেত আনুন: আপনার সবচেয়ে ব্যবহৃত কয়েকটি ইন্টারফেসের নমুনা নিয়ে প্রকাশিত রেফারেন্সকে প্রকৃত চুক্তির সঙ্গে ডিফ করুন, প্রতিটি কতটা সরে গেছে দেখুন। যেখানে বিচ্যুতি পান, রেফারেন্সকে বিল্ডে জুড়ুন যাতে প্রতিটি পরিবর্তনে তা পুনরায় তৈরি হয়, এবং হাতে-রাখা অনুলিপি অবসান করুন। যে এন্টারপ্রাইজ ও সরকারি পরিবেশে ইন্টারফেস দল, বিক্রেতা ও আপনার না-দেখা চুক্তির সীমানা জুড়ে ব্যবহৃত হয়, সেখানে প্রামাণ্য, তৈরি রেফারেন্সই প্রায়ই একমাত্র জিনিস যা ইন্টিগ্রেটরদের কল্পকাহিনীর বিপরীতে গড়া থেকে বাঁচায়।

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

  6. আপনার ডকুমেন্টেশন কতটা খুঁজে-পাওয়া-যায়, এবং কতটা গুরুত্বপূর্ণ জ্ঞান এখনো কেবল চ্যাট থ্রেড ও মানুষের মাথায় আছে? এই অধ্যায় বলে খুঁজে-না-পাওয়া জ্ঞান কার্যত অনুপস্থিত, ডক অনেক বিচ্ছিন্ন উইকি ও টুলে খণ্ডিত হওয়ার বিরুদ্ধে সতর্ক করে, এবং অন্তর্নিহিত জ্ঞান পিছলে যাওয়ার আগে টেকসই, খুঁজে-পাওয়া-যায় রূপে ধরতে বলে। একটি বড় প্রতিষ্ঠানে একই তথ্য একশোবার পুনরাবিষ্কার, পুনরায় জিজ্ঞেস ও পুনরায় উত্তর দেওয়া হয় কারণ কেউ খুঁজে পায় না কোথায় তা আগেই লেখা হয়েছে, আর প্রতিটি প্রস্থান অপূরণীয় প্রেক্ষাপট দরজা দিয়ে নিয়ে যায়। প্রমাণ আনুন: আপনি কতগুলো আলাদা ডকুমেন্টেশন ঠিকানা রক্ষণাবেক্ষণ করেন গুনুন, কেবল অনুসন্ধান দিয়ে তিনটি গুরুত্বপূর্ণ তথ্য খুঁজতে চেষ্টা করুন, এবং লক্ষ্য করুন প্রকৃত উত্তর কোথায় কারও স্মৃতি বা চাপা পড়া বার্তায় ছিল। প্রকৃত অনুসন্ধান ও স্পষ্ট নেভিগেশনসহ একটি পরিচিত ঠিকানার দিকে একত্র করুন, এবং অন্তর্নিহিত জ্ঞান ধরাকে বীরত্বপূর্ণ উদ্ধারের বদলে কাজের রুটিন অংশ করুন। সরকারি-খাতের ও ভারীভাবে আউটসোর্স করা প্রেক্ষাপটে, যেখানে সিস্টেম চুক্তির মাধ্যমে বিক্রেতা ও দলের মধ্যে হাতবদল হয়, সেখানে খুঁজে-পাওয়া-যায় লিখিত জ্ঞানই একমাত্র জিনিস যা হস্তান্তর পেরিয়ে টেকে।

খাতভেদে দৃষ্টিভঙ্গি

স্টার্টআপ। মুষ্টিমেয় ইঞ্জিনিয়ার ও অবসর-না-থাকা রানওয়ে নিয়ে কেবল সেটুকুই নথিবদ্ধ করুন যা রাত ২টার বিভ্রাট বা নতুন নিয়োগের আসলে দরকার: প্রতি সার্ভিসে একটি প্রকৃত README, সবার ভয় পাওয়া ডিপ্লয়-ও-পুনরুদ্ধার পদ্ধতির জন্য একটি পরীক্ষিত রানবুক, এবং যে সিদ্ধান্ত অন্যথায় ভুলে যাবেন তার কয়েকটি তারিখযুক্ত নোট। API ডক চুক্তি থেকে তৈরি করুন যাতে তা কখনো হাতে রক্ষণাবেক্ষণ করতে না হয়। একটি ডকুমেন্টেশন প্ল্যাটফর্ম গড়ার টান প্রতিরোধ করুন; প্রকৃত যন্ত্রণা টের না পাওয়া পর্যন্ত কোডের পাশে মার্কআপের একটি ভার্সনযুক্ত ফোল্ডারই যথেষ্ট।

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

এন্টারপ্রাইজ। বহু দল জুড়ে সমস্যা সামঞ্জস্য ও খুঁজে-পাওয়া-যাওয়া: একটি ভাগ করা ডকস-অ্যাজ-কোড পাইপলাইন, Diátaxis-এর মতো একটি সাধারণ কাঠামো, তৈরি API রেফারেন্স ও চেঞ্জলগ, এবং সর্বত্র একইভাবে প্রযুক্ত সিদ্ধান্তের নথি, যাতে জ্ঞান ডজন ডজন উইকিতে খণ্ডিত না হয়। প্রতিটি উচ্চ-মূল্যের নথির মালিকানা বরাদ্দ করুন এবং কেবল উপস্থিতি নয়, নির্ভুলতা মাপুন। স্থাপত্যের নথি, রানবুক ও সিদ্ধান্ত লগকে অডিট প্রমাণ গণ্য করুন, এবং কীভাবে তৈরি হয় তা প্রমিত করুন, যাতে নিয়ন্ত্রণ পর্যালোচনা হুড়োহুড়ির বদলে একটি নথিবদ্ধ, সমর্থনযোগ্য ট্রেইল পায়।

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

উদাহরণ

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

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

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

ব্যবসায়িক যুক্তি: প্রেরণা, ROI ও TCO

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

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

অ্যান্টি-প্যাটার্ন ও ফাঁদ

  • বর্তমান বলে উপস্থাপিত সেকেলে ডকুমেন্টেশন: পাঠকদের বিভ্রান্ত করে এবং সব ডকুমেন্টেশনের ওপর বিশ্বাস ধ্বংস করে।
  • একবার-লেখা উইকি: তৈরি ও কখনো হালনাগাদ না-হওয়া পাতা, নিঃশব্দে বাস্তবতা থেকে সরে যায়।
  • ডকুমেন্টেশনের খণ্ডন: জ্ঞান অনেক টুল ও উইকিতে ছড়ানো, ফলে কিছুই খুঁজে পাওয়া যায় না।
  • ডকুমেন্টেশনের ধরন মেশানো: টিউটোরিয়াল, রেফারেন্স ও ব্যাখ্যা একটি পাতায় জট পাকানো, কোনো পাঠকের সেবা করে না।
  • তৈরি-করা-যায় এমন সামগ্রী হাতে রক্ষণাবেক্ষণ: হাতে লেখা API ডক, যা অনিবার্যভাবে প্রকৃত ইন্টারফেস থেকে সরে যায়।
  • গোষ্ঠীগত জ্ঞান: গুরুত্বপূর্ণ বোঝাপড়া কেবল মানুষের মাথায় ও চ্যাট ইতিহাসে, তাঁরা চলে গেলে হারিয়ে যায়।
  • পরের ভাবনা হিসেবে ডকুমেন্টেশন: পরিবর্তনের পাশে নয়, শেষে লেখা, যদি আদৌ লেখা হয়।
  • মালিকানা নেই: দায়ী মালিকহীন নথি পচে কারণ হালনাগাদ করা কারও কাজ নয়।

পরিপক্বতা মডেল

  • স্তর ১, সূচনা। ডকুমেন্টেশন বিরল, ছড়ানো ও সেকেলে, আর জ্ঞান মানুষের মাথায় থাকে। যা আছে তা একবার লেখা হয়ে আর কখনো ছোঁয়া হয়নি, তাই বিভ্রাট বা প্রস্থান মানে সিস্টেমের রিভার্স-ইঞ্জিনিয়ারিং।
  • স্তর ২, বিকাশ। README ও কয়েকটি রানবুকের মতো মূল নথি আছে, কিন্তু অসঙ্গতভাবে রক্ষণাবেক্ষিত এবং খুঁজে পাওয়া কঠিন। কিছু দল ভালো নথিবদ্ধ করে আর অন্যরা সামান্যই, এবং একটি রিপজিটরির কী বহন করা উচিত বা কোথায় থাকা উচিত সে বিষয়ে কোনো ভাগ করা প্রত্যাশা নেই।
  • স্তর ৩, মানসম্মতকরণ। ডকস-অ্যাজ-কোড প্রতিষ্ঠান জুড়ে রীতি: Diátaxis-এর মতো একটি সাধারণ কাঠামো, তৈরি API রেফারেন্স ও চেঞ্জলগ, সিদ্ধান্তের নথি, এবং রিভিউয়ে প্রত্যাশা যে ডক সেই কোডের সঙ্গে বদলাবে যা তা বর্ণনা করে। প্রতিটি উচ্চ-মূল্যের নথির একজন নামধারী মালিক আছে, এবং প্রকৃত অনুসন্ধানসহ একটি পরিচিত ঠিকানা আছে।
  • স্তর ৪, ব্যবস্থাপনা। ডকুমেন্টেশন কেবল উপস্থিত নয়, মাপা হয়। আপনি অপরিহার্য নথির আওতা, কোড-পরিবর্তনের হারের বিপরীতে ডক-পরিবর্তনের হার, অনবোর্ডিংয়ের সময়, কেবল রানবুক থেকে ঘটনা সমাধান, এবং একটি সংজ্ঞায়িত সেকেলে-সীমার বিপরীতে সতেজতা অনুসরণ করেন, এবং সেই মেট্রিক ভিত্তিরেখার বিপরীতে পর্যালোচনা করেন। পচন তৈরি, সিস্টেমের বিপরীতে টেস্ট এবং লিংক ও নির্ভুলতার পরীক্ষার মাধ্যমে যান্ত্রিকভাবে ধরা পড়ে, এবং সেকেলে পাতা ভাগ্যের বদলে প্রমাণে চিহ্নিত বা ছাঁটাই হয়।
  • স্তর ৫, সমন্বয়। ডকুমেন্টেশন নিরন্তর উন্নত এবং প্রতিষ্ঠান জুড়ে একীভূত: জীবন্ত, বহুলাংশে তৈরি বা সিস্টেমের বিপরীতে পরীক্ষিত, মালিকানাযুক্ত, খুঁজে-পাওয়া-যায় এবং অভিযোজিত। মেট্রিক আপনি কোথায় বিনিয়োগ করেন তাতে ফিডব্যাক দেয়, অন্তর্নিহিত জ্ঞান কাজের রুটিন অংশ হিসেবে ধরা হয়, এবং সিস্টেম, দল ও পাঠক বদলালে সংগ্রহ সক্রিয়ভাবে পুনর্ভারসাম্যে আনা ও ছাঁটাই করা হয়।

আলোচনার ভাবনা

  • আগামীকাল কোন ডকুমেন্টেশন উবে গেলে আপনার প্রতিষ্ঠানের সবচেয়ে বেশি ক্ষতি হবে, এবং তা কি বর্তমানে আছে ও হালনাগাদ থাকে?
  • ডকুমেন্টেশন হালনাগাদ করাকে আলাদা বোঝার বদলে কোড বদলানোর স্বাভাবিক অংশ কীভাবে করবেন?
  • হাতে-লেখা ডকুমেন্টেশন কোথায় সত্যের উৎসের সঙ্গে যুক্ত তৈরি ডকুমেন্টেশন দিয়ে প্রতিস্থাপন করতে পারেন?
  • আপনার ডকুমেন্টেশন নির্ভুল ও ব্যবহৃত কি না, কেবল উপস্থিত নয়, তা কীভাবে মাপবেন?
  • ডকুমেন্টেশন লেখা, রক্ষণাবেক্ষণ ও অনুসন্ধান AI সহকারী কীভাবে বদলানো উচিত, এবং কোথায় তারা বিশ্বাসযোগ্য-কিন্তু-ভুল বিষয়বস্তু আনতে পারে?
  • অন্তর্নিহিত জ্ঞানের ধারকরা চলে যাওয়ার আগে তা কীভাবে ধরবেন?

প্রধান শিক্ষা

  • ডকুমেন্টেশনকে কোডের মতো দেখুন: ভার্সনযুক্ত, পর্যালোচিত, উৎসের কাছাকাছি এবং স্বয়ংক্রিয়ভাবে প্রকাশিত।
  • টিউটোরিয়াল, কীভাবে-করবেন নির্দেশিকা, রেফারেন্স ও ব্যাখ্যা ব্যবহার করে পাঠকের প্রয়োজন অনুযায়ী বিষয়বস্তু সাজান।
  • উচ্চ-মূল্যের অপরিহার্য বিষয় রক্ষণাবেক্ষণ করুন: README, রানবুক, স্থাপত্য ডক, অনবোর্ডিং এবং সিদ্ধান্তের নথি।
  • API ডক ও চেঞ্জলগ তৈরি করুন যাতে সত্যের উৎস থেকে সরে যেতে না পারে।
  • মালিকানা, রিভিউয়ের প্রত্যাশা এবং ছাঁটাইয়ের মাধ্যমে পচনের সঙ্গে লড়ুন; ভুল ডকুমেন্টেশন না থাকার চেয়েও খারাপ।

তথ্যসূত্র ও আরও পড়ার জন্য

  • Daniele Procida, Diátaxis ডকুমেন্টেশন কাঠামো
  • Andrew Etter, Modern Technical Writing
  • Anne Gentle, Docs Like Code
  • Google, Developer Documentation Style Guide এবং Season of Docs নির্দেশিকা (দৃষ্টান্তমূলক উদাহরণ হিসেবে)
  • Michael Nygard, Documenting Architecture Decisions (স্থাপত্য সিদ্ধান্তের নথি)
  • Andrew Hunt ও David Thomas, The Pragmatic Programmer (জ্ঞান ও ডকুমেন্টেশন প্রসঙ্গে)
  • Keep a Changelog (রেফারেন্স রীতি হিসেবে)