সফটওয়্যার ইঞ্জিনিয়ারিং ইন্টারভিউ

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

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

১) প্রবলেম সলভিং স্কিলঃ যখন ইন্টারভিউতে তোমাকে একটি প্রবলেম সলভ করতে দেওয়া হয়, তখন দেখা হয় যে তুমি প্রবলেমটি ঠিকভাবে বুঝলে কী না। না বুঝলে প্রয়োজনীয় প্রশ্ন করে সবকিছু পরিষ্কার করে নিলে কী না। সমস্যাটি তুমি কিভাবে বিশ্লেষণ করলে? এটি করতে তোমার কী পরিমাণ সময় লাগল? তোমাকে কতটুকু হিন্টস্ দিতে হয়েছে। এসব বিষয় গুরুত্বপূর্ণ।

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

৩) কম্পিউটার সায়েন্সের মৌলিক জ্ঞানঃ কম্পিউটার সায়েন্সের বেসিক বলতে আমরা বুঝি ডাটা স্ট্রাকচার ও অ্যালগরিদম, ডিজিটাল লজিক, অপারেটিং সিস্টেম, ডাটাবেজ, নেটওয়ার্কিং – এসব মৌলিক বিষয়ের ওপর নূন্যতম ধারণা। তোমাকে বিটওয়াইজ অপারেশন জানতে হবে, থ্রেড ও প্রসেসের পার্থক্য জানতে হবে, রেস কন্ডিশন বুঝতে হবে, রিলেশনাল ডাটাবেজ কী, কেন, নোএসকিউএল কেন প্রয়োজন, এগুলো জানা থাকতে হবে।

৪) অভিজ্ঞতাঃ অভিজ্ঞ প্রার্থীদের ক্ষেত্রে পূর্বে যেসব কোম্পানীতে কাজ করেছ, সেগুলো কেমন, তুমি কোন অংশে কাজ করেছ, সেখানে তোমার অবদান কী – এসব বিষয় বেশ খুঁটিয়ে দেখা হয়। আর ফ্রেশ গ্র্যাজুয়েটদের ক্ষেত্রে প্রোগ্রামিং কনটেস্ট, প্রজেক্ট এসবের অভিজ্ঞতা দেখা হয়। ভার্সিটিতে হয়ত তুমি প্রজেক্ট অন্য কাউকে দিয়ে করিয়ে পার হয়ে যেতে পারবে কিন্তু ইন্টারভিউতে এসে ঠিকই ধরা খাবে। এর জন্য প্রস্তুত থেকো।

৫) সফট স্কিলঃ তোমার টেকনিক্যাল স্কিলের বাইরে তুমি এমনিতে মানুষ কেমন, আচার-ব্যবহার, যোগাযোগের দক্ষতা (কমিউনিকেশন স্কিল) এসবও যাচাই করা হয় (কিন্তু কখন এটা করা হচ্ছে, সেটি তুমি টের পাবে না)। অভিজ্ঞ ইন্টারভিউয়ার কিন্তু ইন্টারভিউ শেষে প্রার্থী সম্পর্কে বেশ কিছু প্রশ্নের উত্তর নিজের মনেই দেয়, সবচেয়ে দরকারি প্রশ্ন হচ্ছে, “আমি কি আমার টিমে এই ব্যক্তির সাথে কাজ করতে খুব খুশি হব?” – উত্তর যদি “না” হয়, তবে চাকরি পাওয়ার কোনো সম্ভাবনা নেই।

সবশেষে বলি, গ্র্যাব (grab.com)-এ আমার বস অরুল (তিনি আগে ১৬ বছর মাইক্রোসফটে ও ৩ বছর অ্যামাজনে কাজ করেছেন) আমাকে ইন্টারভিউ নেওয়ার ক্ষেত্রে একটি সহজ টিপস্ দিয়েছেন। ইন্টারভিউ শেষে নিজেকে প্রশ্ন করতে হবে, “আমার বর্তমান টিমের বেস্ট প্রোগ্রামারকে অন্য টিমের জন্য ছেড়ে দিয়ে এই ছেলেকে (বা মেয়েকে) আমার টিমে নিতে কি আমি রাজি?”

