শিক্ষার্থীদের জন্য অ্যান্ড্রুর উপদেশ

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

n-ANDREW-NG-628x314

প্রশ্ন: শিক্ষার্থীদের জন্য আপনার উপদেশ কী?
কোন জিনিসের পেছনে ছুটবে, কী কাজে তোমার মূল্যবান সময় ব্যায় করবে – এই বিষয়ে সিদ্ধান্ত নেওয়ার সময় আমি তোমাকে দুটো জিনিস বিবেচনা করতে বলব –
১) তুমি যেটা করছ বা করতে যাচ্ছ, সেটা সমাজে, কিংবা মানুষের জীবনে কোনো পরিবর্তন আনবে কী না।
২) কাজটি করে তুমি কতটুকু শিখতে পারবে।

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

তাই নিজেকে প্রশ্ন কর: তুমি যা করার চিন্তা করছ কিংবা স্বপ্ন দেখছ, সেটি যদি সত্যিই সফলভাবে বাস্তবায়িত হয়, এটি কি অনেক মানুষের জীবনকে প্রভাবিত করবে? অনেক মানুষকে সাহায্য করবে? উত্তর যদি না হয়, তবে অন্য কিছু করার চিন্তা কর। নয়ত তুমি তোমার মাঝে যে অমিত সম্ভাবনা আছে, তার সঠিক ব্যবহার করতে পারবে না।
দ্বিতীয়ত, যখন তুমি তরুণ, নিজের শিক্ষার ব্যাপারে বিনিয়োগ করতে দ্বিধা করবে না। আর হ্যাঁ, আমার কাছে “তরুণ”-এর সংজ্ঞা হচ্ছে যার বয়স ১০০ বছরের কম।

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

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

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

সফটওয়্যার ইন্ডাস্ট্রিতে আসার আগে

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

১) ভার্শন কন্ট্রোল সিস্টেমের ব্যবহার: তোমরা নিশ্চয়ই গিট বা গিটহাবের নাম শুনেছ, না শুনে থাকলে git ও github লিখে গুগলে খোঁজা শুরু কর। খুব সহজ কথায় বললে, গিট হচ্ছে এমন একটি সফটওয়্যার যার মাধ্যমে ভার্শন নিয়ন্ত্রনের কাজটি বেশ সহজে করা যায় এবং সেকারণে অনেকে মিলে একসাথে একটি প্রজেক্ট কাজ করতে সমস্যা হয় না। আর গিটহাব হচ্ছে ওয়েবভিত্তিক একটি সার্ভিস যেখান থেকে বিনামূল্যে গিট ব্যবহার করা যায়। তো গিটহাবে গিয়ে একটু সময় কাটালেই তোমরা এর ব্যবহার শিখে নিতে পার। এছাড়া এই ওয়েবসাইটে গিয়ে তোমরা গিটের ব্যবহার সহজে শিখতে পারবে : https://try.github.io/

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

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

৪) ওয়েবের ধারণা: তুমি সফটওয়্যারের যে বিভাগে বা যে ধরণের সফটওয়্যার নিয়েই কাজ কর না কেন, বর্তমানে তোমার ওয়েবের শক্ত ধারণা থাকার কোনো বিকল্প নেই। ওয়েব কীভাবে কাজ করে সেটা তোমার জানতে হবে। বিভিন্ন অংশের কাজের ওপর স্বচ্ছ ধারণা থাকতে হবে। ওয়েবের ধারণা অর্জনের জন্য দ্বিমিক কম্পিউটিংয়ের ওয়েব কনসেপ্টস কোর্সটিই সেরা, এবং এটি বিনামূল্যে করা যাবে এই ঠিকানা থেকে: http://dimikcomputing.com/course/web-concepts-online-course/। আর হ্যাঁ, কোর্সটি সম্পূর্ণ বাংলায়।

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

নতুন দিনের প্রোগ্রামারদের জন্য শুভকামনা।

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

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

