পোস্টটি পড়া হয়েছে 9,084 বার
প্রোগ্রামিং এ ভাল করার উপায়

কিভাবে ভাল প্রোগ্রামার হওয়া যায়?

নীলক্ষেতে চক্কর মারলে দেখতে পাবে Teach Yourself Java in 7 Days টাইপের বেশ কিছু বই। লেখকরা আসলে তোমাকে আশ্বস্ত করার চেষ্টা করেন যে প্রোগ্রামিং খুব সহজ জিনিস। হুম, আসলেই সহজ যদি না তা সত্যিই প্রোগ্রামিং হয়। কোন একটা ফোরামে প্রশ্ন দেখেছিলাম “এক রাতের মধ্যে কিভাবে প্রোগ্রামার হওয়া যায়?” রসিক এক প্রোগ্রামার রিপ্লাই দিয়েছিলেন “তোমার ল্যাপটপ আর নেট কানেকশন সহ উত্তর মেরুতে চলে যাও। সেখানে ৬ মাস রাত থাকে। এক রাতেই শিখা যাবা!”

মানুষের সহজাত প্রকৃতিই হচ্ছে ‘অল্প সময়ে, কম কষ্টে, ঘরে বসে’ হাওয়া বাতাস খেতে খেতে সাফল্যের শীর্ষে চলে যাওয়ার ইচ্ছা। যে কোন বিষয়ের মত প্রোগ্রামিং এ ভাল করার জন্যেও প্রয়োজন কঠোর পরিশ্রম ও সঠিক অনুশীলন। প্রোগ্রামিং এ এক্সপার্ট হবার ব্যাপারে পিটার নরভিগ (Peter Norvig) Teach Yourself Programming in Ten Years নামের একটা আর্টিকেল লিখেছিলেন। আসলেই একজন এক্সপার্ট প্রোগ্রামার হিসেবে নিজেকে প্রতিষ্ঠিত করতে একটা দীর্ঘ পথ পারি দিতে হয়।

Lukáš Poláček তার একটা লেখায় প্রোগ্রামিং এ ভাল করার জন্য বিশেষ করে প্রোগ্রামিং কনটেস্ট এ ভাল করার জন্য ৭টা পয়েন্ট বিশিষ্ট ট্রেইনিং প্রোগ্রাম আর ৩টা পয়েন্টের সমন্বয়ে মোটিভেশন এর উপর আলোকপাত করেছেন। তার জবানিতে নিচে সেই লিখাটার ভাবানুবাদ তুলে ধরছি।

ট্রেইনিং প্রোগ্রাম


ট্রেইনিং ফিলোসফি

১৫ বছর বয়স পর্যন্ত আমি ওরিয়েন্টিয়ারিং (orienteering) এর সাথে জড়িত ছিলাম। এটা বনের মধ্যে ম্যাপ দেখে নির্দিষ্ট স্থানে সবার আগে পৌঁছানোর এক ধরণের প্রতিযোগিতা। আমি অনেক অনেক training করেছিলাম। বছরে ১৭০০ কিলোমিটার দৌঁড়েছিলাম পাহাড়ী এলাকায়। এরপর অবশ্য স্বাস্থ্যগত কিছু ঝামেলার কারণে এটা বাদ দিতে হয়েছিল। ওরিয়েন্টিয়ারিং বাদ দেয়ার পর আমার হাতে প্রচুর ফ্রি সময় আসলো। তখন এই সময়টাকে কাজে লাগালাম ম্যাথ আর প্রোগ্রামিং করার পিছনে। অ্যাথলেটদের ট্রেইনিং এর কিছু সিসটেম আমি কনটেস্ট প্রোগ্রামিং এর ট্রেইনিং এর উপর অ্যাপ্লাই করতাম।

আমার কাছে কিছু কিছু দিক দিয়ে প্রোগ্রামিং কনটেস্ট এর ট্রেইনিং আর ওরিয়েন্টেরিয়ারিং এর ট্রেইনিং প্রায় একই রকম মনে হত। এই যেমন, খেলোয়াড়দের ট্রেইনিংগুলো হয় various রকমের। যেখানে যেখানে তাদের দূর্বলতা পাওয়া যায় সেদিকেই ফোকাস করা হয়ে থাকে।

ধর, তুমি ফুটবল টিমের একজন স্ট্রাইকার। দৌঁড়ে ছুটে তুমি গোল করতে ভাল পারো। তুমি এটার উপরেই এক্সপার্ট। কিন্তু তুমি পেনাল্টি কিকের ব্যাপারে দূর্বল। কোচ কিন্তু তোমাকে নিয়মিত প্র্যাক্টিসের সাথে পেনাল্টি কিকের উপরও প্র্যাক্টিস করাবেন।

এই একই জিনিসটা ফলো করা উচিত কনটেস্ট প্রোগ্রামিং এর ট্রেইনিং সেশনগুলোতে। তুমি শুধু একটা সাইডের উপরই সলভ করে যাবে না। যদি তুমি জ্যামিতির প্রবলেমে দূর্বল হও কিন্তু ডিপিতে বেশ ভাল। তাহলে তুমি সারা কনটেস্ট লাইফে শুধু ডিপিই সলভ করে যাবে এমন হওয়া ঠিক হবে না। জ্যামিতির টুকটাক প্রবলেমও সলভ করা উচিত কনটেস্ট শেষ হবার পরে হলেও। অর্থাৎ বিভিন্ন টপিক সম্পর্কে তোমার জ্ঞানের পরিধিকে একটু একটু করে বাড়াতে হবে।