গণিতে দূর্বল?

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

Image Source : http://blogs.discovermagazine.com/inkfish/2012/11/02/math-phobes-experience-arithmetic-like-bodily-pain/

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

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

ক্লাস এইট পর্যন্ত গণিতের বেসিক শক্ত করার পরে তুমি জাফর ইকবাল স্যারের লেখা “গণিত এবং আরো গণিত” বইটা পড়তে পার। বইটা আসলে ইংলিশ মিডিয়ামের (ও লেভেলের) গণিত বই অবলম্বনে লেখা। পড়তে এক মাসের মতো সময় লাগবে।

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

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

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

ক্যারিয়ার এডভাইজ – ৪

[থেরাপ সার্ভিসেস লিমিটেড কর্তৃক আয়োজিত নিয়মিত ওয়েবিনারের একটি পর্ব ছিল প্রোগ্রামিং ক্যারিয়ার নিয়ে। সেখানে বক্তা ছিলেন থেরাপের প্রধান কারিগরি কর্মকর্তা (সিটিও) মোজাহেদুল হক আবুল হাসনাত (মাসুম)। থেরাপ কর্তৃপক্ষের অনুমতিক্রমে সেই ওয়েবিনার থেকে টেক্সটে রূপান্তর করে আমার ব্লগের পাঠকদের জন্য পোস্ট করলাম। এটি চতুর্থ ও শেষ পর্ব।]

ইন্ডাস্ট্রি এখন কোন দিকে যাচ্ছে
ইন্ডাস্ট্রি এখন ক্লাউড ভিত্তিক SaaS টাইপ প্রোডাক্ট এর দিকে যাচ্ছে। অর্থাৎ এখন নতুন সফটওয়্যার ডেভেলপ হলে সেটা ক্লাউডের মাধ্যমে করে, আর ইউজাররা ওয়েবের মাধ্যমে সফটওয়্যার ব্যবহার করে এবং মাসিক বা বাৎসরিক ফি প্রদান করে। SaaS মডেলটা বর্তমানে বেশ জনপ্রিয়। এরপর আছে মোবাইল অ্যাপ্লিকেশান। এটা সম্পর্কে তোমরা সবাই জান। কিন্তু একটা জিনিস আমরা অবহেলা করি, সেটা হল, আমি শুনেছি, কোন কোন বিশ্ববিদ্যালয়ে জাভা’র পরিবর্তে অ্যান্ড্রয়েড এর কোর্স করাচ্ছে। এটা আসলে ঠিক না। শুধু মোবাইল অ্যাপ্লিকেশান ডেভেলপমেন্ট করলে তো হবে না, মোবাইলটা হলে ফ্রন্টএন্ড। সব অ্যাপ্লিকেশানের ব্যাকএন্ড আছে, তো ব্যাকএন্ডটাও করতে হবে। কাজেই শুধু মোবাইল ডেভেলপমেন্ট শিখলে হবে না, ব্যাকএন্ডও শিখতে হবে। বর্তমানে ক্লাউডের জনপ্রিয়তার কারণে ভালো কোন আইডিয়া গ্রাহকদের কাছে খুব সহজেই পৌঁছান যায়। PaaS এর মাধ্যমে খুব সহজেই সফটওয়্যার ডেভেলপমেন্ট করা যায়। যেমনঃ তুমি যদি গুগল অ্যাপ ইঞ্জিন শিখো তবে এটাতে ডাটাবেজও আছে, ওয়েব ডেভেলপমেন্টের সব কিছুই আছে এবং একটা ল্যাঙ্গুয়েজের উপর ভিত্তি করে একটা প্রোডাক্ট তৈরি করতে পার এবং এই প্রোডাক্টটা ১০ জন ইউজার ব্যবহার করলে যে কার্যকারিতা দেখাবে ১০ লক্ষ ইউজার ব্যবহার করলেও একই কার্যকারিতা দেখাবে।