ইন্ডাস্ট্রি এখন কোন দিকে যাচ্ছে
ইন্ডাস্ট্রি এখন ক্লাউড ভিত্তিক 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
প্রোগ্রামিংটা হচ্ছে অনেকটা খেলাধুলার মত। যেমন ফুটবল, তুমি যদি সারাদিন ম্যারাডোনা বা পেলের জীবনী পড় তবে তুমি ভাল খেলোয়াড় হতে পারবে না। আবার এটাও ঠিক যে ফুটবল কিভাবে খেলে সেটা বই পড়ে বা কারো কাছ থেকে জানতে হবে, কিন্তু ভালো খেলোয়াড় হতে হলে তোমাকে ফুটবল খেলতে হবে। খেলতে খেলতেই তুমি খেলোয়াড় হতে পারবে। প্রোগ্রামিংও ঠিক সেইরকম, কম্পিউটার সায়েন্স যারা পড়ছ তারা কিন্তু জান যে কিভাবে প্রোগ্রামিং করতে হয় কিন্তু প্রোগ্রামার হতে হলে তোমাকে অবশ্যই প্রোগ্রামিং করতে হবে। তোমরা যদি চিন্তা করো যে তোমরা পড়াশুনা শেষ করে প্রোগ্রামিং করবা, তবে আমার মনে হয় তোমার অনেক দেরি করে ফেলেছ যদি যারা আগে থেকেই প্রোগ্রামিং করে তাদের সাথে তুলনা করা হয়। বাংলাদেশের মত জায়গায় যেখানে আইটি ইন্ডাস্ট্রি খুব ছোট, সেখানে সব কোম্পানিগুলো চায় যে ছাত্ররা বের হবে এবং তারা ইতিমধ্যে প্রোগ্রামিং জেনে থাকবে। প্রায় সব কোম্পানিই চায়, প্রোগ্রামিং জানা কেউ একজন আসবে। প্রোগ্রামিং শিখতে সময় লাগে। একজন ভালো প্রোগ্রামার হতে প্রায় ২/৩ বছর লেগে যায়। খুব ভালো হলে এবং খুব ভালো ট্রেইনিং দিলেও কমপক্ষে ১ বছর সময় লাগে একজন মোটামুটি মানের প্রোগ্রামার বানাতে। কাজেই এটার জন্য যদি কোম্পানিকে বিনিয়োগ করতে হয়, তবে বাংলাদেশের মত কোম্পানিগুলো জন্য এটা বেশ কষ্টকর হয়ে যায়। কাজেই আমি বলব, যারা সিএস বা কাছাকাছি ফিল্ডে ঢুকেছ, যারা প্রোগ্রামার হতে চাও, অবশ্যই প্রোগ্রামিং করতে হবে। আর ক্লাসে যেসব প্রোজেক্ট দেয়, ওইগুলো যথেষ্ট না। ক্লাসের প্রোজেক্টগুলো খুব সহজ হয়। তাই আরও ভাল ভাল প্রোগ্রামিং সমস্যা সমাধান করতে হবে। এক কথায় প্রচুর প্রোগ্রামিং করতে হবে। একা একা করার চেয়ে বন্ধুদেরকে নিয়ে করাটা আমি ভাল মনে করি। ছাত্র অবস্থাটা হচ্ছে সবচেয়ে ভালো সময়। এই সময়টা যদি সঠিক ভাবে কাজে লাগানো যায়, তবে পরে অনেক সুবিধা পাওয়া যায়। তোমার আশেপাশের মানুষকে সাহায্য করার জন্য সফটওয়্যার বানাতে পার। পড়াশুনার ব্যাপারে বলব, বেশির বিশ্ববিদ্যালয়ের সিলেবাস বেশ ভালো এবং বিশ্বমানের, কারণ বেশির ভাগ বিশ্ববিদ্যালয়ের সিলেবাস কিন্তু বাইরের কোন না কোন বিশ্ববিদ্যালয়ের অনুকরণে তৈরি করা। সিলেবাসের কন্টেন্টটা ভালো, সীমাবদ্ধতা হচ্ছে পড়ানোর পদ্ধতিতে।  হয়তো শিক্ষকরা যতটুকু আপ টু ডেট থাকা উচিৎ সেইরকম না। অনেকেই পড়ে শুধু জিপিএ পাওয়ার জন্য, এটা আমার মতে ভুল হবে। বিশেষ করে মূল সাবজেক্টগুলো যখন পড়ছ তখন মন দিয়ে পড়বে। তাতে যেমন জিপিএ চলে আসবে তেমনি তুমি প্রোগ্রামার বা ডাটাবেজ অ্যাডমিনিসট্রেটর হওয়ার লক্ষে এগিয়ে যেতে পারবা। শুধু যদি জিপিএর জন্য পড় তাহলে ওইটা হবে না।

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

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

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

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

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

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

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

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

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

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

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

success-538725_640

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

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

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

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

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

