সিঙ্গাপুরে ক্যারিয়ার – ১ম পর্ব

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

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

এখন আসা যাক, সিঙ্গাপুরে কী কী বড় কোম্পানী আছে, যেখানে সফটওয়্যার প্রকৌশলীরা কাজ করতে পারে? প্রথমত, গুগল (Google), ফেসবুক (Facebook), টুইটার (Twitter) ও পেপালের (Paypal) ডেভেলাপমেন্ট সেন্টার। তারপরে আছে স্ট্রাইপ (Stripe), ইনডিড (Indeed.com), জেনডেস্ক (ZenDesk) ও অটোডেস্কের (AutoDesk) মতো প্রতিষ্ঠান। প্রতিষ্ঠিত স্টার্টআপগুলোর মধ্যে আছে গ্র্যাব (Grab), শপি (Shopee), গো-জ্যাক (GoJek), ট্রাভেলোকা (Traveloka) ইত্যাদি। এছাড়াও আরো অনেক ছোট-বড় কোম্পানী সেখানে রয়েছে, যারা হন্যে হয়ে প্রোগ্রামার খুঁজছে (মানে খুব ভালো মানের প্রোগ্রামার আর কী)।

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

সিঙ্গাপুরের ভালো প্রতিষ্ঠানগুলোতে চাকরি পেতে হলে জোর প্রস্তুতি নেওয়া দরকার। আমি এই ভিডিওতে একটি গাইডলাইন দেওয়ার চেষ্টা করেছি –

পরবর্ত পর্বে আলোচনা করব, কেউ যদি চাকরি পেয়ে যায়, তখন তার সিঙ্গাপুরে আসার আগে কী কী কাজ করতে হবে।

প্রোগ্রামিং নিয়ে এক ডজন কমন প্রশ্ন ও উত্তর

প্রোগ্রামিং নিয়ে শিক্ষার্থীরা যেসব প্রশ্ন বারবার করে, এরকম এক ডজন প্রশ্ন প্রশ্নোত্তর আকারে লিখে রাখলাম।

১) আমি কি প্রোগ্রামিং শিখতে পারব?
উত্তর – এটা আসলে আগে থেকে বলা কঠিন। তিন মাস প্রোগ্রামিং নিয়ে সময় দাও, প্রতিদিন গড়ে ৪-৫ ঘণ্টা। তিন মাস পরেও যদি এই জিনিস ভালো লাগে, তাহলে শিখতে পারবে।

২) কোন প্রোগ্রামিং ভাষা শিখব?
উত্তর – এটা নির্ভর করে তুমি কোন ক্লাসে পড়, স্কুল-কলেজ নাকি বিশ্ববিদ্যালয়ের শিক্ষার্থী। বিস্তারিত উত্তর লিখেছি এখানে – কোন প্রোগ্রামিং ভাষা দিয়ে শুরু করব?

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

৪) আমি কম্পিউটার সায়েন্স পড়ি না, অন্য বিষয়ে পড়ি। আমি কি সফটওয়্যার ডেভেলাপার হতে পারব?
উত্তর – এই পোস্টে আলোচনা করা হয়েছে।

৫) আমি প্রোগ্রামিং শেখা শুরু করতে চাই। একটু গাইডলাইন দেন।
উত্তর – “প্রোগ্রামিংয়ের আশ্চর্য জগত” বইতে একেবারে শুরু থেকে কী করতে হবে ধারণা দেওয়া হয়েছে। এছাড়া এই ভিডিওতে আলোচনা করেছি।

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

৭) আমি গুগল (কিংবা মাইক্রোসফট, ফেসবুক, অ্যামাজন)-এ সফটওয়্যার ইঞ্জিনিয়ার হিসেবে কাজ করতে চাই। আমি কিভাবে ইন্টারভিউয়ের জন্য প্রস্তুতি নিব?
উত্তর – এই ভিডিওতে বিস্তারিত আলোচনা করা হয়েছে।