যেই যেই ল্যাঙ্গুয়েজ এখন জনপ্রিয়
জাভা অনেক দিন আগের থেকেই জনপ্রিয়। রুবি, পাইথন, জাভাস্ক্রিপ্ট। জাভাস্ক্রিপ্ট গত ৫/৬ বছরে খুবই জনপ্রিয় হয়ে গেছে। সি# এবং পিএইচপি বাংলাদেশে অনেক চাহিদা। লোকাল কোম্পানিগুলো অনেক বেশি ডট নেট এবং পিএইচপি ব্যবহার করে। যারা লোকাল কোম্পানিতে কাজ করতে চাও, তারা এগুলো শিখতে পার। যেহেতু এগুলো সহজ এবং অনেক লোক এগুলো উপর কাজ করে, যদিও কাজও অনেক কিন্তু অনেক প্রতিযোগিতাও আছে। তাই শত শত প্রোগ্রামার থেকে ভাল প্রোগ্রামার খুঁজে বের করা বেশ কঠিন। বাংলাদেশে জাভা, রুবি, পাইথন এইসব প্রোগ্রামার খুব বেশি নাই, তাই তোমরা যারা এই সব ল্যাঙ্গুয়েজে ভাল করবা, তারা ভাল জব পাবা। বর্তমানে ফাংশনাল প্রোগ্রামিংও জনপ্রিয়। আর এ প্রোগ্রামিং করার প্লাটফরম হচ্ছে node.js এবং Scala। node.js হচ্ছে জাভাস্ক্রিপ্ট দিয়ে ব্যাকএন্ডে কাজ করার প্লাটফরম। এটাও বেশ জনপ্রয় হচ্ছে। অনেকগুলো নোএসকিউএল ডাটাবেজ আছে। এর মধ্যে MongoDB সবচেয়ে জনপ্রিয়।

java-151343_640
জাভা ওয়ার্ল্ড
যেহেতু থেরাপ জাভা ভিত্তিক। তাই জাভা সম্পর্কে কিছু বলতে চাই। অনেক মিথ আছে বাংলাদেশে, যেমন জাভা একটি মৃত ল্যাঙ্গুয়েজ অর্থাৎ জাভার জনপ্রিয়তা কম। বাংলাদেশের লোকাল ইন্ডাস্ট্রির সাপেক্ষে এটা সত্য। কারণ, লোকাল কোম্পানি গুলো ডট নেট বেশি ব্যবহার করে তারপর পিএইচপি। কিন্তু বিশ্বব্যাপী চিন্তা করলে জাভা হচ্ছে দ্বিতীয় জনপ্রিয় ল্যাঙ্গুয়েজ – তাইওবি(TIOBE) এর ভিত্তিতে। প্রথম ল্যাঙ্গুয়েজ হচ্ছে সি। আর জাভা হচ্ছে এন্টারপ্রাইজ ওয়ার্ল্ডে ১ নম্বর ল্যাঙ্গুয়েজ। জাভার কতগুলো ফ্রেমওয়ার্ক আছে। যারা জাভা নিয়ে ক্যারিয়ার গড়তে চাও, তারা ফ্রেমওয়ার্কগুলো শিখে ফেলতে পার। স্প্রিং হচ্ছে সবচেয়ে জনপ্রিয় জাভা ফ্রেমওয়ার্ক। স্প্রিং একটি বিশাল ফ্রেমওয়ার্ক। তবে মজার বিষয় হচ্ছে, পুরোটা একসাথে শেখার দরকার নাই। একটু একটু করে শিখলেই চলবে। যারা স্প্রিং দিয়ে ওয়েব অ্যাপ্লিকেশান বানাতে চাও, তারা স্প্রিংএমভিসি  শিখতে পার। JEE হচ্ছে Java Enterprise Edition, এটাও একটা ফ্রেমওয়ার্ক। এটাও শিখতে পার। হাইবারনেটও শিখতে পার। জাভা ওয়ার্ল্ডে কিছু টুল ব্যবহার করা হয়। এখানে দুইটা টুলের কথা উল্লেখ করলাম। একটা Ant আর একটা Maven. ছাত্র অবস্থায়ই এগুলো শিখে রাখা ভাল।