সিএস, সিএসই, এসই নাকি আইসিটি?

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

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

প্রথমেই জানতে হবে কম্পিউটার সম্পর্কে মৌলিক ধারণা, আর সেটি পাওয়া যাবে Introduction to Computer নামক কোর্সে। তারপর Structure Programming (স্ট্রাকচার্ড প্রোগ্রামিং)। সাধারণত আমাদের দেশের বিশ্ববিদ্যালয়গুলো এই বিষয়টি পড়ানোর সময় সি ল্যাঙ্গুয়েজ শেখায়। আর সেই সাথে Discrete Mathematics (ডিসক্রিট ম্যাথমেটিক্স)। এটিও দেখবে সিলেবাসে আছে।

তারপরে আমাদের শিখতে হবে Object Oriented Programming (অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং), Data Strucutre (ডাটা স্ট্রাকচার) ও Digital Logic (ডিজিটাল লজিক)। সেগুলোও দেখবে সব বিষয়ের সিলেবাসেই আছে।

এর পরের ধাপ রয়েছে কম্পিউটার নেটওয়ার্কিং (Computer Networking), মাইক্রোপ্রসেসর ও অ্যাসেম্বলি ল্যাঙ্গুয়েজ (Microprocessor and Assembly Language), কম্পিউটার আর্কিটেকচার (Computer Architecture) ও অপারেটিং সিস্টেম (Operating System)। এগুলোও আবশ্যিক বিষয়, মানে জানতেই হবে। তাই তোমরা যদি ভার্সিটির সিলেবাসগুলো খেয়াল করো, দেখবে যে এই বিষয়গুলো আছেই, থাকতেই হবে।

আর বাকি রইল ডাটাবেজ (Database), অ্যালগরিদম (Algorithm), আর্টিফিশিয়াল ইন্টিলিজেন্স (Artifical Intelligence) ও সফটওয়্যার ইঞ্জিনিয়ারিং (Software Engineering)। এই বিষয়গুলোও না জানলেই নয়।

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

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

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

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

[১] https://www.facebook.com/groups/programming.school/

[২] https://www.facebook.com/DimikComputing (কম্পিউটার সায়েন্সের কিছু বিষয় সহজভাবে বোঝানের জন্য তৈরি করা হয়েছে দ্বিমিক কম্পিউটিং স্কুল। সেখানে ইতিমধ্যে প্রোগ্রামিংয়ে হাতেখড়ি, ওয়েব কনসেপ্টস ও ডিসক্রিট ম্যাথের উপর বাংলায় অনলাইন কোর্স আয়োজন করা হয়েছে। সামনে আরো কিছু কোর্স আসছে।)

মারুফ মনিরুজ্জামান এর সাক্ষাৎকার

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

সুবিন : মনির ভাই, এখন কোথায় কাজ করছেন?
মনিরুজ্জামান : আমি এখন Caradigm নামে একটা কোম্পানিতে কাজ করি। এটা মাইক্রোসফট আর জেনারেল ইলেকট্রিক কোম্পানির হেলথ কেয়ার ভিত্তিক যৌথ উদ্যোগ।

সুবিন : এখানে আপনি কী ধরণের কাজ করেন? আপনার প্রজেক্ট সম্পর্কে একটু বলুন।
মনিরুজ্জামান : আমি যে প্রজেক্টে কাজ করি সেটা হেলথ কেয়ারের জন্য একটা প্লাটফর্ম। এটা বিভিন্ন উৎস এবং ডিভাইস থেকে তথ্য সংগ্রহ থেকে শুরু করে স্বাস্থ্য সংক্রান্ত যেসব প্রযুক্তি দরকার হয়, সেগুলোর জন্য একটা প্লাটফর্ম সরবরাহ করে। যেটার উপর ভিত্তি করে অন্য ছোটবড় কোম্পানি সফটওয়্যার লিখতে পারে। এখানে মূলতঃ মাইক্রোসফটের প্রযুক্তি ব্যবহার হয়। যেমন ল্যাংগুয়েজের জন্য C#, প্লটাফর্মের জন্য Windows Server, SQL Server, Windows Azure, এছাড়া Natural Language Processing ইত্যাদি ব্যবহার হয়।

