"ধরুন, আপনাকে একটা প্রজেক্টের জন্য হায়ার করা হলো, যে প্রজেক্টটা অলরেডি অনেকদূর ডেভলপ করা হয়েছে অন্য ডেভলপার দ্বারা। সেই ডেভলপারের বদলে আপনাকে দায়িত্ব দেয়া হলো।
প্রজেক্ট এর কোডবেজ ওপেন করেই বুঝলেন অনেক কপ্লেক্স আর পেচানো হয়ে আছে এবং আগের ডেভলপার তার পার্সোনাল ফ্লেভারে ডেভলপ করেছে (কমেন্ট, ডক স্ট্রিং ইত্যাদি বলতে গেলে নেই)।
এই মুহুর্তে আপনার দায়িত্ব কি হবে?
অর্থাৎ আরেকজন ডেভলপারের কোনো লার্জ স্কেল প্রজেক্ট এ আপনাকে মডিফাই, আপডেট, বাগ ফিক্স, নতুন কিছু এড ইত্যাদি কাজ করতে দিলে আপনি কিভাবে আগাবেন?"
**কোড পড়ে বুঝতে হবে প্রথমে । এইটা চ্যালেন্জিং হবে । অন্য ডেভেলপারের জানার বা স্কিলের ঘাটতি থাকতে পারে, যেমনটা আমারও আছে, তাই তার কোড যত বেশী জাজমেন্টাল হয়ে এ্যানালাইজ করতে যাবেন, নিজের মধ্যে ততো বেশী বায়াস কাজ করবে, ভিতর থেকে একটা বাধা আসবে । জাজমেন্টাল হওয়া যাবে না ।
আগের ডেভেলপারের স্টাইলটা বোঝার চেষ্টা করতে হবে, তাহলে কোড এক্সপ্লোর করতে পরে সুবিধা হবে । মডার্ন আইডিই ব্যবহার করতে হবে যাতে দ্রুত কোড এক্সপ্লোর করা যায়, প্রয়োজন হলেই যাতে কোথায় কি হচ্ছে সেটা সহজে খুজেঁ পাওয়া যায় ।
আগের ডেভেলপারের কোড এবং প্রোডাক্ট রিকয়ারমেন্ট বুঝে ফেললে কাজ করতে খুব একটা অসুবিধা হবে না ।
যদি বিজনেস ফাস্ট পেইসড হয় এবং রেগুলার আপডেট দরকার হয় তাহলে এবার আপনি নতুন ফিচার এ্যাড করুন, বাগ ফিক্স করুন, নিজের নতুন কোড যতটুকু পারা যায় স্ট্যান্ডার্ড মেইনটেইন করে লিখুন । সেই সাথে সাথে পুরানো কোড অল্প অল্প করে রিফ্যাক্টর করুন ।
আর যদি দেখেন প্রোডাক্ট মার্কেটে ভালো পজিশনে আছে, মেইনটেন্যান্স করার মত সময় হাতে আছে, তাহলে ম্যানেজমেন্ট এর সাথে কথা বলে ২-৩টা রিফ্যাক্টর স্প্রিন্ট শুরু করুন ।
বিজনেস ভ্যালু কে আমি সবসময়ই কোড কোয়ালিটির চেয়ে প্রাধান্য দিবো । বিজনেস সফল হলে পরে রিফ্যাক্টর করা যায়, পুরোটা নতুন করে রি-রাইট করার মত সময়ও বাজেট থাকে । বিজনেস ফেইল করলে হাই কোয়ালিটি কোডও কাজে আসে না ।
- Abu Ashraf Masnun
** আগের অফিসের সিনিয়র কলিগ ভাই যিনি নিউজক্রেড থেকে এসেছিলেন, উনি বলতেন - "আমরা যদি ম্যানেজমেন্ট বা বিজনেসের কথা মাথায় না রেখে শুধু কোড কোয়ালিটি নিয়ে চিন্তা করি তাহলে সেই কোড জাদুঘরে সুন্দর করে সাজিয়ে রাখা যাবে। বিজনেস হবে না"
- Hasan Abdullah
** ১/ ল্যাঙ্গুয়েজ ফ্রেইমওয়ার্ক। প্রত্যেক ল্যাঙ্গুয়েজের (ফ্রেইমওয়ার্কেরো) কিছু নিজস্ব ডিজাইন প্যাটার্ন, বেস্ট প্রাকটিস ইত্যাদি রয়েছে, যার ফলে নিজেদের অজান্তেই প্রতি ডোমেইনের প্রোগ্রামারগণ একটা কমন ধারায় প্রোগ্রামিং করে থাকেন। যদি আপনার ভাগ্য ভাল থাকে এবং আপনার আগের প্রোগ্রামাররা সাউন্ড মাইণ্ডেড হয়ে থাকেন তাহলে আপনার বুঝে উঠতে কষ্ট করা লাগবে না। যদি তারা (অথবা আপনি) পাস্তাপ্রেমী হয়ে থাকেন, তাহলে কেউই সুখী হবেন না।
২/ ইস্যু, গিট হিস্টরি, কমিট ম্যাসেজ। দেখার চেষ্টা করুন তাদের কর্মধারা সময়ের উর্ধক্রমে। যদি এইগুলি না থাকে তাহলে, আবারো, সুখী হওয়া মুস্কিল হয়ে দাঁড়াবে।
৩/ লেয়ারে ভাগ করুন, এপিআই লেয়ার, ডাটাবেজ লেয়ার, মডেল, ভিউ, কন্ট্রোলার, আসলে এই বিভক্তি আপনার প্রজেক্টের উপর। এরপর এক একটা লেয়ার ধরুন ও সাবার করুন।
৪/ কমেন্ট ও ডকুমেন্টেশান আসলে কিছুটা ওভাররেইটেড, বিশেষ করে যদি র্যাপিড ডেভেলপমেন্ট ফ্রেইমওয়ার্ক অথবা প্রপার আজাইল ব্যবহার করা হয়। যেমন ধরুন, রেইলস অথবা জ্যাঙ্গো কিন্তু অনেক খানি সেলফ ডকুমেন্টিং। ওটা নিয়ে ভয় না পাইলেও চলবে।
৫/ একি কথা বলা যায় ডাটাবেস ডিজাইন ডিয়ায়াগ্রাম নিয়ে, অনেক টুল দিয়ে কিন্তু আপনি নিজেই ইন্ট্রোস্পেক্ট করে বার করে আনতে পারেন ডাটা ডায়াগ্রাম।
৬/ টেস্ট কেইস থাকলে তো সোনায় সোহাগা।
- Arnab Bagchi
প্রজেক্ট এর কোডবেজ ওপেন করেই বুঝলেন অনেক কপ্লেক্স আর পেচানো হয়ে আছে এবং আগের ডেভলপার তার পার্সোনাল ফ্লেভারে ডেভলপ করেছে (কমেন্ট, ডক স্ট্রিং ইত্যাদি বলতে গেলে নেই)।
এই মুহুর্তে আপনার দায়িত্ব কি হবে?
অর্থাৎ আরেকজন ডেভলপারের কোনো লার্জ স্কেল প্রজেক্ট এ আপনাকে মডিফাই, আপডেট, বাগ ফিক্স, নতুন কিছু এড ইত্যাদি কাজ করতে দিলে আপনি কিভাবে আগাবেন?"
**কোড পড়ে বুঝতে হবে প্রথমে । এইটা চ্যালেন্জিং হবে । অন্য ডেভেলপারের জানার বা স্কিলের ঘাটতি থাকতে পারে, যেমনটা আমারও আছে, তাই তার কোড যত বেশী জাজমেন্টাল হয়ে এ্যানালাইজ করতে যাবেন, নিজের মধ্যে ততো বেশী বায়াস কাজ করবে, ভিতর থেকে একটা বাধা আসবে । জাজমেন্টাল হওয়া যাবে না ।
আগের ডেভেলপারের স্টাইলটা বোঝার চেষ্টা করতে হবে, তাহলে কোড এক্সপ্লোর করতে পরে সুবিধা হবে । মডার্ন আইডিই ব্যবহার করতে হবে যাতে দ্রুত কোড এক্সপ্লোর করা যায়, প্রয়োজন হলেই যাতে কোথায় কি হচ্ছে সেটা সহজে খুজেঁ পাওয়া যায় ।
আগের ডেভেলপারের কোড এবং প্রোডাক্ট রিকয়ারমেন্ট বুঝে ফেললে কাজ করতে খুব একটা অসুবিধা হবে না ।
যদি বিজনেস ফাস্ট পেইসড হয় এবং রেগুলার আপডেট দরকার হয় তাহলে এবার আপনি নতুন ফিচার এ্যাড করুন, বাগ ফিক্স করুন, নিজের নতুন কোড যতটুকু পারা যায় স্ট্যান্ডার্ড মেইনটেইন করে লিখুন । সেই সাথে সাথে পুরানো কোড অল্প অল্প করে রিফ্যাক্টর করুন ।
আর যদি দেখেন প্রোডাক্ট মার্কেটে ভালো পজিশনে আছে, মেইনটেন্যান্স করার মত সময় হাতে আছে, তাহলে ম্যানেজমেন্ট এর সাথে কথা বলে ২-৩টা রিফ্যাক্টর স্প্রিন্ট শুরু করুন ।
বিজনেস ভ্যালু কে আমি সবসময়ই কোড কোয়ালিটির চেয়ে প্রাধান্য দিবো । বিজনেস সফল হলে পরে রিফ্যাক্টর করা যায়, পুরোটা নতুন করে রি-রাইট করার মত সময়ও বাজেট থাকে । বিজনেস ফেইল করলে হাই কোয়ালিটি কোডও কাজে আসে না ।
- Abu Ashraf Masnun
** আগের অফিসের সিনিয়র কলিগ ভাই যিনি নিউজক্রেড থেকে এসেছিলেন, উনি বলতেন - "আমরা যদি ম্যানেজমেন্ট বা বিজনেসের কথা মাথায় না রেখে শুধু কোড কোয়ালিটি নিয়ে চিন্তা করি তাহলে সেই কোড জাদুঘরে সুন্দর করে সাজিয়ে রাখা যাবে। বিজনেস হবে না"
- Hasan Abdullah
** ১/ ল্যাঙ্গুয়েজ ফ্রেইমওয়ার্ক। প্রত্যেক ল্যাঙ্গুয়েজের (ফ্রেইমওয়ার্কেরো) কিছু নিজস্ব ডিজাইন প্যাটার্ন, বেস্ট প্রাকটিস ইত্যাদি রয়েছে, যার ফলে নিজেদের অজান্তেই প্রতি ডোমেইনের প্রোগ্রামারগণ একটা কমন ধারায় প্রোগ্রামিং করে থাকেন। যদি আপনার ভাগ্য ভাল থাকে এবং আপনার আগের প্রোগ্রামাররা সাউন্ড মাইণ্ডেড হয়ে থাকেন তাহলে আপনার বুঝে উঠতে কষ্ট করা লাগবে না। যদি তারা (অথবা আপনি) পাস্তাপ্রেমী হয়ে থাকেন, তাহলে কেউই সুখী হবেন না।
২/ ইস্যু, গিট হিস্টরি, কমিট ম্যাসেজ। দেখার চেষ্টা করুন তাদের কর্মধারা সময়ের উর্ধক্রমে। যদি এইগুলি না থাকে তাহলে, আবারো, সুখী হওয়া মুস্কিল হয়ে দাঁড়াবে।
৩/ লেয়ারে ভাগ করুন, এপিআই লেয়ার, ডাটাবেজ লেয়ার, মডেল, ভিউ, কন্ট্রোলার, আসলে এই বিভক্তি আপনার প্রজেক্টের উপর। এরপর এক একটা লেয়ার ধরুন ও সাবার করুন।
৪/ কমেন্ট ও ডকুমেন্টেশান আসলে কিছুটা ওভাররেইটেড, বিশেষ করে যদি র্যাপিড ডেভেলপমেন্ট ফ্রেইমওয়ার্ক অথবা প্রপার আজাইল ব্যবহার করা হয়। যেমন ধরুন, রেইলস অথবা জ্যাঙ্গো কিন্তু অনেক খানি সেলফ ডকুমেন্টিং। ওটা নিয়ে ভয় না পাইলেও চলবে।
৫/ একি কথা বলা যায় ডাটাবেস ডিজাইন ডিয়ায়াগ্রাম নিয়ে, অনেক টুল দিয়ে কিন্তু আপনি নিজেই ইন্ট্রোস্পেক্ট করে বার করে আনতে পারেন ডাটা ডায়াগ্রাম।
৬/ টেস্ট কেইস থাকলে তো সোনায় সোহাগা।
- Arnab Bagchi
No comments:
Post a Comment