বাংলাদেশে কী করা যায়
বাংলাদেশে বেশ কিছু ভাল সফটওয়্যার কোম্পানি আছে। কিন্তু কোম্পানিগুলো ছোট। ছোট মানে কোম্পানিগুলোতে হয়ত ১০০/২০০ বা ২০/৩০ জন কর্মী আছে। কাজেই অনেক মানুষ এসব কোম্পানি সম্পর্কে জানে না। পেপারে হয়তো এদের ছবি দেখনা, টিভিতে হয়তো এদের এড দেখ না। কিন্তু এরা যথেষ্ট ভাল কোম্পানি। সবচেয়ে বড় কথা হচ্ছে, কোম্পানিগুলো ভালো লোক খুঁজছে, থেরাপ তো খুঁজছেই সাথে আরও যেসব ভাল কোম্পানি আছে, তারাও ভাল প্রোগ্রামার, টেস্টার খুঁজছে, কিন্তু পাচ্ছে না। আবার অনেক ভাল প্রোগ্রামার, টেস্টারও আছে যারা ভালো কোম্পানি খুঁজে পায়নি। ভালো কোম্পানি না পেয়ে হয়তো কোন বাজে কোম্পানিতে ঢুকে পরে। তাই তোমাদেরকে ভাল করে খোঁজ খবর নিতে হবে। বাংলাদেশে বেশ কিছু সফটওয়্যার কোম্পানি আছে যারা বড় হতে পারছে না বা বড় হবার লিমিটিং ফ্যাক্টর হচ্ছে ভালো লোক পাচ্ছে না। এদের হাতে প্রচুর কাজ আছে, প্রচুর প্রোজেক্ট আছে, প্রচুর প্রোডাক্ট তৈরি করতে পারবে, অনেক কাজ নিয়ে আসতে পারবে। কিন্তু এই কাজ করার জন্য যে পরিমাণ লোক দরকার সেই লোকজন নাই। এটা হচ্ছে সবচেয়ে বড় লিমিটিং ফ্যাক্টর কোম্পানিগুলোর জন্য। যারা চাকরি করতে চাও না, তাদের জন্যও এখন খুব ভালো সময়। যাদের মাথায় ভালো সফটওয়ারের আইডিয়া আছে, প্রোডাক্টের আইডিয়া আছে তারা স্টার্টআপ করতে পার। বাংলাদেশে এখন ছোটখাট বেশকিছু স্টার্টআপ আছে, যারা ৩/৪ জন মিলে একটা স্টার্টআপ তৈরি করে, বা কিছু প্রোডাক্ট তৈরি করে, গেমস তৈরি করে। অর্থাৎ স্টার্টআপ করার জন্য এখন সবচেয়ে ভাল সময়।

ক্যারিয়ার এডভাইজ – ৩

থেরাপ সার্ভিসেস লিমিটেড কর্তৃক আয়োজিত নিয়মিত ওয়েবিনারের একটি পর্ব ছিল প্রোগ্রামিং ক্যারিয়ার নিয়ে। সেখানে বক্তা ছিলেন থেরাপের প্রধান কারিগরি কর্মকর্তা (সিটিও) মোজাহেদুল হক আবুল হাসনাত (মাসুম)। থেরাপ কর্তৃপক্ষের অনুমতিক্রমে সেই ওয়েবিনার থেকে টেক্সটে রূপান্তর করে আমার ব্লগের পাঠকদের জন্য পোস্ট করলাম।