সুবিন : Caradigm-এ কবে থেকে কাজ করছেন? এখানে চাকরি পেলেন কিভাবে?
মনিরুজ্জামান : Caradigm এ কাজ করি প্রায় দেড় বছর। এখানে কাজ পেয়েছি মূলতঃ আমার আগের মাইক্রোসফটে কাজ করার অভিজ্ঞতা থাকায়। আমি এর আগে ২০০৮ সনে মাইক্রোসফট অফিসে (যারা Word, Excel, Exchange এই সফটওয়্যারগুলো বানায়) যোগ দেই। সেখানে কিভাবে কাজ পেলাম সেটা বলা যায়। আমি শাহজালাল বিশ্ববিদ্যালয়ে পড়ার সময় জাভা ভার্চুয়াল মেশিন বানিয়েছিলাম একটা প্রোজেক্টের অংশ হিসাবে। সেটা নিয়ে আমি ২০০৮ এ codeproject এ একটা আর্টিকেল লিখি। সেটা ওই মাসে সেরা আর্টিকেল হিসাবে প্রথম হয়। এরপর ওরা আর্টিকেলের লিংকটা ওদের প্রায় ৫০ লক্ষ (৫ মিলিয়ন) সদস্যের কাছে পাঠায়। তাদের মধ্যে একজন মাইক্রোসফটের রিক্রুটার ছিল। উনি আমাকে রিজিউমি পাঠাতে বলেন। এরপর হংকংএ আমার ইন্টারভিউ হয়। এরপর আমি মাইকোসফট থেকে অফার পাই।

সেই আর্টিকেলের লিঙ্ক : http://www.codeproject.com/Articles/24029/Home-Made-Java-Virtual-Machine

সুবিন : বাংলাদেশে সফটওয়্যার ইন্ডাস্ট্রিতে কত বছর কাজ করেছেন?
মনিরুজ্জামান : আমি বাংলাদেশে কাজ করেছি প্রায় ৩ বছর। সাইক্রাফট সল্যুশন এবং কাজ সফটওয়্যার-এ।

সুবিন : এবারে একটু পেছনের দিকে যাই। প্রথম কম্পিউটারের সাথে পরিচয় কবে? প্রোগ্রামার হওয়ার সিদ্ধান্তটি কখন নিলেন?
মনিরুজ্জামান : কম্পিউটার প্রথম হাতে পাই শাহজালার বিশ্ববিদ্যালয়ে ভর্তি হওয়ার পর, ১৯৯৮ সনে। তবে কম্পিউটার নিয়ে আমার আগ্রহ ছিল স্কুলে পড়ার সময় থেকে। একটা কম্পিউটার হাতে পাওয়ার জন্য আমি অনেক চেষ্টা করেছি স্কুলে এবং কলেজে পড়ার সময়। তখন সি এন্ড ই জার্নাল নামে একটা পত্রিকা বের হত। সেটার ১৯৯৭ সংখ্যায় আমার একটা চিঠি ছাপা হয় যেটায় আমি জানতে চেয়েছিলাম Z80 কম্পিউটার বানানোর পার্টস কোথায় পেতে পারি। ওরা লিখেছিল এখন সেগুলো পাওয়া যাবে না। এর চেয়ে ১৫০০০ টাকা দিলে ওরা আমাকে একটা পুরোনো কম্পিউটার দিতে পারে। আর প্রথম প্রোগ্রামটা আমি “খাতায়” লিখেছিলাম সম্ভবত ১৯৯৪ সনে ক্লাস নাইনে পড়ার সময়। যেটা ছিল একটা কার্ড গেম। ১৯৯৮ সনে সেটা প্রথম কম্পিউটারে রান করে দেখি। প্রোগ্রামার হওয়ার সিদ্ধান্ত কবে নিলাম এটা বলা অনেক মুশকিল – তাই একটু ইতিহাস বলে দিলাম।

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

সুবিন : আপনার প্রথম স্কুল কোনটি ছিল? কত বছর সেখানে পড়েছেন?
মনিরুজ্জামান : আমার প্রথম স্কুল ছিল কাজীপুর, সিরাজগঞ্জের একটি গ্রামে। খুকশিয়া সরকারি প্রাথমিক বিদ্যালয়। সেখানে চার বছর লেখাপড়া করি।

সুবিন : তারপর আর কোন কোন স্কুলে পড়েছেন? কোন কলেজে পড়েছেন?
মনিরুজ্জামান : তারপর হৈমবালা সরকারি প্রাথমিক বিদ্যালয়, এসবি রেলওয়ে কলোনি উচ্চ বিদ্যালয়ে লেখাপড়া করেছি। আমার কলেজ হচ্ছে রাজশাহীর নিউ গভ: ডিগ্রী কলেজ।

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

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

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