৮) প্রোগ্রামিং চর্চা করার জন্য কোন অনলাইন জাজ ব্যবহার করব?
উত্তর – এই লেখায় উত্তর আছে – প্রোগ্রামিং চর্চার ১০টি অনলাইন জাজ

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

১০) কম্পিউটার সায়েন্স পড়লেই কি চাকরি পাওয়া যায়?
উত্তর – না, শুধু কম্পিউটার সায়েন্স পড়ে সার্টিফিকেট থাকলেই চাকরি পাওয়ার নিশ্চয়তা নেই। বরং প্রোগ্রামিং স্কিল ও সেই সাথে কম্পিউটার বিজ্ঞানের জ্ঞান গুরুত্বপূর্ণ।

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

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

কম্পিউটার বিজ্ঞান ও প্রোগ্রামিং নিয়ে প্রচলিত কিছু ভুল ধারণা

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

এই আর্টিকেলে আমি প্রোগ্রামিং ও কম্পিউটার বিজ্ঞান সংশ্লিষ্ট কিছু ভুল ধারণা উপস্থাপন ও ব্যাখ্যা করব।

ভুল ধারণা ১: প্রোগ্রামিং শিখতে চাইলে গণিতে খুব দক্ষ হতে হবে

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

ভুল ধারণা ২: বিজ্ঞান বা প্রকৌশল বিষয়ে না পড়লে প্রোগ্রামিং শেখা যায় না

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

ভুল ধারণা ৩: প্রোগ্রামিং ভাষা জানলেই মোটা অঙ্কের টাকা কামানো যায়

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

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

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

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

ভুল ধারণা ৪: কম্পিউটার বিজ্ঞান একটি জটিল বিষয়

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

ভুল ধারণা ৫: প্রোগ্রামিং শুধু ছেলেদের জন্য

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

ভুল ধারণা ৬: কম্পিউটার বিজ্ঞান পড়লেই গেম তৈরি করতে পারব

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

এক নজরে ধারণাগুলো:

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

ড. মাহমুদ শাহরিয়ার হোসেন (সহকারী অধ্যাপক, ইউনিভার্সিটি অব টেক্সাস এট এল পেসো)-এর মূল লেখাটি পাওয়া যাবে এখানে https://bit.ly/2ENReAp। লেখাটি অনুবাদ করেছেন মোশারফ হোসেন।

প্রোগ্রামিং আপনার জন্য নয়

যে ১০টি লক্ষণ থাকলে বুঝতে হবে প্রোগ্রামিং আপনার জন্য নয়

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

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

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

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

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

১) কৌতূহলের অভাব

আপনার যদি কম্পিউটার এবং টেকনোলজির প্রতি আগ্রহ না থাকে, আপনি কখনোই প্রোগ্রামার হিসেবে সফল হতে পারবেন না।

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

নিজেকে জিজ্ঞাসা করুন যে সত্যি প্রোগ্রামিং আপনাকে আকৃষ্ট করে কি না। যদি আপনার উত্তর হয় ‘না’, তবে অবশ্যই এমন কিছু খুঁজে বের করা উচিত যা আপনাকে আকৃষ্ট করে। যদি উত্তর হয় ‘হ্যাঁ’, তবে নতুন কিছু খুঁজে বের করুন যা আগে কখনো লক্ষ করেননি।

২) আত্ম-নিয়ন্ত্রণ ও দ্রুত সমাধান খুঁজে বের করার ক্ষমতা না থাকা

আপনি যদি নিজে নিজে প্রবলেম সলভ করার দক্ষতা তৈরি না করেন তো আপনি কখনো প্রোগ্রামার হিসেবে সফল হতে পারবেন না।

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

ইন্টারনেটে দরকারী সব তথ্য পাওয়া যায়। এই বিশাল তথ্যভাণ্ডারে প্রবেশের একটি বিশাল দরজা রয়েছে: গুগল (google.com)। আপনি যা চান তাই গুগলের সাহায্যে পেতে পারেন। এর জন্য শুধু জানতে হবে গুগল কীভাবে ব্যবহার করতে হয়।

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

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