প্রথম পর্ব পড়তে এখানে ক্লিক করুন

তৃতীয় পর্ব

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

kung-fu-panda-3d-film-animazione1
প্রোগ্রামিংটা হচ্ছে অনেকটা খেলাধুলার মত। যেমন ফুটবল, তুমি যদি সারাদিন ম্যারাডোনা বা পেলের জীবনী পড় তবে তুমি ভাল খেলোয়াড় হতে পারবে না। আবার এটাও ঠিক যে ফুটবল কিভাবে খেলে সেটা বই পড়ে বা কারো কাছ থেকে জানতে হবে, কিন্তু ভালো খেলোয়াড় হতে হলে তোমাকে ফুটবল খেলতে হবে। খেলতে খেলতেই তুমি খেলোয়াড় হতে পারবে। প্রোগ্রামিংও ঠিক সেইরকম, কম্পিউটার সায়েন্স যারা পড়ছ তারা কিন্তু জান যে কিভাবে প্রোগ্রামিং করতে হয় কিন্তু প্রোগ্রামার হতে হলে তোমাকে অবশ্যই প্রোগ্রামিং করতে হবে। তোমরা যদি চিন্তা করো যে তোমরা পড়াশুনা শেষ করে প্রোগ্রামিং করবা, তবে আমার মনে হয় তোমার অনেক দেরি করে ফেলেছ যদি যারা আগে থেকেই প্রোগ্রামিং করে তাদের সাথে তুলনা করা হয়। বাংলাদেশের মত জায়গায় যেখানে আইটি ইন্ডাস্ট্রি খুব ছোট, সেখানে সব কোম্পানিগুলো চায় যে ছাত্ররা বের হবে এবং তারা ইতিমধ্যে প্রোগ্রামিং জেনে থাকবে। প্রায় সব কোম্পানিই চায়, প্রোগ্রামিং জানা কেউ একজন আসবে। প্রোগ্রামিং শিখতে সময় লাগে। একজন ভালো প্রোগ্রামার হতে প্রায় ২/৩ বছর লেগে যায়। খুব ভালো হলে এবং খুব ভালো ট্রেইনিং দিলেও কমপক্ষে ১ বছর সময় লাগে একজন মোটামুটি মানের প্রোগ্রামার বানাতে। কাজেই এটার জন্য যদি কোম্পানিকে বিনিয়োগ করতে হয়, তবে বাংলাদেশের মত কোম্পানিগুলো জন্য এটা বেশ কষ্টকর হয়ে যায়। কাজেই আমি বলব, যারা সিএস বা কাছাকাছি ফিল্ডে ঢুকেছ, যারা প্রোগ্রামার হতে চাও, অবশ্যই প্রোগ্রামিং করতে হবে। আর ক্লাসে যেসব প্রোজেক্ট দেয়, ওইগুলো যথেষ্ট না। ক্লাসের প্রোজেক্টগুলো খুব সহজ হয়। তাই আরও ভাল ভাল প্রোগ্রামিং সমস্যা সমাধান করতে হবে। এক কথায় প্রচুর প্রোগ্রামিং করতে হবে। একা একা করার চেয়ে বন্ধুদেরকে নিয়ে করাটা আমি ভাল মনে করি। ছাত্র অবস্থাটা হচ্ছে সবচেয়ে ভালো সময়। এই সময়টা যদি সঠিক ভাবে কাজে লাগানো যায়, তবে পরে অনেক সুবিধা পাওয়া যায়। তোমার আশেপাশের মানুষকে সাহায্য করার জন্য সফটওয়্যার বানাতে পার। পড়াশুনার ব্যাপারে বলব, বেশির বিশ্ববিদ্যালয়ের সিলেবাস বেশ ভালো এবং বিশ্বমানের, কারণ বেশির ভাগ বিশ্ববিদ্যালয়ের সিলেবাস কিন্তু বাইরের কোন না কোন বিশ্ববিদ্যালয়ের অনুকরণে তৈরি করা। সিলেবাসের কন্টেন্টটা ভালো, সীমাবদ্ধতা হচ্ছে পড়ানোর পদ্ধতিতে।  হয়তো শিক্ষকরা যতটুকু আপ টু ডেট থাকা উচিৎ সেইরকম না। অনেকেই পড়ে শুধু জিপিএ পাওয়ার জন্য, এটা আমার মতে ভুল হবে। বিশেষ করে মূল সাবজেক্টগুলো যখন পড়ছ তখন মন দিয়ে পড়বে। তাতে যেমন জিপিএ চলে আসবে তেমনি তুমি প্রোগ্রামার বা ডাটাবেজ অ্যাডমিনিসট্রেটর হওয়ার লক্ষে এগিয়ে যেতে পারবা। শুধু যদি জিপিএর জন্য পড় তাহলে ওইটা হবে না।

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

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

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

