পিআর (PR) ওপেন করুন, আপনার রিভিউয়ার এখনও আপনার কোডের সাথে পরিচিত হননি
সম্প্রতি আমি একটি বড় পুল রিকোয়েস্ট (pull request) রিভিউ করেছি। কোড লিখতে এটি এআই (AI) ব্যবহার করেছিল। এটি এমন একটি মডিউল পরিবর্তন করেছিল যা অন্য তিনটি ফিচার ব্যবহার করছিল। ডেসক্রিপশন বা বিবরণ ছিল মাত্র একটি বাক্য। এটি ফাইলের নাম উল্লেখ করেছিল কিন্তু পরিবর্তনের কারণ উল্লেখ করেনি।
কাজ শুরু করার আগে পরিবর্তনগুলো বোঝার জন্য আমার পনেরো মিনিট সময় লেগেছিল। আমাকে উদ্দেশ্য (intent) খুঁজে বের করতে হয়েছিল। আমাকে ঝুঁকিগুলো (risks) খুঁজে বের করতে হয়েছিল। আমাকে অপ্রয়োজনীয় তথ্যের ভিড় থেকে গুরুত্বপূর্ণ ফাইলগুলো আলাদা করতে হয়েছিল।
আমি বুঝতে পারলাম যে আমি আগেও অন্য কারো সাথে ঠিক এমনটিই করেছি।
আপনি যখন কোড লেখেন, তখন সমস্ত প্রেক্ষাপট (context) আপনার মাথায় থাকে। আপনি জানেন কেন আপনি একটি মডিউল আলাদা করেছেন। আপনি জানেন আপনি প্রথমে কী চেষ্টা করেছিলেন। আপনি জানেন কোন অংশগুলো নিয়ে আপনি নিশ্চিত নন।
বেশিরভাগ মানুষ নিজেদের জন্য ডেসক্রিপশন লেখে। তারা লেখে "Refactored service layer" বা "Fixed auth module"। এগুলো তাদের জন্য ডেসক্রিপশন যারা ইতিমধ্যে প্রেক্ষাপটটি জানেন।
একটি ভালো ডেসক্রিপশন হলো সেই ব্যক্তির জন্য যে কিছুই জানে না।
ডেসক্রিপশন মানে কেবল একটি সারসংক্ষেপ নয়। এটি একটি পরীক্ষা। আপনি যদি আপনার কাজ ব্যাখ্যা করতে না পারেন, তবে আপনার কাজ প্রস্তুত নয়।
আমি এখন প্রতিটি গুরুত্বপূর্ণ (non-trivial) পিআর-এর জন্য একটি ছয়-ধাপের কাঠামো ব্যবহার করি:
• Intent (উদ্দেশ্য): কেন এই পিআরটি করা হচ্ছে এবং এটি কোন সমস্যার সমাধান করছে তা ব্যাখ্যা করুন। যদি আপনি এটি লিখতে না পারেন, তবে থেমে যান। পিআরটি প্রস্তুত নয়। • Major changes (প্রধান পরিবর্তন): সেই সিদ্ধান্তগুলোর তালিকা দিন যা আর্কিটেকচার বা বিদ্যমান আচরণের ওপর প্রভাব ফেলে। • Minor changes (খুদে পরিবর্তন): ক্লিনআপ এবং রিনেমের তালিকা দিন। এগুলোকে কাঠামোগত পরিবর্তন থেকে আলাদা রাখুন। • Impact (প্রভাব): এটি কোন কোন সিস্টেমকে স্পর্শ করে তার তালিকা দিন। এর প্রভাবের পরিধি (blast radius) সম্পর্কে একটি ধারণা দিন। • Evidence (প্রমাণ): আপনি কী রান করেছেন এবং কোন কোন টেস্ট পাস করেছেন তার তালিকা দিন। আপনি কাজ করেছেন তার প্রমাণ দেখান। • Uncertainties (অনিশ্চয়তা): আপনি কোন বিষয়ে নিশ্চিত নন তা উল্লেখ করুন।
আপনি যখন আপনার অনিশ্চয়তা স্বীকার করেন, তখন আপনি রিভিউয়ারকে সাহায্য করেন। তারা জানে কোথায় গভীরভাবে দেখতে হবে। তারা সেই অংশগুলোতে সময় নষ্ট করে না যা ঠিকঠাক কাজ করছে।
আপনি যদি আপনার অনিশ্চয়তাগুলো চিহ্নিত করতে না পারেন, তবে আপনি আপনার কোড সম্পর্কে যথেষ্ট গভীরভাবে চিন্তা করেননি।
একটি পিআর ওপেন করা উচিত কি না, তা সিদ্ধান্ত নেওয়ার ঠিক আগের ধাপ হলো ডেসক্রিপশন।
একজন রিভিউয়ার যিনি আপনার উদ্দেশ্য বোঝেন, তিনি কঠিন প্রশ্ন করার জন্য সময় ব্যয় করেন। একজন রিভিউয়ার যাকে আপনার উদ্দেশ্য অনুমান করতে হয়, তিনি সহজ প্রশ্ন করার জন্য সময় ব্যয় করেন। তারা জিনিসগুলো সঠিক কি না তা জিজ্ঞাসা করার পরিবর্তে জিনিসগুলো আসলে কী তা জিজ্ঞাসা করতে থাকেন।
সেই রিভিউয়ারের জন্য লিখুন যিনি এখনও আপনার কোডের সাথে পরিচিত হননি। এমনভাবে লিখুন যেন আপনি সেখানে প্রশ্নগুলোর উত্তর দেওয়ার জন্য উপস্থিত থাকবেন না। এমনভাবে লিখুন যেন আপনি তিন দিন পর কোনো স্মৃতি ছাড়াই এটি পড়ছেন।
যদি ডেসক্রিপশনটি যথেষ্ট হয়, তবে পিআরটি প্রস্তুত।
Source: https://dev.to/jeelvankhede/open-the-pr-your-reviewer-has-not-met-yet-4gfe
Optional learning community: https://t.me/GyaanSetuAi