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

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

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

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

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

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

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

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

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

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

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

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

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

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

ইন্টারনেটে দরকারী সব তথ্য পাওয়া যায়। এই বিশাল তথ্যভাণ্ডারে প্রবেশের একটি বিশাল দরজা রয়েছে: গুগল (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 এ। এর জন্য মনে হয় ভালো বিশ্ব মানের কম্পিউটার বিজ্ঞান বিভাগের বিকল্প নেই। তিন – চার মাসের ট্রেনিং দিয়ে সেটা করা সম্ভব না। আমার মনে হয় বাংলাদেশের ছেলে মেয়েরা এমনিতেই তথ্যপ্রযুক্তি খাতে উত্সাহী , আমেরিকার মত না। ঠিক মত প্লাটফর্ম পেলে আমরা অনেক দূর যাব।