শেষ পর্ব পড়তে এখানে ক্লিক করুন

ক্যারিয়ার এডভাইজ – ২

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

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

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

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

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

3666796961_0ab03e7c49

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

প্রোজেক্ট ম্যানেজমেন্ট
এই ফিল্ডেও আইটি ও ননআইটি ব্যাকগ্রাউন্ড থেকে লোকজন আসে। কিন্তু আইটি থেকে আসলে আলাদা সুবিধা পাওয়া যায়।

পরবর্তী পর্ব পড়তে এখানে ক্লিক করুন

প্রথম পর্ব পড়তে এখানে ক্লিক করুন

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

ক্যারিয়ার এডভাইজ – ১

থেরাপ সার্ভিসেস লিমিটেড কর্তৃক আয়োজিত নিয়মিত ওয়েবিনারের একটি পর্ব ছিল প্রোগ্রামিং ক্যারিয়ার নিয়ে। সেখানে বক্তা ছিলেন থেরাপের প্রধান কারিগরি কর্মকর্তা (সিটিও) মোজাহেদুল হক আবুল হাসনাত (মাসুম)। থেরাপ কর্তৃপক্ষের অনুমতিক্রমে সেই ওয়েবিনার থেকে টেক্সটে রূপান্তর করে আমার ব্লগের পাঠকদের জন্য পোস্ট করলাম। আশা করি অনেকেরই এটা কাজে লাগবে।

ক্যারিয়ার এডভাইজ (১ম পর্ব)

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