মোদ্দা কথা হচ্ছে, তোমার ট্রেইনিং ফিলোসফি হবে “The training must be varied and you should focus on your weaknesses”.

শিখতে হবে ডেটা স্ট্রাকচার ও অ্যালগরিদম

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

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

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

যে কোন টপিক কারো থেকে শেখার আগে নিজে নিজে কিছুটা ঘাটাঘাটি করলে শেখানো আর শেখা দুইটা কাজই দারুণ হয়। আরেকটা উদাহরণ দেই। তোমার অ্যালগরিদম ক্লাসে স্যার ডেটা স্ট্রাকচার আর টাইম কমপ্লেক্সিটির ধারণা দেয়া ছাড়াই তোমাকে একটা unweighted graph এর shortest path বের করার প্রোগ্রাম করতে দিল। তোমার হালকা পাতলা ধারণা থাকার কারণে কোন রকমে একটা প্রোগ্রাম করে দিলে। সেটা ততটা ইফিসিয়েন্ট হল না। পরের লেকচারে স্যার দেখালেন কিভাবে queue implementation করতে হয় আর টাইম কমপ্লেক্সিটি কিভাবে হিসাব করতে হয়। এরকম শেখানোর পদ্ধতিটা কিন্তু ‘আগে থিওরি, পরে প্র্যাক্টিক্যাল’ এই সিসটেমের চেয়ে বেশি কার্যকর।

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

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

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

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

প্রোগ্রামিং এর দক্ষতা বাড়াও

আগের পয়েন্টে বলা হয়েছে ‘প্রবলেম সলভিং’ এর ব্যাপারে। এখানে বলা হচ্ছে ‘প্রোগ্রামিং’ এর ব্যাপারে। দুইটা কিন্তু দুই জিনিস। তুমি যখন মনে মনে কোন একটা প্রবলেমের সমাধানের ব্যাপারে একটা সিদ্ধান্তে আসতে পারো সেটা হচ্ছে প্রবলেম সলভিং। আর তোমার মনে থাকা এই প্রসেস অনুযায়ী কোড করতে পারাটাই হচ্ছে প্রোগ্রামিং।

কনটেস্টের জন্য প্রবলেম সলভিং যেমন দরকার, প্রোগ্রামিংও দরকার। অর্থাৎ এমন হওয়া যাবে না যে, “কী কাজ করতে হবে সেটা বুঝতেছি কিন্তু কিভাবে কোড করতে হবে সেটা বুঝতেছি না!” এই আপদ এড়ানোর জন্য বেশি বেশি কোড করার বিকল্প নাই। প্রয়োজনে সহজ প্রবলেম সলভ করো। কিন্তু নিয়মিত কোডিং এর মধ্যে থাকা লাগবে।

খাতায় কোড কর আর ডিবাগ কর

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

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

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

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

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

কোডের কোয়ালিটি বাড়াও

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

কোডের ইফিসিয়েন্সি বাড়ানো যায় কিনা সেটা নিয়ে ঘাটাঘাটি করো। কিভাবে আরেকটু কম টাইম এ কাজ সারা যায় বা মেমরি কিভাবে আরেকটু বাঁচানো যায় এগুলো নিয়ে কাজ করো।

প্রোগ্রামিং একটা শিল্প। এর পরতে পরতে তাই থাকে সৌন্দর্য। কোডের সৌন্দর্য বা readability অনেক জরুরি একটা বিষয়।

শরীরের যত্ন নাও

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

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

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


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

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

তুমি যদি কনটেস্ট করতে আনন্দ পাও তাহলে করো। যদি আনন্দ না পাও তাহলে অন্য কোন প্রোডাক্টিভ কাজ কর। যদি প্রোগ্রামিং না করে দিন ভর গেমস খেলে বা ফেসবুকিং করে সময় পার করো তাহলে আরেক বার ভাবো নিজের সম্পর্কে। আরেকবার ভাব আজ থেকে ৫ বছর পরের কথা। যে কোন একটা সেক্টরে এক্সপার্ট হও। হোক তা প্রোগ্রামিং বা নেটওয়ার্কিং! যে কোন কিছু! পাশ করে বের হয়ে যেন সিনিয়র কাউকে বলতে না হয় “ভাই কিছুই তো পারি না! কী করব এখন?”

ব্যর্থতা

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

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

সেরেফ লেগে থাকো যে কাজই করো না কেনো, যদি তাতে আনন্দ পাও। সফলতা আসবেই!


পুনশ্চঃ লেখাটি How to get better? নামক আর্টিকেল থেকে ভাবানুবাদ করা হয়েছে। মূল আর্টিকেলের সাথে কিছু বিষয় সংযোজন ও বিযোজন করা হয়েছে। কোন কোন পরিমার্জনের প্রয়োজন অনুভব করলে নির্দ্বিধায় আমাকে জানাবেন। কষ্ট করে এত বড় লেখাটি পড়ার জন্য কৃতজ্ঞ। লেখক Lukáš Poláček এর মূল লেখাটি পড়তে পারবেন এখান থেকে

Comments

comments

11 thoughts on “কিভাবে ভাল প্রোগ্রামার হওয়া যায়?

  1. নিজের ভাষায় এভাবে কোনো কিছু বুঝার মজাই আলাদা!
    ধন্যবাদ, ভাইয়া।

Leave a Reply

Your email address will not be published. Required fields are marked *