৩) অধ্যবসায়ের অভাব

সমস্যায় পড়লে আপনি যদি সহজেই হাল ছেড়ে দেন, তাহলে প্রোগ্রামার হিসেবে আপনি কখনোই সফল হতে পারবেন না।

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

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

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

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

৪) সমস্যা সমাধানের পর সফলতার অনুভূতি না থাকা

কোনো সমস্যা সমাধানের পর যদি আপনার মাঝে উত্তেজনা ও সফলতার কোনো অনুভূতি না জন্মায় তো আপনি কখনো প্রোগ্রামার হিসেবে সফল হতে পারবেন না।

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

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

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

৫) শেখা ও বোঝার ক্ষেত্রে ধৈর্য না থাকা

শেখার ক্ষেত্রে যদি আপনার ধৈর্য না থাকে এবং সবকিছুই দ্রুত ও সহজে শিখতে চান তাহলে আপনি কখনো প্রোগ্রামিংয়ে সফল হবেন না।

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

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

৬) চিন্তা করতে গিয়ে ক্লান্ত/বিরক্ত হয়ে যাওয়া

আপনি যদি চিন্তা করায় অলস হন এবং মনোযোগ দিয়ে চিন্তা করাকে বিরক্তিকর জিনিস মনে করেন তো আপনি কখনো সফল প্রোগ্রামার হতে পারবেন না।

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

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

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

আপনার মস্তিষ্ক একটি পেশির মতো— যতই ব্যবহার করবেন, ততই এটি চিন্তা করতে পারবে। যতই বিভিন্ন বিষয় জানবেন, ততই মানসিক ধারণা বাড়বে, সমাধান খোঁজা তত সহজ হবে।

৭) নিজের জন্য চিন্তা করতে না পারা

আপনি যদি চান যে অন্যরা আপনার জন্য ভাবুক, এবং যদি নিজের অবস্থা ভালো করে দেখতে অনিচ্ছুক হন, আপনি কখনো সফল প্রোগ্রামার হবেন না।

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

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

নিজের অভিজ্ঞতা ও যৌক্তিক চিন্তন দক্ষতার দ্বারা নিজস্ব দৃষ্টিভঙ্গি তৈরি করুন। যুক্তিসংগত অনুমান করুন, একটি অবস্থান নিন এবং নতুন তথ্য এলে তা গ্রহণ করতে প্রস্তুত থাকুন।

৮) অনড়, সংকীর্ণ এবং/বা অগোছালো চিন্তা

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

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

প্রোগ্রামিং করতে গিয়ে এই দুই মেরু যখন একসাথে হয়, ফলাফল হয় তখন চরম, জোর করে জোড়া-তালি দিয়ে ঠিক করার মতো। যা দরকার তা হলো পুনরায় সমাধানে ফিরে যাওয়া, পুনরায় বিচার করা, প্রথমবার চেষ্টা করা পদ্ধতি বাতিল করা এবং পুনরায় সাজানো।

অন্য সম্ভাবনা দেখতে না পাওয়া বা সমালোচনা ঠিকভাবে গ্রহণ না করা উন্নতির অন্তরায়। অগোছালো হলে আপনার কাজ ধীরগতির হবে। কাজের সার্বিক মানও খারাপ হবে।

আপনাকে পেছনে ফিরে যেতে হবে। কীভাবে এগোচ্ছেন তা দেখতে হবে। কীভাবে আরো ভালো করতে পারেন? এমন কিছু কি করতে পারেন যাতে আপনার জীবন সহজ হয়? কিছু কি বাদ যাচ্ছে যা আপনাকে সাহায্য করতে পারতো?

৯) ভালো ও খারাপ উত্তরের পরিধি না জেনে ‘সঠিক’ উত্তর খোঁজা