থেরাপ সম্পর্কে কিছু কথা
প্রথমে আমাদের কোম্পানি সম্পর্কে কিছু বলতে চাই। আমাদের মূল কোম্পানিটা হচ্ছে থেরাপ সার্ভিসেস। এটা একটা আমেরিকান কোম্পানি। আমরা অনেকগুলো প্রোডাক্ট তৈরি করি এবং বিক্রি করি। আমাদের মার্কেটটা হচ্ছে ইউএসএ (USA) আর আমাদের মডেলটা হচ্ছে SaaS। SaaS হচ্ছে Software as a Service। এর মানে হচ্ছে আমাদের কাস্টমাররা আমাদের সফটওয়্যারটা সিডিতে কিনে নেয় না অথবা সফটওয়্যারটা কিনে তাদের মেশিনে ইন্সটল করতে হয় না। সফটওয়্যারটা আমাদের ডাটা সেন্টারে রান করছে এবং ওরা ওয়েব এর মাধ্যমে এসে আমাদের সফটওয়্যারটা ব্যবহারের সুযোগ পায়। আর এই সফটওয়্যারটা ব্যবহারের বিনিময়ে আমাদেরকে বাৎসরিক একটা ফি দেয়।এবং আমরা তাদেরকে যে সার্ভিসটা দিচ্ছি তা শুধু সফটওয়্যার না, সফটওয়্যারটা ব্যবহার করে যে ডাটা ঢুকাচ্ছে সেই ডাটা ঠিকভাবে সেইভ করা মানে এটা সঠিক স্টোরেজে রাখা এবং যেন কখনো মুছে না যায় সেই নিশ্চয়তা দেওয়া, এটা সঠিকভাবে ব্যাকআপ করা এবং এ সম্পর্কিত আরো সেবা আছে। আমরা প্রায় ১১ বছর ধরে আমেরিকাতে এটা করছি। থেরাপ সার্ভিসেস যে পণ্য গুলো বিক্রি করি আমরা, সেগুলো থেরাপ অ্যাপ্লিকেশন এর ভিতরে থাকে। থেরাপ অ্যাপ্লিকেশনের ভিতরে অনেকগুলো, প্রায় ৭০-৮০টা বিভিন্ন সাব অ্যাপ্লিকেশান বা মডিউল আছে যেটা বিভিন্ন ইউজাররা ব্যবহার করছে। ইউএসএ-এর স্বাস্থ্যখাতে আমাদের অ্যাপ্লিকেশানের ডেইলি একটিভ ইউজার হচ্ছে প্রায় দুই লক্ষ। মানে ২ লাখ ব্যবহারকারী প্রতিদিন থেরাপ ব্যবহার করছে। থেরাপ ব্যবহার করে নিজেদের মধ্যে যোগাযোগ রক্ষা করছে এবং এ ডাটা যেসব মানুষের জন্য রাখা হয়েছে সেইসব মানুষের সংখ্যাও প্রায় ২ লাখ। ইউএসএ-এর ৫০টা স্টেটের মধ্যে প্রায় ৪৮টা স্টেটে আমাদের গ্রাহক আছে। আমাদের গ্রাহকরা শুধু প্রাইভেট কোম্পানি না, বিভিন্ন স্টেট গভর্নমেন্টও আমাদের গ্রাহক। কাজেই সরকারি এবং বেসরকারি উভয় ধরণের গ্রাহকই আমাদের আছে।

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

মাসুম ভাইয়ের সংক্ষিপ্ত পরিচিতি
প্রফেশনালি প্রোগ্রামিং করছি ১৯৯৬ সাল থেকে। ছোটবেলা থেকেই প্রোগ্রামিং কন্টেস্ট করতাম। সম্ভবত ক্লাস এইট বা নাইন থেকেই প্রোগ্রামিং করা শুরু করি এবং সেটা শুরু করেছি বই পড়ে পড়ে। কম্পিউটার ধরার আগে প্রোগ্রামিং করতাম খাতায়, খাতায়ই রেজাল্ট পেতাম। কম্পিউটার ধরার সুযোগ হয় যখন আমি নটরডেম কলেজে ভর্তি হই। নটরডেম কলেজে একটা কম্পিউটার ক্লাব ছিল, সেটা এই ক্ষেত্রে ভাল ভূমিকা পালন করেছে। ঐ ক্লাবের ভাইস-প্রেসিডেন্ট ছিলাম। ওখান থেকেই কম্পিউটারে প্রোগ্রামিং করতাম। যেহেতু আগে থেকেই প্রোগ্রামিং জানতাম সেহেতু তেমন একটা অসুবিধা হয়নি এবং ঐ সময় থেকেই বিভিন্ন প্রোগ্রামিং কন্টেস্টে যোগ দিতাম। শুরুতে লিনাক্সের উপর বেশ ঝোঁক ছিল। তোমাদের যারা সিনিয়র ভাই’রা আছেন, তারা হয়ত বিডিলাগ-এর নাম শুনে থাকবে, সেই “বাংলাদেশ লিনাক্স ইউজারস গ্রুপ” এর প্রতিষ্ঠাতা ছিলাম। বুয়েট থেকে গ্রাজুয়েশন করেছি ২০০১ এ। আমাদের ব্যাচ হল ৯৪ অর্থাৎ এইচএইচসি’৯৪ ছিলাম। সেশন জ্যাম ছিল, তাই চার বছরের জায়গায় সাত বছর লেগেছে। বুয়েট থেকে পাশ করে বের হবার আগে থেকেই প্রফেশনাল প্রোগ্রামিং করছি। বুয়েটে পড়া অবস্থায়ই বেশ নাম করা আইএসপি অগ্নি সিস্টেম লিমিটেডে কর্মরত ছিলাম এবং বেশ কিছু সিস্টেম ডেভেলপ করেছি সেই সময়ে। আর থেরাপ বিডিতে আছি ২০০৩ থেকে অর্থাৎ থেরাপ যখন থেকে বাংলাদেশে শুরু হয়, তখন থেকেই আছি। যদিও আমার টাইটেল CTO কিন্তু বেসিক্যালি আমি প্রধান সফটওয়্যার ডেভেলপার-ডিজাইনারও।

