প্রবলেম সলভিং এবং কম্পিউটার প্রোগ্রামিংয়ের একটি কমপ্লিট গাইডলাইন দিব আমি এই ভিডিওতে। বিশেষ করে তোমরা যারা প্রোগ্রামিংয়ের জগতে আসতে যাচ্ছ, কম্পিউটার সায়েন্সে ভর্তি হওয়ার কথা ভাবছো, অথবা সিএসই-এর ফার্স্ট বা সেকেন্ড সেমিস্টারে পড়াশোনা করছো—এমনকি অন্য ব্যাকগ্রাউন্ড থেকেও হতে পারো। যেখান থেকেই হও না কেন, তুমি যদি প্রবলেম সলভিং একদম ফাটিয়ে ফেলতে চাও, কমপিটিটিভ প্রোগ্রামিংয়ে পার্টিসিপেট করতে চাও এবং বিভিন্ন নামকরা প্রবলেম সলভিং বা কনটেস্ট প্ল্যাটফর্মগুলোতে, যেমন: কোডফোর্সেস, কোডশেফ, টপকোডার অথবা অন্য যেকোনো একটা প্ল্যাটফর্মে একটা প্রেস্টিজিয়াস র্যাঙ্ক পর্যন্ত চলে যেতে চাও, তাহলে তোমার জন্য একটি বিস্তারিত গাইডলাইন দিব আমি এই ভিডিওতে।
আর বিস্তারিত গাইডলাইন দেওয়ার আগে তুমি যদি একদম একটা হ্যান্ডসাম, অর্গানাইজড, প্লাস কোর্সে ধরে ধরে মেন্টরশিপ, গাইডলাইন ও সাপোর্ট পেয়ে একদম জিরো থেকে একজন প্রবলেম সলভার হয়ে ভালো একটা লেভেলে চলে যেতে চাও, এমনকি তুমি কোডশেফের টু স্টার বা থ্রি স্টার রেটিং, এমনকি কোডফোর্সেসের পিউপিল বা স্পেশালিস্ট পর্যন্ত চলে যেতে চাও, তাহলে সেপ্টেম্বরের ১০ থেকে ২৪ তারিখের মধ্যে অবশ্যই চলে যাবা ফাইটন ডট আইওতে আর এনরোল করে ফেলবা ‘সিএসই ফান্ডামেন্টালস উইথ পাইথন’-এ। তো এবার আসা যাক, তোমরা যারা এই সিএসই ফিল্ডের প্রবলেম সলভিং জগতে বা কমপিটিটিভ প্রোগ্রামিং জগতে নিজেদেরকে এস্টাবলিশ করতে চাও, তোমাদের প্রোগ্রামিং শুরু করার আগেও যে জিনিসটা লাগবে সেটা হচ্ছে বেসিক কিছু ম্যাথের নলেজ। বিশেষ করে, ধরো হচ্ছে নাম্বার থিওরি সম্পর্কে তোমাকে জানতে হবে, প্রাইম নাম্বার কিভাবে, ফ্যাক্টরিয়াল কিভাবে বের করে, তোমার কম্বিনেটোরিকস যেটা আছে পারমুটেশন, কম্বিনেশন—সেই জিনিস বুঝতে হবে।
বেসিক কিছু জিওমেট্রি বুঝতে হবে, যেখানে তুমি হয়তো অ্যাঙ্গেল বুঝবা, এরিয়া বুঝবা, এসবের সরল রেখা, বৃত্ত এগুলো সম্পর্কে তোমার কিছু ধারণা থাকবে। একটু তুমি হয়তো এই যে লিনিয়ার ইকোয়েশন সম্পর্কে তোমার কিছুটা ধারণা থাকবে। ক্যালকুলাস সম্পর্কে কিছু ধারণা থাকবে। ম্যাট্রিক্স সম্পর্কে তোমার কিছুটা ধারণা থাকবে এবং বেসিক কিছু প্রোবাবিলিটি সম্পর্কে কিছু ধারণা তোমার থাকা লাগবে। বিশেষ করে, নাইন-টেন এর ম্যাথ অথবা ইন্টারমিডিয়েট কিছু ম্যাথ সম্পর্কে তোমার যদি একটু ধারণা থাকে, তাহলে তুমি প্রবলেম সলভিংয়ের সেক্টরে নিজেকে একটা ভালো জায়গায় নিয়ে যেতে পারবা। একটু যদি ম্যাথ সম্পর্কে তোমার নলেজ না থাকে, তাহলে কিন্তু এই প্রবলেম সলভিং সেক্টরে সলভ করতে করতে কনটেস্ট করতে করতে আরো নিত্যনতুন জিনিস তোমার সামনে চলে আসবে। তখন সেই জিনিসগুলো তুমি সলভ করে ফেলবা। বাট হাতে সময় থাকলে আমি যেই কয়েকটা জিনিস বলছি, এইরকম বিষয়গুলো একটু আগে থেকে এক্সপ্লোর করে রাখো।
এরপরে তোমার যে জিনিসটা আসবে, সেটা হচ্ছে প্রোগ্রামিং ল্যাঙ্গুয়েজ। যারা প্রবলেম সলভিং করতে চায়, কনটেস্ট করতে চায়, কমপিটিটিভ প্রোগ্রামিংয়ে দক্ষ হতে চায়, তাদের জন্য বেস্ট রিকমেন্ডেড প্রোগ্রামিং ল্যাঙ্গুয়েজ হচ্ছে সি প্লাস প্লাস। তুমি চাইলে অন্য প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে মোটামুটি মানে প্রবলেম সলভিং করতে পারো, সেখানে পাইথন থাকতে পারে, জাভাস্ক্রিপ্ট থাকতে পারে, জাভা থাকতে পারে, অন্য কোনো প্রোগ্রামিং ল্যাঙ্গুয়েজ থাকতে পারে। বাট তুমি যদি লং টার্মের সিরিয়াস একজন প্রবলেম সলভার হতে চাও, তাহলে তোমার বাই ডিফল্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ হতে হবে সি প্লাস প্লাস। এবং এই সি প্লাস প্লাস শুরু করার আগে তুমি কিছুটা সি শিখতে পারো। বেসিক যে জিনিসগুলো আছে, ধরো ভেরিয়েবল, অ্যারে বা লুপ, ফাংশন, এই জিনিসগুলো সম্পর্কে কিছু ধারণা তুমি নিয়ে রাখতে পারো বেসিক সি দিয়ে। তারপরে তোমাকে চলে যেতে হবে সি প্লাস প্লাস-এ।
এবং সি প্লাস প্লাস-এর বিশেষ করে তুমি যে স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি, যেটাকে এসটিএল বলে, এটাকে মোটামুটি একটা ভালোভাবে আয়ত্ত করতে হবে। যেমন অনেকেই যখন এসটিএল করতেছে বা বেসিক প্রোগ্রামিং করতেছে, তখন তারা কনটেস্টে চলে যায়। আমি বলি তুমি প্রবলেম সলভিং করো, তুমি দরকার হলে অ্যাকাউন্ট খোলো কোডশেফের, কোডফোর্সেসের। মাঝেমধ্যে তুমি ওখান থেকে প্রবলেম সলভ করবা। ডেইলি একটা-দুইটা টপিক বেসড প্রবলেম তুমি সলভ করো। কিন্তু কনটেস্টে শুরুর দিকে চলে গেলে তোমার উপর মেন্টাল প্রেসারটা বেড়ে যাবে এবং অল্পতে ছেড়ে দেওয়ার চান্স সিগনিফিকেন্টলি বেড়ে যাবে। কারণ তুমি টপিক বুঝো না, প্রবলেম স্টেটমেন্ট বুঝতে পারবা না। সল্যুশন একটা, দুইটা, তিনটা একসেপ্ট হওয়ার পর আর দেখবে একসেপ্ট হচ্ছে না এবং অল্পতে ফ্রাস্ট্রেটেড হয়ে ছেড়ে দেওয়ার প্রোবাবিলিটি সিগনিফিকেন্টলি বেড়ে যাবে। এইজন্য আমি নম্বর টু স্টেপে বলি যে, তুমি আরো কিছু বেসিক ডেটা স্ট্রাকচার এক্সপ্লোর করো।
তুমি হয়তো স্ট্যাক শিখছো, কিউ শিখছো, প্রায়োরিটি কিউ শিখছো। তুমি হয়তো হ্যাশ টেবিল শিখছো। তুমি হয়তো ট্রি সম্পর্কে কিছুটা এক্সপ্লোর করো। বিভিন্ন ধরনের ট্রি আছে। মিনিমাম তুমি বাইনারি সার্চ ট্রিটা এক্সপ্লোর করো। ট্রাই তুমি এক্সপ্লোর করো। এমনকি গ্রাফ সম্পর্কে ধারণা রাখো। যে ডিরেক্টেড গ্রাফ, নন-ডিরেক্টেড গ্রাফ—এই জিনিসগুলো সম্পর্কে ধারণা নাও। এগুলোর বেশ কিছু ট্র্যাভার্সিং অ্যালগরিদম আছে, সেগুলো সম্পর্কে তুমি একটা ধারণা নাও। কোনটা কখন ব্যবহার করতে হয় সেটা সম্পর্কে তুমি ধারণা নাও। তাহলে তোমার আন্ডারস্ট্যান্ডিংয়ের প্রতি একটা ফোকাস থাকবে এবং ওই যে কনটেস্টের মেন্টাল প্রেসারটা তোমার উপর তখনই আসবে না। এর পাশাপাশি আমি বলব যে, তুমি কিছু অ্যালগরিদম এক্সপ্লোর করো। যেমন তুমি সার্চ এক্সপ্লোর করে নাও। বাইনারি সার্চ সম্পর্কে জানো। তুমি এই যে ব্রেডথ ফার্স্ট, ডেপথ ফার্স্ট ট্র্যাভার্সাল এক্সপ্লোর করো। এছাড়াও তুমি হয়তো গ্রাফ কিভাবে ট্র্যাভার্স করবা, সেটা সম্পর্কে, ট্রি কিভাবে এফিসিয়েন্টভাবে হচ্ছে ট্র্যাভার্স করবা, হিপ জিনিসটা কিভাবে কাজ করে, এই জিনিসগুলো সম্পর্কে তুমি যখন এক্সপ্লোর করবা, তাহলে তোমার এই অ্যালগোরিদমিক নলেজটা তৈরি হবে।
এবং এই টপিক বেসড প্রবলেম তুমি বিভিন্ন প্ল্যাটফর্মে করো, নিজে নিজে করো, প্র্যাকটিস করো। কিন্তু কনটেস্টে যাওয়ার আগে যখন তুমি এইরকম নলেজগুলো তোমার কাছে চলে আসবে এবং প্রত্যেকটা টপিকের মিনিমাম ১০টা করে তুমি প্র্যাকটিস প্রবলেম সলভ করবা টপিক বেসড, তখন তোমার নিজের ভিতরে একটা কনফিডেন্স চলে আসবে। এখানে একটু সময় বেশি লাগলেও, কিন্তু পরবর্তীতে পারফর্ম করাটা তোমার জন্য অনেক বেশি ইজিয়ার হয়ে যাবে। নম্বর থ্রি স্টেপটা হচ্ছে, এই নম্বর থ্রি স্টেপে তুমি কী করবা? তুমি কিন্তু অলরেডি ডেটা স্ট্রাকচার, অ্যালগরিদম সম্পর্কে জানো। স্ট্যান্ডার্ড লাইব্রেরি সম্পর্কে তোমার ধারণা আছে। বেসিক ফান্ডামেন্টাল প্রোগ্রামিং তো জানোই। তুমি কিছু ম্যাথও জানো। এখন তুমি যদি কোনো একটা কমপিটিটিভ প্রোগ্রামিংয়ের প্ল্যাটফর্মে যাও, তুমি কিন্তু সুবিধা করতে পারবা। তার মধ্যে একটা কমফোর্টেবল জায়গা হচ্ছে কোডশেফ। এখানে খুব টপিক বেসড প্রবলেমের পাশাপাশি তুমি কিন্তু কনটেস্টে পার্টিসিপেট করতে পারবা। এবং এইখানে কনটেস্ট করে তুমি যদি হচ্ছে এক-দুই মাস ট্রাই করো, তাহলে কিন্তু তোমার পক্ষে এভরিডে যদি তিনটা করে প্রবলেম সলভ করো, তুমি কিন্তু টু স্টার র্যাঙ্ক পর্যন্ত চলে যেতে পারো।
আর টু স্টার র্যাঙ্ক পর্যন্ত তুমি যদি চলে যেতে পারো, তোমার নিজের ভিতরে না একটা কনফিডেন্স আসবে। তারপরে তোমার স্ট্যাটেজি হতে পারে যে, আমি টু স্টার থেকে থ্রি স্টার যাব অথবা আমি কোডফোর্সেসের দিকে ফোকাস করতে পারি। তো কোডফোর্সেসের দিকে তুমি যখন ফোকাস করতে যাবা, সেইটা হবে তোমার স্টেপ নম্বর ফোর। স্টেপ নম্বর ফোর হচ্ছে, টার্গেট পিউপিল। টার্গেট পিউপিল মানে হচ্ছে, তুমি এই কোডফোর্সেসের প্ল্যাটফর্মে গিয়ে তুমি ১২০০ থেকে ১৪০০ এই রেটিংস পর্যন্ত তুমি যাওয়ার চেষ্টা করবা। এর আগে তুমি যখন ডিএসএ এক্সপ্লোর করতেছিলে, এসটিএল এক্সপ্লোর করতেছিলে, তখন তুমি মোস্ট প্রোবাবলি ৮০০ থেকে ১১০০ এই টাইপের প্রবলেম সলভ করার চেষ্টা করছো। মেইনলি ডিভ-৩, ডিভ-৪ টাইপের প্রবলেমগুলোকে সলভ করার চেষ্টা করছো। এখন আস্তে আস্তে তুমি হয়তো ডিভ-৩, ডিভ-৪ করবা, সেই রিলেটেড যে কনটেস্টগুলো আছে সেগুলোতে পার্টিসিপেট করার চেষ্টা করবা এবং মাঝেমধ্যে তুমি ডিভ-২-এর একটা প্রবলেম সলভ করার চেষ্টা করবা। ম্যাক্সিমাম তুমি হয়তো পারবা না, কিন্তু তোমাকে তো চেষ্টা করতে হবে।
কারণ এই কমপিটিটিভ প্রোগ্রামিংয়ের খেলাটা হচ্ছে, তুমি যে জায়গাটাতে আছো তার চাইতে উপরে ওঠার চেষ্টা করবা। উঠতে গেলে প্রচুর বাধা পাবা, অনেক কষ্ট হবে, কিছুই বুঝতে পারতাছো না, তারপরও তোমাকে ট্রাই করতে হবে। এবং তুমি যখন কনটেস্টগুলোতে কিছু না কিছু পার্টিসিপেট করা শুরু করবা, আস্তে আস্তে তোমার নিজের ভিতরে কিছু স্ট্র্যাটেজি আসতে থাকবে যে, আচ্ছা ফার্স্ট প্রবলেমটা একটু ইজিয়ার হয়, এটা আমি আগে সলভ করার চেষ্টা করি। আচ্ছা, প্রথমেই সরাসরি কোডিংয়ে যাওয়ার আগে হয়তো পাঁচ মিনিট সময় নেই, এগুলোকে স্কিম থ্রু করার চেষ্টা করি। তোমার নিজস্ব একটা স্ট্র্যাটেজি তৈরি হবে। এমনকি তুমি কোড করতে করতে, কনটেস্ট করতে করতে, তোমার নিজস্ব কিছু কোড স্নিপেট তৈরি হয়ে যেতে পারে, যেগুলা তুমি হয়তো গিটহাবে কোনো একটা জায়গায় রেখে দিছো, যাতে তোমার সেম কাজটা বারবার, বারবার করা না লাগে। আবার তোমার রং আনসার হলে কিভাবে তোমাকে চেক করতে হবে অথবা সাবমিট করার আগেই তোমার নিজস্ব একটা চেকিং তৈরি হয়ে যেতে পারে যে, আচ্ছা আমি এজ কেস চেক করব, নাম্বার যদি হয়, তাহলে এই টাইপের বাউন্ডারি কেস আসতে পারে, সেটাকে আমি কিভাবে ডিল করব।
তো এই টাইপের তোমার নিজস্ব কিছু একটা পার্সোনালিটি তৈরি হয়ে যাবে একজন কমপিটিটিভ প্রোগ্রামার হিসেবে। এবং সেই জিনিসগুলো আস্তে আস্তে তোমার ইভল্ভ হবে। তোমার নিজস্ব একটা নেটওয়ার্ক তৈরি হয়ে যাবে। যে এখানে তুমি এই কমপিটিটিভ প্রোগ্রামিং, প্রবলেম সলভিং রিলেটেড কাজ করবা এবং প্রত্যেকটা কনটেস্ট শেষে তুমি হয়তো দুইটা, তিনটা কঠিন প্রবলেম সলভ করতে পারবা না, সেটা অবসলি আপসলভিংয়ে যাবে। আর আপসলভিংয়ে যাওয়ার আগে নিজে চেষ্টা করবা যে, এক ঘণ্টা সময় নিয়ে একটু হিল নেওয়ার চেষ্টা করবা কোনো একটা জায়গা থেকে। হতে পারে চ্যাটজিপিটি থেকে তুমি হেল্প নিতে পারো। কিন্তু ডেফিনেটলি কনটেস্ট চলাকালীন সময় তুমি চিটার হওয়ার কোনো চিন্তা মাথায় নিয়ে আসবা না। অর্থাৎ, কনটেস্ট চলাকালীন সময় তুমি যেকোনো প্রকারের এআই থেকে ১০০% দূরে থাকবা। তার পরবর্তীতে কোনো একটা প্রবলেমে এক ঘণ্টা, দুই ঘণ্টা বা মন চাইলে এক-দুই দিন ট্রাই করার পরে গিয়ে তুমি সল্যুশনের জন্য যাবা। আগেভাগে তুমি যদি চেয়ে এইসব হিল দেওয়ার জন্য যাও, তাহলে তুমি কিন্তু আসলে একজন ভালো কমপিটিটিভ প্রোগ্রামার হয়ে উঠতে পারবা না।
এইভাবে তুমি যদি হচ্ছে আরো এক-দুই মাস তুমি যদি চেষ্টা করতে থাকো, কোনো রেগুলার কনটেস্ট যদি মিস না দিয়ে থাকো, এভরি সিঙ্গেল ডেতে মিনিমাম তিন ঘণ্টা থেকে চার ঘণ্টা সময় দাও। দুইটা থেকে তিনটা প্রবলেম সলভ করার চেষ্টা করো। কোনোদিন হয়তো একটাও সলভ হবে না। কোনোদিন হয়তো তিনটেই সলভ হতে পারে। বাট তোমার কাজ হচ্ছে এভরি সিঙ্গেল ডেতে প্রবলেম সলভিং নিয়ে তোমাকে বসতে হবে। একটা মাইন্ডসেট তৈরি হতে হবে। একটা হ্যাবিট তৈরি হতে হবে এবং নিজের ভিতরে একটা ফ্লো চলে আসতে হবে। সেই ফ্লো চলে আসলে, তুমি কিন্তু পিউপিল হয়ে যাবা। এবং হতে গেলে তুমি দেখবা যে, মাঝেমধ্যে কেউ কেউ হয়তো খুব দ্রুত হয়ে গেছে। কারো একটু সময় লাগছে। এগুলা নিয়ে একদম তোমাকে ফ্রাস্ট্রেটেড হওয়া যাবে না এবং এই মাইন্ডসেটটা তুমি চালাইতে থাকবা। চালাইতে চালাইতে গেলে তোমার নেক্সট স্টেপ হবে, নম্বর ফাইভ স্টেপ হবে যে, টার্গেট স্পেশালিস্ট।
স্পেশালিস্ট যদি চলে যাও, তাহলে আমি বুঝতে পারি যে, আসলে যে প্রবলেম সলভিং, কমপিটিটিভ প্রোগ্রামিংয়ের একটা বেসিক লেভেল সে কিন্তু টাচ করে ফেলছে। আরো অনেকেই স্মার্ট লেভেলে যেতে পারে। আরো হয়তো গ্র্যান্ডমাস্টার, ইন্টারভিউ মাস্টার অনেক কিছুই হতে পারে, যদিও তাদের সংখ্যা ইন্টারন্যাশনালি কম থাকে। তারপরেও চেষ্টা করতে থাকা যায় আর কি। বাট মিনিমাম তুমি যদি চাও, পিউপিল পার হয়ে স্পেশালিস্ট হতে পারো। তাহলে তুমি মোটামুটি একটা রিজনেবল লেভেলে গেছো। আরো যদি এক্সপ্লোর করতে চাও, ডেফিনেটলি আরো ভালো। তো স্পেশালিস্ট হওয়ার জন্য তোমাকে ১৪০০ থেকে ১৬০০ এবং ডিভ-২ রিলেটেড প্রবলেমগুলোর দিকে বেশি ফোকাস করতে হবে। প্রবলেমগুলো ডেফিনেটলি একটু হার্ডার হবে। এগুলোর ব্যাপারে তোমার অ্যানালিটিক্যাল অ্যাবিলিটি তৈরি করতে হবে। তোমার অ্যাবস্ট্রাকশন পাওয়ারটাকে আস্তে আস্তে প্র্যাকটিস করতে হবে এবং একেকটা প্রবলেমের সাইজও তো কমপ্লেক্সিটি একটু বেশি হবে এবং সেগুলা রিলেটেড তোমার নিজস্ব অ্যাপ্রোচ আর স্টাইল যেয়ে তোমাকে আসতে হবে। আস্তে আস্তে তুমি কিন্তু প্রবলেমের প্যাটার্ন বোঝার চেষ্টা করবা। কী ধরনের ডেটা স্ট্রাকচার, অ্যালগরিদম কখন কোনটা ইউজ করতে হয়, সেটা সম্পর্কে জানবা। আগে অনেকগুলো জিনিস শিখে আসছিলা, তারপরেও তোমাকে একটা নতুন প্রবলেম সলভ করতে গিয়ে যে আরো নতুন নতুন জিনিস এক্সপ্লোর করতে হয়, কখনো ম্যাথ সম্পর্কে জানতে হয়, কখনো ডোমেইন নলেজ নিতে হয়, কখনো আবার নতুন একটা অ্যালগরিদম এক্সপ্লোর করতে হয়—এই টাইপের একটা মাইন্ডসেট তোমার ভিতরে যখন তৈরি হয়ে যাবে, তখন তুমি একটা সময় পর দেখবা যে হচ্ছে না, হচ্ছে না, হচ্ছে না, দুই-তিন মাস পরে বা কোনো একটা সময় পরে গিয়ে টুক করে তুমি স্পেশালিস্ট হয়ে গেছো।
এই যে স্পেশালিস্ট যখন হচ্ছিলা অথবা পিউপিল যখন ছিলা, তখন তুমি যে ক্যাম্পাসেই থাকো না কেন, তুমি সিএসসি, নন-সিএসসি যেই ব্যাকগ্রাউন্ডেরই হও না কেন, সেখানে অফলাইন কনটেস্ট হবে। সে অফলাইন কনটেস্টগুলোতেও তুমি অবশ্যই পার্টিসিপেট করবা। সব কনটেস্টে পার্টিসিপেট করা হচ্ছে তোমার ফরজ কাজ। এবং তার চাইতেও ফরজ কাজ হচ্ছে আপসলভিং করা। তুমি সেলিব্রেশন করতে পারো, না করতে পারো, সেটা বড় বিষয় না। তুমি ওই যতক্ষণ পর্যন্ত কনটেস্টের ফুল সময় তুমি চিন্তা করবা, সেখানে কোনোভাবেই তুমি আগেভাগে উঠে যাবা না। পারো, না পারো, ডাজন্ট ম্যাটার। একটাও যদি সলভ করতে না পারো, তাও হচ্ছে ফুল ডিউরেশন তুমি বসে থাকবা। আবার তোমার ম্যারাথন যে কনটেস্টগুলো আছে, সেগুলো তুমি তোমার মতো করে ম্যানেজ করো। বাট শর্ট ডিউরেশন যে কনটেস্টগুলো আছে, সেগুলো তুমি ১০০% টাইমটা এফোর্ট দিবা। এবং ওইদিন পরে অথবা পরের দিন যখনই আপসলভিং ক্লাস হয়, সেখানে তুমি অবশ্যই পার্টিসিপেট করবা।
তুমি চিন্তা করবা যে, এই প্রবলেম সলভিং হচ্ছে একটা লাইফস্টাইল। কমপিটিটিভ প্রোগ্রামিং একটা লাইফস্টাইল। এইটা তোমাকে লং টার্মে ভালো প্রোগ্রামার হওয়ার জন্য, নিজের ব্রেইনের একটা ফিজিন, জিনের ভিতরে একটা সাইকেলের ভিতরে তুমি যদি গ্যাপ দিয়ে দাও, তাহলে কিন্তু তোমার মাসল লস হয়ে যাবে। তুমি কিন্তু পিছনে পড়ে যাবা অথবা বাতিল হয়ে যেতে পারো। তুমি পারো, না পারো, প্রোগ্রেস লেখো না পারো অথবা তোমার ওই যে গ্রাফ যদি তুমি দেখো আর কী, যে আমার রেটিংসের গ্রাফ ওঠা-নামা করতেছে, ঠুস করে নেমে গেছে—সেটা শুধু তোমার না। তুমি দুনিয়ার এমন কোনো একজন গ্র্যান্ডমাস্টার প্রোফাইল পাবা না, যে যার প্রোফাইলে সে কন্টিনিউয়াসলি উপরে গেছে আর কি। যত হিউম্যান বিয়িং আছে, দেখবা যে উঠছে আবার একই জায়গার মধ্যে অনেকদিন ধরে কিন্তু সে কনটেস্ট দিয়েই যাচ্ছে, দিয়েই যাচ্ছে, উঠতেছে, উঠতেছে না, তারপর লাফ দিয়ে আবার দুই ধাপ চলে গেছে আর কি। এবং তোমার ক্ষেত্রেও সেই জিনিসটা হবে।
সো অফলাইন এবং অনলাইন কনটেস্ট যারা হচ্ছে মোটামুটি দুই-তিন বছরের উপরে তারা প্রবলেম সলভিং সিরিয়াসলি করে বা তিন-চার বছর করে, তারা প্রবলেম সলভিংয়ের উপর বেসড করে তারা ভালো চাকরি পায় দেশে, দেশের বাইরের প্রতিষ্ঠানেও তারা চাকরি পেয়ে যেতে পারে। পার্সোনালি যেহেতু কম হতে পারে, কিন্তু ভালো ভালো পাঙ্খা চাকরিগুলো তারা পেয়ে যায়। কোনো কারণে তুমি যদি স্পেশালিস্ট বা স্পেশাল না যেতেও পারো, তাহলে কিন্তু এই উসিলায় তুমি ডেটা স্ট্রাকচার, অ্যালগরিদম, এই যে টাইম কমপ্লেক্সিটি এবং এই অপ্টিমাইজ করা যে জিনিসগুলো তুমি শিখছো, কোনো একটা প্রবলেমের পিছনে লেগে থাকা—তোমার যে মাইন্ডসেটটা তৈরি হইছে, এইটা তোমাকে লং টার্মে বেস্ট প্রোগ্রামার বানাবেই বানাবে। আচ্ছা, এই লং টার্মের এই কমপিটিটিভ প্রবলেম সলভিংয়ের রোডম্যাপটাতে তুমি যদি নিজে নিজে যেতে পারো, ফ্যান্টাস্টিক। অনেক লম্বা একটা জার্নি। একা একা করাটা অনেকটা আপ, অনেকে অল্পতে ছেড়ে দেয়। আর তুমি যদি গাইডেন্সে ইনভলভ হও, তাহলে যখনই আটকে যাও ডেইলি তিন বেলা সাপোর্ট পাবা এবং কোনো এক সময় তুমি যদি মেন্টালি ডিটাচ থাকো, সেই মেন্টালি সাপোর্টটা পাবা। এছাড়া প্রত্যেকটা টপিক ধরে ধরে সময় শেখানো হবে। এমনকি তুমি বেসিক প্রোগ্রামিং, ডেটা স্ট্রাকচার ও অ্যালগরিদম শিখিয়েছ, তিন-চারশোর উপরে, পাঁচশোর কাছাকাছি প্রবলেম তোমার সলভ হয়ে যাবে টপিক বেসড। এরপরে তুমি কোডশেফ, কোডফোর্সেসে গেলে তো ইনশাআল্লাহ ফাটিয়ে ফেলতে পারবা। এবং এই কাজটা তুমি যদি গাইডেড জায়গা থেকে করতে চাও, তাহলে সেপ্টেম্বরের ১০ থেকে ২৪ তারিখের মধ্যে অবশ্যই চলে আসো সিএসই ফান্ডামেন্টালস উইথ পাইথনে। তাহলে দেখা হবে তোমাকে একজন কমপিটিটিভ প্রোগ্রামার হিসেবে এস্টাবলিশ করার মিশনে।


1 Comment
Pingback: কার্যকরী সময় ব্যবস্থাপনার জন্য ৪টি টাইম ম্যানেজমেন্ট প্রিন্সিপাল - 4 Effective Time Management Principles - NiceTrix