SL3 Framework

Problem Solving Guides

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


Use White Board

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


Unit Programming

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


Error is My Only Friend

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


Be Cool When It Comes to OJ

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


Forward Step By Step

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



এই সেকশনটা প্রতিনিয়ত আপডেট হতে থাকবে। প্রোগ্রামিং এবং প্রব্লেম সল্ভিং বিষয়ক গাইডলাইন আমরা এখানে প্রোভাইড করতে থাকবো.

Edit this page on GitHub