success-538725_640

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

একটা সফটওয়্যার তৈরি করে গ্রাহক পর্যন্ত পৌঁছে দিতে এগুলো লাগে :

  • সফটওয়্যার ডেভেলপমেন্ট
  • সফটওয়্যার টেস্টিং
  • ডাটাবেজ
  • সিস্টেম অ্যাডমিনিসট্রেশন
  • নেটওয়ার্ক অ্যাডমিনিসট্রেশন
  • এনালিস্ট
  • প্রোজেক্ট ম্যানেজমেন্ট

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

পরবর্তী পর্ব পড়তে এখানে ক্লিক করুন

কোন পথে যে চলি

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

confusion-311388_640

তো এখন আমি যেটা দেখি, সবাই একটা বিষয় নিয়ে খুব দ্বিধাগ্রস্ত থাকে। পিএইচপি নাকি জাভা? এন্ড্রয়েড অ্যাপ নাকি পাইথন? আবার অনেকের ধারণা, ডট নেটে কাজ করতে না পারলে তার জীবন ব্যর্থ। এরকম কনফিউশন থাকাটা অস্বাভাবিক কিছু না, বরং খুবই স্বাভাবিক। কয়েকদিন আগে সরকারের একটা প্রজেক্ট FTFL (Fast Track Future Leader)-এর শেষ সপ্তাহে প্রোগ্রামিং ট্রেনিং দিতে গিয়েছিলাম। সেখানে এক মাসের ফাউন্ডেশন ট্রেনিং (কমিউনিকেশন স্কিল, আদব-কায়দা, সফট স্কিল ও একটু প্রোগ্রামিং স্কিল) শেষে সবার জন্য বিভিন্ন ট্র্যাক দেওয়া হল। আগ্রহ ও দক্ষতার বিচার করে বিভিন্ন জনকে বিভিন্ন ট্র্যাকে দেওয়া হলো। সেই ট্র্যাকের উপর ৩ মাসের প্রশিক্ষণ হবে। ট্র্যাকগুলো ছিলো ডট নেট, পিএচইপি (লারাভেল ফ্রেমওয়ার্ক), মোবাইল অ্যাপস্ (অ্যান্ড্রয়েড), জাভা ইত্যাদি। শিক্ষার্থীদের মাঝে এই ট্র্যাক নির্বাচন নিয়ে ব্যাপক টেনশন! কয়েকজন আমার সাথে কথা বলল, ভাইয়া অমুক ট্র্যাক নিচ্ছি, ভুল করছি না তো?

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

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

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

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

বেসিক জ্ঞান শক্ত কর, আত্মবিশ্বাসী হও, আচার-আচরণে ভদ্র হও। তোমাদের জন্য শুভকামনা।