প্রোগ্রামিঙের জগতে এসিএম প্রোগ্রামিঙ খুবই জনপ্রিয়। বাংলাদেশ থেকে অনেক তুখোড় প্রোগ্রামার আন্তর্জাতিক প্রোগ্রামিং প্রতিযোগিতায় অংশগ্রহণ করে। আমার প্রশ্ন হল,
১.ভাল প্রোগ্রামার হতে হলে কি এসিএম প্রোগ্রামিঙেও ভাল হতে হবে?
২.গণিতে দক্ষ হওয়ার প্রয়োজনীয়তা কতটুকু? যদি থাকে তাহলে গণিতের কোন কোন ক্ষেত্রে দক্ষতা অর্জন করতে হবে? ৩.ভাল সফটওয়্যার ডেভেলপার হতে হলে কি এসিএম প্রোগ্রামিঙে ভাল দখল থাকতে হবে?
৪. যারা বিভিন্ন সফটওয়্যার কোম্পানিতে কাজ করেন তারা কি এসিএম প্রোগ্রামিঙেও ভাল দখল রাখেন?
৫.জাভা প্রোগ্রামিঙের ক্ষেত্র কোথায় কোথায় আছে?
প্রশ্নগুলোর উত্তর জানা জরুরি। কারণ এর উপর নির্ভর করবে আমার ভবিষ্যত ক্যারিয়ার।
তার প্রথম উত্তরটি লিখেছেন হাসিব,
“জাভা নিয়ে একটা আলোচনা আছে এখানে। পড়ে দেখতে পারেন। (সিরিয়াসলি পড়ে দেখুন, কিছু সত্য কথা আছে ওখানে।) জাভা, সি++/#, পাইথন এগুলো বেসিক রিকয়ারমেন্ট। জাভা, সি++/# এ যারা ভালো কাজ জানে তাদের কাজের ক্ষেত্র অনেক বড়। সাথে যদি ইলেক্ট্রনিক্সের ব্যাকগ্রাউন্ড থাকে তাহলে আরো ভালো। গণিত জানতে হবে। আপনি যদি ভাবেন গণিত শেখা লাগে কাগজে থিওরেম প্রুফ করতে তাহলে ভুল জানেন। গণিতের চর্চা জটিল সমস্যা সমাধানের জন্য ভালো কাজে লাগে। আর খুব মৌলিক লেভেলে কাজ করতে গেলে গণিতে রীতিমতো দক্ষতা থাকতে হয়। আইসিএম বা এই জাতীয় প্রোগ্রামিং কনটেস্ট কাউকে হাতিঘোড়া বানায় না। আমি আমার কর্মক্ষেত্রে সবচেয়ে ভালো যেসব প্রোগ্রামারের সাথে পরিচিত হয়েছি তাদের কেউই এধরনের প্রতিযোগিতায় যায়নি। তার মানে আমি বলছি না এই প্রতিযোগিতা অর্থহীন। এই জাতীয় প্রতিযোগিতার জন্য যেই প্রস্তুতিটা লাগে সেটা খুব জরুরী। কোর্সওয়ার্কের বাইরে এটা খুব জরুরী একটা চর্চার অভিজ্ঞতা তৈরী করে যেটা পরবর্তীতে কাজে লাগে। পরিশ্রম, চর্চা এগুলো দক্ষতা তৈরী করে এই বিষয়ে কোন সন্দেহ নেই(..)”
আরও উত্তর দিয়েছেন লিখেছেন অরণ্যচারী,
“এসিএম না করলে ভালো প্রোগ্রামার হওয়া যাবে না এই ধারনাটি আমি অনেকেরই মধ্যেই খেয়াল করেছি যা সম্পূর্ণ ভুল। এটি একটি প্রোগ্রামিং কনটেস্ট মাত্র, এখানে অংশগ্রহন না করলে যে মহাভারত অশুদ্ধ হয়ে যাবে তা কিন্তু নয়।
প্রোগ্রামিং চর্চার জন্য এধরনের প্রতিযোগীতার প্রয়োজন আছে বৈকি তবে তা যে একেবারে বাধ্যতামূলকভাবে করতেই হবে সেটাও কিন্তু নয়। আমি হাসিব ভাইয়ের সাথে একজায়গায় একমত যে, দেশের অনেক নামকরা সফটওয়্যার ডেভেলপার আছেন যারা এসিএমে অংশগ্রহন করেন নাই, কিন্তু উনারা বেশ ভালোই কাজ করছেন।তবে আপনি যদি অংশগ্রহন করতে চান তাহলে অবশ্যই অংশগ্রহন করতে পারেন। এর আগে অনলাইনে বিভিন্ন প্রোগ্রামিং সাইটে আপনি প্রয়োজনীয় প্র্যাকটিসের কাজটি করতে পারেন . এসব সাইটে বিভিন্ন সমস্যা দেওয়া থাকে যেগুলো সমাধানের মাধ্যমে আপনি আপনার স্কিল টেস্ট করতে পারবেন। আর প্রোগ্রামিংয়ে ভালো করতে হলে গণিত, এলগরিদম ইত্যাদিতে বেশ ভালো দখল থাকাটা দরকার। এগুলো আপনাকে অনেক সাহায্য করবে।
এছাড়া লিখেছেন tanjir,
“১.ভাল প্রোগ্রামার হতে হলে কি এসিএম প্রোগ্রামিঙেও ভাল হতে হবে?
এ সি এম প্রোগ্রামিং বলতে কিছু নেই- যা আছে এলগরিদম বেইসড প্রোগ্রামিং কন্টেসট। ভালো এনালিটিক্যাল হতে পারলে যে কোনো এলগরিদম প্রোগ্রামিং কন্টেস্টে ভালো করতে পারবেন।
একজন ভালো প্রোগ্রামার মাত্রই এলগরিদমে ভালো প্রোগ্রামার- কিন্তু শুধু এলগরিদমে ভালো প্রোগ্রামার একজন ভালো প্রোগ্রামার না। ভালো প্রোগ্রামার হওয়ার জন্য আরো অনেক টেকনোলজী বিষয়ক গ্যান থাকা লাগবে।
২.গণিতে দক্ষ হওয়ার প্রয়োজনীয়তা কতটুকু? যদি থাকে তাহলে গণিতের কোন কোন ক্ষেত্রে দক্ষতা অর্জন করতে হবে?
>> কম্পিউট > কম্পিউটার । আর কম্পিউটার প্রোগ্রাম করতে হলে গণিতে দক্ষতা কাম্য। কিন্তু না থাকলেও কাজ চালিয়ে যাওয়ার মতো প্রোগ্রামার হওয়া যায়।
৩.ভাল সফটওয়্যার ডেভেলপার হতে হলে কি এসিএম প্রোগ্রামিঙে ভাল দখল থাকতে হবে?
>> ১ নং প্রশ্নের উত্তর দ্রষ্টব্য। ভালো সফটওয়ার ডেভেলোপার হওয়ার জন্য আরো অনেক কিছুর দরকার আছে। এ বিষয়ে অনেক আর্টিকেল পাবেন।
৪. যারা বিভিন্ন সফটওয়্যার কোম্পানিতে কাজ করেন তারা কি এসিএম প্রোগ্রামিঙেও ভাল দখল রাখেন?
>> না। অনেকে ওপেন সোর্স প্রজেক্টে কন্ট্রিবিউট করে বা নিজের প্রজেক্ট চালায়। বরং ওপেন সোর্স প্রজেক্টে ইনভলভ হলে আরো উন্নতি করা যায়।
৫.জাভা প্রোগ্রামিঙের ক্ষেত্র কোথায় কোথায় আছে?
>> জাভা অন্য যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজের মতই একটা। এটা দিয়ে সবই করা যায়। তাই সব ক্ষেত্রেই জাভার ব্যবহার আছে/সম্ভব।”
এরপর লিখেছেন স্বপ্নচারী,
“তুখোড় প্রোগ্রামার আর সফটওয়্যার ডেভেলপার – দুটো আসলে ভিন্ন জিনিস। তুখোড় প্রোগ্রামাররা মূলত রিসার্চার। তারা মূলত গণিতবিদ। পিউর ম্যাথ বা স্ট্রিং থিওরি যেমন বর্তমানে অর্থহীন মনে হয়। ঠিক তেমনি রিয়েল ওয়ার্ল্ডে কনটেস্ট প্রোগ্রামারদেরও অর্থহীন বলে মনে হয়। এরা মানুষের ব্যবহার উপযোগী জমকালো সফটওয়্যার তৈরী করতে পারে না। কিন্তু এরা জমকালো সফটওয়্যার বানানোর ভিত্তি তৈরী করে দেয়।
গণিত বই আমরা কিন্তু শুধু পড়ে গেলেই তত্ত্ব সম্পর্কে সবকিছু জানতে পারি। তাহলে কেন আমরা অনুশীলনের অঙ্ক করার চেষ্টা করি? কারণ, এতে থিওরিগুলোর চর্চা হয়। এগুলো শক্ত-পোক্তভাবে মাথায় জায়গা করে নেয়। যেকোন পরীক্ষাই তাই। এগুলো এক ধরণের চ্যালেঞ্জ যে যা শেখা হলো তা কতটুকু কাজে লাগাতে পারি সেটা দেখা। কনটেস্ট প্রোগ্রামিং-ও তাই। বইয়ে শেখা এলগোরিদম-গুলো কত সহজে একটা সমস্যার মধ্যে আমি ধরতে পারি, সেটারই একটা প্রতিযোগিতা। এটা যারা করে তারা আনন্দের জন্য করে, পুরষ্কার পাওয়ার জন্য নয়। বিতর্ক প্রতিযোগিতায় অংশগ্রহণ করা, কবিতা আবৃত্তি-র প্রতিযোগিতায় যাওয়া – এগুলো সবই মনের আনন্দে করা হয়। এটাও তেমনি একটা বিষয়।
ভাল প্রোগ্রামার হতে হলে এসিএম কনটেস্টে যেতে হবে এমন কোন কথা নেই। তবে গেলেও ক্ষতিবৃদ্ধি হবে না, বরং লাভ-ও হতে পারে।”
শেষে লিখেছেন জাহিদ সুমন,
“লিনাস টোরভাল্ডসের এক সাক্ষাৎকারে একবার পড়েছিলাম- একজন জিজ্ঞাসা করছেন – আপনার কোন ভাল নিজস্ব ওয়েবসাইট নেই কেন? উত্তরে তিনি এইচটিএমএল তেমন জানেন না বলে নিজের অপারগতা প্রকাশ করেছিলেন। অথচ এ ব্যক্তিটিই কিন্তু বিশ্বের সেরা একটি ওএস এর জন্মদাতা -যার নাম লিনাক্স। তাই ভাল প্রোগ্রামার হতে হলে আপনি যে ফিল্ডে কাজ করবেন সেটি সম্পর্কে ভাল ধারনা থাকতে হবে। এটি বাস্তব জীবনে অন্য যেকোন কাজের মতই ধ্রুবসত্য একটি ব্যাপার। তাই কোন প্রোগ্রামিং প্রতিযোগিতায় নিজেকে প্রমান করাই সব কিছু নয়। এটি হয়তো একটি ভিত্তি গড়ে দিতে পারে, আপনার জন্য একটি ভাল প্রচার হতে পারে। ক্লাসে যে ছেলেটি সবসময় প্রথম হয়ে থাকে সে যে বাস্তবজীবনে ভাল করবে তার কি কোন নিশ্চয়তা আছে? আইনস্টাইনের প্রাথমিক স্কুলের মার্কশীটই তার প্রমান। বেশীরভাগ সাবজেক্টে গোল্লা পেয়েছিলেন!!
তাই কোন একটি নির্দিষ্ট লক্ষ্য নিয়ে এগিয়ে যাওয়াটাই গুরুত্বপূর্ন। চলার মাঝে হতোদ্যম হয়ে পড়লে বা ট্রাক ছেড়ে দিলে কোন লাভ হয় না।”
এই পুরো পোষ্টটিই সংগ্রহ করা হলো এখান থেকে