প্রোগ্রামিং মিরাকল

অনেকেই স্রষ্টায় বিশ্বাস করে না, তবে আমি জোরালোভাবেই বিশ্বাস করি। আর কিছু জিনিস আমার বিশ্বাস আর শক্ত করে।

আমি আমার নিজের লেখাপড়া ও প্রোগ্রামিং শিখাতেও এই বিষয়টি লক্ষ্য করি।

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

ম্যাজিকের মত আল্লাহ সমাধান করে দিলেন। আমার এক মামা আমাকে বেসরকারী ইউনিভার্সিটিতে ডাক্তারি পড়ার জন্য টাকা দিতে রাজি হলেন। কিন্তু আমি বেকে বসলাম যে ডাক্তারি আমি পড়বো না, কম্পিউটার ইঞ্জিনিয়ারিং পড়বো। তিনি রাজি হয়ে গেলেন। এটা না হলে আমার এই সাবজেক্টে কোন দিন পড়া হত না।

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

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

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

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

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

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

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

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

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

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

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

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

আমি সেই বিদেশী কোম্পানির সাথে কাজ করা শুরু করলাম। তাদের কাজের স্টাইল ছিল সম্পূর্ণ আলাদা। আমি অনেক কিছু শিখতে শুরু করলাম, যেটা আগে কখনো দেশের কোম্পানিতে দেখিনি। আমি যে ম্যানেজারের আন্ডারে জয়েন করলাম সে অত্যন্ত ভালো লোক ছিল। আমি আমার দক্ষতার মাধ্যমে আর্কিটেক্ট পদে পদোন্নতি পেয়ে গেলাম জয়েন করার ১ মাসের মধ্যেই।  

কিছু দিনের মধ্যেই আমি CI/CD ও Unit Testing নিয়ে কাজ করা শুরু করলাম। ইউনিট টেস্টিং প্রধান কাজ ছিল। আমি এর কিছুদিন আগেই আমার নিজের বিজনেসে ইউনিট টেস্টিং বিষয়ে অনেক সিরিয়াস হয়ে উঠেছিলাম। এই বিষয়ে অনেক চেষ্টা ও গবেষণা করে এর রহস্য বুঝতে সক্ষম হয়েছিলাম। এই কোম্পানিতে জয়েন করার পর তাদের টপ ম্যানেজমেন্ট আমার ইউনিট টেস্টিং দক্ষতা দেখে অনেক প্রশংসা করল। সে সময় এটা ছিল তাদের প্রধান ফোকাস। আমি সেই কোম্পানির জন্য অনেক গাইডলাইন ও ট্রেনিং এর ব্যবস্থা করলাম। যদি আমি এই জবে জয়েনের কিছু দিন আগে ইউনিট টেস্টিং নিয়ে এত ঘাটাঘাটি না করতাম তাহলে আমি এই সুবিধা পেতাম না।

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

এরপর একদিন ইউনিট টেস্টিং এর কাজ শেষ হয়ে আসলো। ছোট পরিসরে বিজনেস চালিয়ে রাখছিলাম, কারণ আমার আয় দিয়েই সেটা সম্ভব ছিল। তাই কোম্পানি চিরদিনের জন্য বন্ধ হয়ে গেল না। রিমোট জব না পেলে হয়ত আমাকে সব বন্ধ করে দিতে হত।

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

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

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

কাজেই দেখা যাচ্ছে, যা ঘটছে সেটা সব সময় ভালোই ঘটছে। প্রতিটি ঘটনা যেন প্ল্যান করে সাজানো। ঠিক যখন যেটা দরকার তখন সেটা আমি পেয়ে যাচ্ছি। আমি নিজেও বুঝে উঠতে পারি না কিভাবে কি হয়। কিন্তু আমি সামনে এগিয়ে যাচ্ছি, আলহামদুলিল্লাহ্‌। তাই আমার নিজের বিষয়ে আমি নিজের কোন কৃতিত্ব দেখি না, সম্পূর্ণ কৃতিত্ব মহান আল্লাহ্‌ তায়ালার।

মোঃ জালাল উদ্দিন, প্রতিষ্ঠাতা ও সিইও, ডেভস্কীল.কম

ডেভস্কীলের কিছু বিশেষ সফটওয়্যার ইঞ্জিনিয়ারিং কোর্স –

  1. Competitive Programming – Beginner
  2. Professional Programming with C#
  3. Become a Full Stack Web Ninja With Laravel, VueJS & AWS
  4. Full Stack Asp.net Core MVC Web Development

Leave a Reply

Your email address will not be published. Required fields are marked *