আপনি যদি প্রোগ্রামিংকে সমাধানের ক্ষেত্র হিসেবে না বিবেচনা করে শুধু ‘সঠিক’ উত্তর খোঁজার লক্ষে ব্যবহার করেন, আপনি কখনো প্রোগ্রামার হিসেবে সফল হতে পারবেন না।

কোনো দক্ষতা বা প্রোগ্রামিং শেখার সময় অনেকে জানতে চায় যে তারা যা করেছে তা সঠিক কি না। উত্তর হচ্ছে, ”এটা নির্ভর করে”।

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

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

১০) খুঁটিনাটিতে মনোযোগ না দেওয়া

আপনি যদি ক্ষুদ্র ক্ষুদ্র বিষয়গুলোতে মনোযোগ না দেন তো সফল প্রোগ্রামার হতে পারবেন না।

কম্পিউটার সূক্ষ্ম যন্ত্র। কম্পিউটার প্রোগ্রাম করার সময় প্রয়োজনীয় কমান্ড এমনভাবে দিতে হয় যেন কম্পিউটার গ্রহণ পারে। নাহলে কম্পিউটার কাজ করবে না। এক্ষেত্রে মাঝামাঝি ধরনের কিছু নেই—হয় কাজ করবে, নয় করবে না।

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

খুঁটিনাটি সবই লক্ষ রাখতে হবে, আপনাকে সেটা মানতে হবে। যখন মানবেন, তখন আপনি আপনার কোড স্ক্যান করে সব ত্রুটি দূর করতে পারবেন। এমন টুল ব্যবহার করতে পারবেন যা দ্রুত ইস্যু বের করতে আপনাকে সাহায্য করবে।

বোনাস: ব্যবসায়ী-মনস্ক হওয়া

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

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

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

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

উপসংহার

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

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

অনুবাদ – মোশারফ হোসেন।

