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

So, বসে পড়ুন চেয়ার টেবিলে খাতা কলম নিয়ে।–

-First Of All-

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

প্রোগ্রামিং ও ঠিক সেইম একই রকম। আপনার যদি নতুন কোনো কিছু বানাতে বা কোনো সমস্যা সমাধান করতে ভালো তাহলে, Programming It’s For You. সোজা বাংলা ভাষায় প্রোগ্রামিং আপনার জন্য। তো এখানে Moral Of the Stories হচ্ছে, যদি আপনার জিনিস টা ভালো লাগে। আচ্ছা ওকে, এই হলো প্রোগ্রামিং-র মেইন Concept বা কোনো কিছু শিখার মেইন Concept ।

-নিচে কিছু গাইডলাইন দেওয়া হলো, একজন ভালো প্রোগ্রামার-র কি কি গুন থাকা দরকার।

-নতুন Innovative কিছু করার মন-মানসিকতা থাকাঃ

প্রোগ্রামিং এমন একটা সেক্টর, যেখানে আপানাকে দিন দিন আপডেট করতে হবে। প্রোগ্রামিং Kind Of ডাক্তারির মতই। একজন ডাক্তার কে যেমন দিন দিন আপডেট করতে হয় । ঠিক তেমনি একজন প্রোগ্রামার-কে দিন দিন নতুন Technology-র সাথে Introduce হতে হয়। তাই একজন প্রোগ্রামার কে অবশ্যই নতুন কিছু করার Idea থাকা জরুরী। যেকোনো নতুন Concept মাথায় আসলে তা সাথে সাথে কোড-এ Implement করা এটা অত্যন্ত জরুরী।

-প্রবলেম সলভিং এর ক্ষমতা

এই কাজটা করা বেশ কঠিন। প্রবলেম সলভিং এর স্কিল বাড়ানো বলতে আসলে ‘তোমার বুদ্ধিমত্তাকে আরো বাড়াও’ এমনটাই বুঝায়।

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

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

সেক্ষেত্রে একটাই মাত্র কাজ করার থাকে তা হচ্ছে সাবধানে টেবিলটাকে কেটে টুকরাগুলোকে জায়গা মত নিয়ে আবার জোড়া দেয়া। প্রবলেমগুলোকেও এভাবে ভেঙ্গে ভেঙ্গে সলভ করে এরপর জোড়া দেয়ার কাজ করতে হবে। প্রব্লেম সল্ভিং র কিছু জনপ্রিয় ওয়েবসাইট হচ্ছে যেমন : Hackerrank, CodeWars, Edabit ইত্যাদি। এখানে প্রোগ্রামিং-র একদম বেসিক থেকে অ্যাডভান্সড পর্যন্ত প্রব্লেম থাকে। যা আপনি নিজের স্কিলের সাথে সাথে প্রোগ্রামিং –র লেভেল বাড়াতে পারেন।

-কোড প্রাকটিস করা আর ডিবাগ করা-

প্রোগ্রামিং-এ যারা নতুন তারা হয়তো ডিবাগ সম্পর্কে তেমন Idea নাও থাকতে পারে তো তাদের জন্য হলো। আমরা যখন কোড গুলো কোথাও Implement করি তখন Output ভুল ও আসতে পারে । তাই এই ভুলকে সংশোধন করার জন্য আমরা প্রোগ্রামিং-র ভাষায় এটাকে কোড ডিবাগ করা বলে। আরো সোজা ভাষায় বলতে গেলে ভুল কোডকে সংশোধন করাকে ডিবাগ বলে।

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

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

নিয়মিত কনটেস্টে অংশগ্রহণ

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

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

মোটিভেশন (প্রেরণা)

প্রোগ্রামিং কনটেস্ট তোমার প্রোগ্রামিং এর স্কিলকে ব্যাপক ভাবে বাড়িয়ে দিবে। তুমি চিন্তা করতে পারবা না যে একেকটা কনটেস্টের পর তোমার স্কিলটা কতখানি পুশ হয়! হ্যাঁ তোমাকে অনেকেই বলবে যে রিয়েল লাইফে সফটওয়্যার ডেভেলপমেন্টের জন্য এসব প্রবলেম সলভিং এর দরকার হয় না। আসলেই তাই! তুমি খুব বেশি ভাগ্যবান হলে হয়ত তোমার কোম্পানীর কোন প্রোজেক্টে ৫-১০% কাজে তোমার শেখা ডেটা স্ট্রাকচার-অ্যালগরিদম ইমপ্লিমেন্ট করতে পারবা। বা তোমার কনটেস্টের স্কিল কাজে লাগাতে পারবা।

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

কনটেস্ট তুমি তখনই করতে পারবা যখন এটাকে একটা খেলা হিসেবে নিবা। ছোট বেলায় বিকালে ক্রিকেট খেলতে বের হয়ে খেলার সময় বা খেলার পর যেই আনন্দ পেয়েছিলে, সেটা যদি এখানেও পাও তাহলে কনটেস্ট তোমার জন্যেই! কিন্তু তা না হয়ে যদি চিন্তা কর “অমুক ভাই কনটেস্ট করে এখন অমুক জায়গায় বড় জব করে। আমিও কনটেস্ট করবো” তাহলে মনে হয় না খুব বেশি দূর আগানো সম্ভব। কনটেস্ট ছাড়াও অনেক ভাল প্রোগ্রামার আছেন। অনেক বড় বড় প্রোগ্রামার আছেন যারা কনটেস্ট এর ব্যাপারে আগ্রহী না। যদি তোমার আগ্রহ না থাকে তাহলে জোর করার দরকার নাই। তো আজকের ব্লগটি এতটুকুই। Best Wishes For Future Programmers.

So, আজকের ব্লগটি কেমন হয়েছে তা কমেন্ট-এ বলতে ভুলবেন না। আর যদি ব্লগ টি ভালো লাগে তাহলে আপনার বন্দুদের সাথে শেয়ার করতে ভুলবেন না।

 

ধন্যবাদ সবাইকে,

Mohammad Jubair.

IT Officer,

Codex Devware.