আমার ক্যারিয়ারের প্রথম প্রজেক্ট ডেভেলপমেন্টের গল্প!

আমার ক্যারিয়ারের প্রথম প্রজেক্ট ডেভেলপমেন্টের গল্প!

আমার ক্যারিয়ারে প্রথম যেই রিয়েল লাইফ প্রজেক্টটা করি সেটা খুব সম্ভবত ভার্সিটিতে লাস্ট ইয়ারে পড়ার সময়। তার আগ পর্যন্ত প্রজেক্ট বলতে ভার্সিটির কোর্সওয়ার্কের প্রজেক্ট। আমরা সবাইই জানি সেগুলোতে কদ্দুর কাজ করা হয় আর কদ্দুর কাজ শেখা হয়! তো যখন সুযোগ পেলাম একটা রিয়েল লাইফ প্রজেক্ট করার, তাও আবার পেইড, সুযোগটা নিয়ে নিলাম। তখন পর্যন্ত PHP, Laravel দিয়ে টুকটাক ওয়েব ডেভেলপমেন্ট এর এক্সপেরিয়েন্স থাকলেও একটা রিয়েল এপ্লিকেশনের যত খুঁটিনাটি সামলানো লাগে তা সম্পর্কে খুব ভালো ধারণা ছিল না।
তাতে কি? আমি কি খারাপ প্রোগ্রামার? ভালো ইউনিভার্সিটিতে পড়ি, কোডিংও তো একেবারে খারাপ পারি না। সাহস করে কাজটা করতে রাজি হয়ে গেলাম।

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

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

বাকিটা ইতিহাস…।

পরের ছয় মাস ধরে কেবল সেই প্রজেক্টের বাগই ফিক্স করে গেছি। 😭

কিন্তু এর কারণ কি?

  • অভিজ্ঞতার অভাব থাকায় ক্লায়েন্ট থেকে ফিচারগুলো ঠিকভাবে বুঝে নেয়ার ক্ষেত্রে কমিউনিকেশন গ্যাপ ছিল।

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

  • প্রজেক্টে কোনো টেস্ট তো লেখাই হয়নি, ম্যানুয়ালিও ঠিকভাবে টেস্ট করা হয়নি সব ফিচার। কোনোমতে কাজ করলেই আমরা ঠিক আছে মনে করে খুশী ছিলাম।

অভিজ্ঞতার অভাবের সাথে আরেকটা বড় সমস্যা ছিল আমাদের ‘ওভারকনফিডেন্স’। আমরা মনে করতাম আমরা তো অনেক কাজ পারি। আমাদের যে টেকনিক্যাল স্কিল, কমিউনিকেশন স্কিল এবং অন্যান্য দিক থেকেও দূর্বলতা ছিল, আমরা এগুলোর ব্যাপারে সচেতন ছিলাম না।

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

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

আপনি হয়তো ভাবছেন আমার ঐ প্রজেক্টটার কি হলো? প্রথম দফায় ডেভেলপমেন্টের অভিজ্ঞতা থেকে আমাদের ভুলগুলো আমরা অনেকখানিই বুঝতে পেরেছিলাম। আবার ক্লায়েন্টও ইউজ করে তাদের মেইন সমস্যাগুলো ক্লিয়ার করেছিল। ২য় দফায় আমরা বাগ ফিক্স করে এবং ভালোভাবে রিফ্যাক্টর করে দেয়ার পরে আর তেমন সমস্যা হয়নি। এখনো ক্লায়েন্ট সেই প্রজেক্ট ইউজ করছে, আলহামদুলিল্লাহ।