[Jonathan Bluks রচিত মূল লেখাটি পাওয়া যাবে এখানেhttps://bit.ly/2DdU6VF]

লোড টেস্টিং

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

[এই লেখাটি যারা ওয়েব প্রোগ্রামিংয়ের সঙ্গে পরিচিত, তাদের জন্য। যাদের ওয়েব সম্পর্কে একেবারেই ধারণা নেই, তারা দ্বিমিকের ওয়েব কনসেপ্টস্ নামক ফ্রি অনলাইন কোর্সটি করে ফেলতে পারে।]

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

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

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

এখন আমি আমার কম্পিউটারে কোনো একটা টুলস ব্যবহার করে লোড টেস্টিং করে ফেললাম। কিন্তু এখানে দুটি সমস্যা আছে:

  1. প্রতিটি কম্পিউটারেরই একসাথে ওয়েব রিকোয়েস্ট করার (বা ওয়েব সার্ভিসকে কল করার) একটি সীমাবদ্ধতা থাকে, একটি নির্দিষ্ট সংখ্যার বেশি রিকোয়েস্ট একসাথে পাঠানো যায় না।
  2. দ্বিতীয় সমস্যা হচ্ছে নেটওয়ার্কের গতির সীমাবদ্ধতা। ঢাকায় আমার বাসার কিংবা অফিসের ইন্টারনেট যথেষ্ট গতিসম্পন্ন নয়।

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

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

ওপরের কাজগুলো বেশ ঝামেলাসাপেক্ষ। তাই আজকাল অনেক সার্ভিস চালু হয়েছে যারা আমার হয়ে লোড টেস্ট করে দিবে। যেমন : loader.io (এরকম আরো আছে, গুগল সার্চ করলেই পাওয়া যাবে)। এসব সার্ভিস তাদের প্রয়োজনমতো কম্পিউটার ব্যবহার করবে, আমার কেবল সার্ভিসটি ব্যবহার করতে জানতে হবে।

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

কোন পথে যে চলি

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

confusion-311388_640

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

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

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

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

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

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

অনুপম শ্যাম : সাক্ষাৎকার (২)

অনুপম শ্যাম -এর ইন্টারভিউয়ের দ্বিতীয় (ও শেষ) অংশ।

১ম পর্ব পড়তে এখানে ক্লিক করতে হবে।

দ্বিতীয় পর্ব :

anupom

সুবিন : ডিজনীর মতো বিশ্বখ্যাত কোম্পানীতে কাজ করেছেন, সেখানের অভিজ্ঞতা কেমন? আর স্টার্টআপে কাজ করার অভিজ্ঞতা কেমন?
অনুপম : ডিজনী তে আমি গেমিং ডিভিশন এ কাজ করতাম। ডিজনী বড় কোম্পানি তাই সব কিছুই বড়, অনেক স্তর বিশিষ্ট প্রতিষ্ঠান । আমার ডিজনী তে সর্বশেষ প্রজেক্ট “Star Wars Commander” গেম এ একশ এর কাছাকাছি লোক কাজ করেছে। এভারনোটে মনে হয় প্রায় সব মিলিয়ে ৩৫০ জন কর্মী। আমি ডিজনীর সিইও কে কখনই সামনা সামনি দেখিনি। এভারনোটে আমি প্রায় প্রতিদিন ই সিইও কে দেখি, এমন কি মাঝে মাঝে সে আমাদের জন্য চা কফি ও বানায়।

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

সুবিন : আপনি তো বই লিখেছেন। বইটের নাম এবং বই লেখার অভিজ্ঞতা যদি পাঠকদের সাথে শেয়ার করতেন। ভবিষ্যতে আরো বই লেখার ইচ্ছা আছে?
অনুপম : বই এর নাম CakePHP Application Development, প্রকাশ হয় Packt Publication, UK থেকে ২০০৭ এ। বই লেখাটা যে এত কষ্টকর হবে তা জানলে হয়ত বই লেখা শুরু করতাম না। কিন্তু একবার যেহেতু বেল তলায় গেছি, ইচ্ছা আছে আরেকবার যাবার, তবে কম্পিউটার সম্পর্কিত বই নাও হতে পারে।

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

সুবিন : ছোটবেলায় কোন কোন স্কুল ও কলেজে পড়েছেন?
অনুপম : ব্লু বার্ড হাই স্কুল সিলেট (প্রাইমারি), সিলেট সরকারী পাইলট উচ্চ বিদ্যালয় (এস.এস.সি. পর্যন্ত) তারপর এম.সি. কলেজ সিলেট ।

সুবিন : ভার্সিটিতে লেখাপড়া কেমন লাগত?
অনুপম : ভার্সিটিতে প্রথম দুই/তিন সেমিস্টার এর পর লেখাপড়া খুব একটা করা হয় নি । তৃতীয় সেমিস্টার থেকে প্রোগ্রামিং কনটেস্ট করা শুরু করি, তারপর থেকে পড়ালেখা পুরোটাই নিম্নগামি। পড়ালেখার বেপারে আরেকটু সিরিয়াস হলে মনে হয় ভালো হত।

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

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

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

অনুপম : আমার মনে হয় আমাদের সহজ পথ না খুঁজে লং টার্ম প্ল্যান করতে হবে। আরো বেশি বেশি বিশ্ববিদ্যালয়ে কম্পিউটার বিজ্ঞান বিভাগ চালু করতে হবে। শুধু quantity বৃদ্ধি করে আসলে খুব একটা লাভ হবে না, আমাদের high quality resource তৈরী করতে হবে large scale এ। এর জন্য মনে হয় ভালো বিশ্ব মানের কম্পিউটার বিজ্ঞান বিভাগের বিকল্প নেই। তিন – চার মাসের ট্রেনিং দিয়ে সেটা করা সম্ভব না। আমার মনে হয় বাংলাদেশের ছেলে মেয়েরা এমনিতেই তথ্যপ্রযুক্তি খাতে উত্সাহী , আমেরিকার মত না। ঠিক মত প্লাটফর্ম পেলে আমরা অনেক দূর যাব।