সুবিন : ভালো প্রোগ্রামার হতে গেলে অ্যালগরিদমভিত্তিক প্রোগ্রামিং প্রতিযোগিতা, যেমন এসিএম আইসিপিসি-তে অংশগ্রহন কতটা গুরুত্বপূর্ণ?
মনিরুজ্জামান : ভালো প্রোগ্রামার হতে অবশ্যই ডাটা স্ট্রাকচার এবং অ্যালগরিদম জানতে হবে। ডাটা স্ট্রাকচার এবং অ্যালগরিদম না জেনে সফটওয়্যার বানালে সেটার  মধ্যে কাঠামোগত ত্রুটি থাকবে। এই ত্রুটিগুলোর কারণে সফটওয়্যারে নতুন ফিচার যোগ করা বা অধিক সংখ্যক ব্যবহারকারীর জন্য ব্যবহার উপযোগী করা কঠিন হয়ে পড়ে। সাধারনভাবে জটিল ডাটা স্ট্রাকচার এবং অ্যালগরিদম নিত্যদিনের কাজে দরকার হয় না। কিন্তু অনেক ছোট ছোট সিদ্ধান্ত নিতে হয় যেগুলোতে ডাটা স্ট্রাকচার এবং অ্যালগরিদম জানা একজন প্রোগ্রামারের সিদ্ধান্ত অনেক উন্নতমানের হয়। একারনে মাইক্রোসফট, ফেসবুক, গুগলের মত কোম্পানি ডাটা স্ট্রাকচার এবং অ্যালগরিদমের উপরই মূলতঃ ইন্টারভিউ নিয়ে থাকে। ডাটা স্ট্রাকচার এবং অ্যালগরিদমে দক্ষ যে কেউ অন্য প্রয়োজনীয় দক্ষতা সহজেই আয়ত্ব করতে পারে। এসিএম আইসিপিসি মূলতঃ কতটুকু ডাটা স্ট্রাকচার এবং অ্যালগরিদমে শেখা হল সেটার একটা পরীক্ষা। এখানে ভাল করলে ধরে নেয়া যায় যে, শেখা হচ্ছে ঠিকমত। যাদের সুযোগ আছে তাদের এসিএম আইসিপিসি তে অংশগ্রহন করা উচিত এবং প্রতিযোগীতায় ভাল করার চেষ্টা করা উচিত। শেষ পর্যন্ত সবাই প্রথম স্থান পাবে না বা প্রথম ১০ এর মধ্যে থাকতে পারবে না। কিন্তু অংশগ্রহনের মধ্য দিয়ে অনেককিছু শেখা হবে যেটা পরবর্তীতে অবশ্যই কাজে লাগবে। তবে কেউ যদি ইচ্ছা করে তবে জীবনের যে কোনো পর্য়ায়েই যে কোনো কিছু শিখতে পারে। তাই প্রতিযোগিতায় অংশগ্রহনের সুযোগ না থাকলেও পূর্বের বিভিন্ন প্রতিযোগীতার প্রশ্নগুলো দেখা যেতে পারে। এই প্রশ্নগুলো বিভিন্ন বাউন্ডারি কেস নিয়ে চিন্তা করতে শেখায়। যেটা পরবর্তীতে উন্নতমানের সফটওয়ার তৈরির জন্য কাজে লাগবে। আমি ব্যক্তিগতভাবে http://ace.delos.com/usacogate সাইটের প্রশ্নগুলো সমাধান করতাম। এখানে ১০০ এর মত প্রশ্ন আছে যেগুলো জানা একজন কম্পিউটার প্রকৌশলীর জন্য জরুরী।

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

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

আবার শুধু বুকডন চর্চা করলে যেমন ব্যায়ামের লক্ষ্য পূরন হয় না তেমনি শুধুমাত্র একটা বিষয় শিখলে ভাল সফটওয়্যার ইঞ্জিনিয়ার হওয়া যায় না। কয়েকটা বিভিন্ন ধরনের ভাষা জানা জরুরী। প্রত্যেকটা ভাষার কিছু নিজস্ব বৈশিষ্ট্য আছে। বৈশিষ্ট্যগুলো জানা থাকা দরকার। আমি Python, C, C# বা Java, Javascript, Erlang, Assembly অন্তত এই কয়েকটা ল্যাংগুয়েজ শেখার পরামর্শ দেব। প্রত্যেকটা ভাষারই কিছু অনন্য বৈশিষ্ট্য আছে। এবং কেউ যদি শুরু করতে চান তাহলে প্রথমে পাইথন দিয়েই শুরু করুন। তারপর বাকিগুলো শেখা যেতে পারে। ভাষা শেখার জন্য ৫০০-১০০০ ঘন্টা ব্যায় করা হলে এরপর ডাটা স্ট্রাকচার এবং অ্যালগরিদমের দিকে সময় দেয়া দরকার। যদিও ১০০০ ঘন্টা চর্চা করলে কিছু ডাটা স্ট্রাকচার এবং অ্যালগরিদম শেখা হয়ে যাবে।

এরপর দরকার কাঠামো তৈরি শেখা। সেজন্য ডিজাইন প‌্যাটার্ন (http://en.wikipedia.org/wiki/Design_Patterns) শিখতে হবে। এটাও মূলতঃ অনেকদিন ধরে চর্চার মাধ্যমেই আয়ত্ব করতে হয়।

এরপর নেটওয়ার্কিং, প্যারালাল প্রসেসিং এবং সিকিউরিটি সম্পর্কে বিস্তারিত জানতে হবে।

এছাড়া আর যে বিষয়গুলো লাগে সেগুলো হল বিভিন্ন ধরনের ডাটাবেজ সম্পর্কে ধারনা (SQL, NoSQL), বিভিন্ন ফ্রেমওয়ার্ক (ASP .NET, Angular JS ইত্যাদি) সম্পর্কে ধারনা, ক্লাউড কম্পিউটিং, সোর্স কোড কন্ট্রোল (Team Foundation Server, Git), Continuous Integration এবং বিভিন্ন ধরনের সফটওয়্যার ডেভলপমেন্ট মেথড (যেমন agile) ইত্যাদি। এগুলো সম্পর্কে প্রাথমিক ধারনা থাকলে কাজ করতে করতে শিখে ফেলা যায়।

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

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

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

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

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

সুবিন : এবারে অন্য প্রসঙ্গে যাওয়া যাক। আপনি তো বাংলাদেশে একটি উদ্যোগের (iFeri.com) সাথে জড়িত? সেটি নিয়ে যদি একটু বিস্তারিত বলতেন।
মনিরুজ্জামান : iFeri.com আমরা তিন বন্ধু (আমি, শামস, নাসির) মিলে শুরু করেছি ২০১১ সনে। এটা একটা অনলাইন শপিং উদ্যোগ। ঢাকায় কোনকিছু কিনতে কোথাও যেতে হলে যত সময় রাস্তায় আটকে থাকতে হয় সেটা খুবই অসুবিধাজনক। কেউ যদি বাসায় জিনিসটা ডেলিভারি দিয়ে যায় তাহলে জীবনের অনেক মূল্যবান সময় বাঁচে । এটাই শুরু করার আগে আমাদের “আমরা কি সুবিধা দিতে পারি” এই প্রশ্নের উত্তর ছিল। এটা আসলে একটা ব্যবসা উদ্যোগ। সফটওয়ার উদ্যোগ নয়। একজন সফটওয়ার ইঞ্জিনিয়ার হিসাবে কোন একটা কোম্পানিতে কাজ করলে, সেটা যত বড়বা ছোট কোম্পানিই হোক, সেটা নিজের দাবি করা যায় না। আর পুরোপুরি স্বাধীনতাও পাওয়া যায় না কখনও।

Wolfram এর তধ্য অনুযায়ী ঈদের মাসে ১৫ লক্ষ হিট হয়েছে আমাদের সাইটে। ১ লক্ষ এর বেশি মানুষ এসেছে। কম খরচে এইরকম লোড সাপোর্ট দেয়ার জন্য আমরা বেশকিছু প্রযুক্তি ব্যবহার করেছি। যেটা নিয়ে iFeri.com এ লেখার ইচ্ছা আছে ভবিষ্যতে।

এরকম ১২টি সাক্ষাৎকার নিয়ে প্রকাশিত হয়েছে “প্রোগ্রামিং ক্যারিয়ার গাইডলাইন : এক ডজন প্রোগ্রামারের কথা”। বইটি পাওয়া যাচ্ছে নীলক্ষেতের হক লাইব্রেরি ও রকমারি ডট কম-এ। বিস্তারিত জানতে ওপরের ছবিতে ক্লিক করুন।

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