সিনট্যাক্স টু কম্পিটিটিভ প্রোগ্রামিং জার্নি

কম্পিউটার সায়েন্সের শিক্ষার্থীদের এক দুটো সেমিস্টার যাওয়ার পর খুবই কমন একটি প্রশ্ন হলো, আমি সি ল্যাঙ্গুয়েজ পারি অথবা আমি পাইথন পারি - এখন কি করবো, ভাইয়া?

by Rabiul Awal on May 1, 2016

কম্পিউটার সায়েন্সের শিক্ষার্থীদের এক দুটো সেমিস্টার যাওয়ার পর খুবই কমন একটি প্রশ্ন হলো, আমি সি ল্যাঙ্গুয়েজ পারি অথবা আমি পাইথন পারি – এখন কি করবো, ভাইয়া? এই কথাটি শুনে সিনিয়র ভাইটি একটু মৃদু হেসে উত্তর দেন, ১০ বছরেও তো একটা ল্যাঙ্গুয়েজ পুরো শিখতে পারবা না এখনি সব পারো! আসলে তুমি যেটা পারো সেটা হলো ব্যাসিক সিনট্যাক্স। কিভাবে ইনপুট আউটপুট নিয়ে কাজ করতে হয়, ডাটা টাইপ, ভেরিয়েবল, অপারেটর, কন্ডিশনাল স্টেটমেন্ট – if else, switch, কন্ট্রোল স্টেটমেন্ট – for loop, while loop এসব বেসিক কিছু ব্যাপার শিখে ফেলাটা খুব কঠিন কিছু না। তামিম শাহরিয়রের সুবিনের বই আর টন টন অনলাইন টিউটরিয়ালের ভিড়ে ক্লাস সিক্স অথবা সেভেনের ছেলেপেলেও এখন এসব পারে।

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

সিনট্যাক্স শিখে ফেলা আর সে সিনট্যাক্স ব্যবহার করে লজিক ইমপ্লিমেন্ট করে প্রোগ্রাম লেখা সম্পূর্ণ আলাদা দুটো বিষয়। এই জায়গাটায় গিয়েই আমাদের অধিকাংশ শিক্ষার্থী থেমে যায়। প্রোগ্রামিং বা কম্পিউটার সায়েন্সের ফিলোসপি হলো প্রবলেম সলভিং, নতুন নতুন আইডিয়াকে (সমস্যাকে) কম্পিউটারের মাধ্যমে সল্যুশন দেওয়া। প্রবলেম সলভ করার জন্য, ইমপ্লিমেন্ট করার জন্য চাই লজিক, চাই থিঙ্কিং । এসব কিছুতে নিজেকে দক্ষ করার জন্য তোমাকে প্রথমে ছোট ছোট সমস্যার সমাধান করতে হবে। Hello World প্রিন্ট করা, দুটো সংখ্যার যোগ করা, স্টার প্রিন্ট করে ত্রিভুজ বানানো, পিরামিড বানানো, একটা স্ট্রিংকে(নামকে) উল্টো করে প্রিন্ট করা, স্কুল কলেজে শেখা গণিত জ্যামিতির ফর্মুলাগুলোকে নিয়ে প্রোগ্রাম লেখা, লসাগু, গসাগু নির্ণয়হ নানান রকমের বিগিনার লেভেলের প্রোগ্রাম লেখা সম্ভব। গুগলে সার্চ দিলে টন টন বিগিনার প্রব্লেম পাওয়া যাবে। এসব প্রবলেম নিয়ে কাজ করা খুব একটা কঠিন কিছু না একদমই । নিয়মিত লেগে থাকলে অল্প কদিনের যে কেউ এধরনের প্রোগ্রাম লেখায় দক্ষতা অর্জন করতে পারে। আমি নিজেও জানি, প্রথম দিকে প্রোগ্রামিং ল্যাঙ্গুয়েজ শেখা বা প্রোগ্রাম লেখা খুবই মজার কাজ না। এই শৈশবের কথাই চিন্তা কর – স্বরবর্ণ, ব্যঞ্জনবর্ণ শেখা কি খুব মজার কাজ ছিল? আমাদের আম্মুরা অনেক ধরে বেধে এসব না শেখালে এখন অসাধারণ সব লেখক কবি সাহিতিকের, সমরেশ, হূমায়ুন, সুনীল, রবীন্দ্রনাথ, জীবনান্দের চমকপ্রদ ও রোমাঞ্চকর সৃষ্টিগুলো কি আমরা পড়তে পারতাম? ব্লগ লিখতে পারতাম কি? মনের ভাব প্রকাশে এতো সুন্দর সুন্দর সব ফেসবুক স্ট্যাটাস কি দিতে পারতাম? প্রোগ্রামিংয়েও একই কথা। প্রথম কদিন কষ্ট করে নাক চেপে সিনট্যাক্স গিলে ফেললে আর নিয়মিত প্রোগ্রাম লেখা শুরু করলে একটা সময় পুরো ব্যাপারটা তোমার কাছে অসাধারণ লাগবে। অনেক বেশী রোমাঞ্চকর মনে হবে। নেশাগ্রস্তের মতো পিসির সামনে রাত-দিন বসে থাকতে ইচ্ছে হবে। তোমার মনে হবে, আচ্ছা এ ব্যাপারটা এমন করলে কেমন হয়, এই প্রোগ্রামটা এভাবে না লিখে ওভাবে লিখলে কেমন হবে, এরচে সহজ বা দ্রুত উপায়ে কোড লেখা সম্ভব কিনা, যতক্ষণ পর্যন্ত কোন সমস্যার সমাধান প্রোগ্রাম তুমি লিখতে পারছো না তোমার হাশপাশ লাগবে, নাওয়া খাওয়া বন্ধ হয়ে যাবে, ওয়াশরুমে গিয়েও তুমি শান্তি পাবা না, চিন্তাটা মাথার ভেতরে ঘুরঘুর করতে থাকবে। অধিকাংশ ক্ষেত্রে এটি প্রমাণিত যে প্রোগ্রামাররা তাদের বেশীরভাগ সমস্যার সমাধান পেয়েছে ওয়াশরুমে কমোডের উপর বসে। এই পরিস্থিতি খুবই বিপদজ্জনক, তুমি ওয়াশরুমে বসে ইউরেক ইউরেকা বলে চিৎকার দেয়া শুরু করতে পারো। বাসায় বিতিকিচ্ছিরি কিছু একটা শুরু হয়ে যেতে পারে। সমধান পয়ায়ার পর জোরে ইয়েস চিৎকার প্রথম প্রথম শোনে কেউ কেউ তোমাকে আধপাগল ও ভাবতে পারে। সে ভাবুক। তবে এইটুকু মেনে নাও, এসব কোন রুপকথার কেচ্ছা নয়। এসব সত্যি, নির্জলা সত্যি।

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

Competitive programming হচ্ছে একটা মেধাভিত্তিক প্রতিযোগিতা। এখানে বিভিন্ন ধরনের সমস্যা দেয়া থাকে। এবং এসব সমস্যার সমধান করতে হয় Programming Language (C, C++, JAVA..) ব্যাবহার করে। এতে একজন programmer এর programming, algorithm, data structure, mathematical skill পরীক্ষা করা হয়। সবচেয়ে বড় কথা হল এখানে মুখস্ত করতে হয় না। প্রোগ্রামিং সমস্যাগুলো বিভিন্ন site (UVA, Lightoj, Codeforces,SPOJ) ইত্যাদিতে থাকে।

মূলত কম্পিউটারে প্রোগ্রাম লিখে সমস্যা সমাধানের জন্য যে প্রতিযোগিতাগুলো হয়ে থাকে সেগুলোই কম্পিটিটিভ প্রোগ্রামিং। আমরা এতক্ষণ ধরে সমস্যা সমাধান নিয়েই আলাপ করছিলাম। এইখানে এরকম একটা কম্পিটিশনের কথা বলা হচ্ছে যেখানে সমস্যা সমাধান করতে হয়। ব্যাপারটা ইন্টারেস্টিং না ? এই কম্পিটিটিভ প্রোগ্রামিংকে আমরা কন্টেস্ট বলে থাকি। কম্পিউটার সায়েন্সের সবার কাছে বর্তমান এটি খুবই প্ররিচিত একটি শব্দ। কন্টেস্টগুলোতে একটা নির্দিস্ট সময় বেধে দেয়া হয় এবং সে সময়ের মাঝে নির্দিষ্ট সংখ্যক সমস্যার সমাধান লেখার চেষ্টা করেন প্রোগ্রামাররা। কন্টেস্ট হয় দু ধরণেরঃ ১. অনলাইন, ২. অনসাইট। অনলাইন কন্টেস্ট নাম শুনেই বুঝার কথা এই প্রতিযোগিতাটি অনলাইনে হয়। Topcoder, CodeForces, Hackerrank, CodeChef এসব অনলাইন জাজিং প্ল্যাটফর্মে নিয়মিত অনলাইন কন্টেস্ট অনুষ্ঠিত হয়। সারা বিশ্বের যে কেউ যেকোন স্থান থেকে এসব প্রতিযোগিতায় অংশগ্রহণ করতে পারেন। অনসাইট কন্টেস্ট মানে একই জায়গায় সব প্রোগ্রামাররা একই নেটওয়ার্কে বসে কন্টেস্ট করেন। অনসাইটের সময়সীমা অধিকাংশ ক্ষেত্রে ০৫ ঘণ্টা নির্ধারণ করা থাকে। ০৮ টা থেকে ১১ টা সমস্যার সমাধান চাওয়া হয় সাধারণত। অনলাইন কন্টেস্ট এর সময় site অনুযায়ী ভিন্ন ভিন্ন হয়। অনসাইট কন্টেস্টে সাধারনত Team (তিন জনের) নিয়ে জয়েন করতে হয় এবং একজন Coach থাকেন। Contest এর সবচেয়ে মজার জিনিস হচ্ছে ranklist. কোন team এর অবস্থা কি বা কোন সমস্যা সমাধান হয়েছে তা rankilst দেখে বুঝা যায়। এই র‍্যাঙ্কলিস্টের জন্য প্রোগ্রামরাররা দিনরাতকে এক করে প্র্যাক্টিস করেন, প্রবলেম সলভ করেন। বাংলাদেশে খুবই জনপ্রিয় একটি কন্টেস্ট হলো – ACM ICPC Contest. এই কন্টেস্ট থেকে যে দু/তিন দল ভাল করেন তারা ওয়ার্ল্ড ফাইনালে যাওয়ার সুযোগ পান। বাংলাদেশে Dhaka রিজিওনের আন্ডারে এই কন্টেস্ট আয়োজন করা হয়। এই কন্টেস্টটি সাধারণত নভেম্বরের দিকে অনুষ্ঠিত হয়ে থাকে। এছাড়াও বিশ্ববিদ্যালয়গুলো উদ্যোগে নিয়মিত ন্যাশনাল, রিজিওনাল কন্টেস্ট অনুষ্ঠিত হয়। স্কুল কলেজের ছেলেমেয়েদের জন্য আছে IOI, NHSPC।

কন্টেস্ট প্রোগ্রামিং বা প্রবলেম সলভিংয়ের আসল মজা হলো verdict এ। মানে তুমি যখন কোন একটি সমস্যার সমাধান লেখো তখন সেটি কি সঠিক নাকি ভুল, ভুল হলে কি ধরণের ভুল এসব verdict দেখে বুঝা যায়। বেশ কয়েক রকমের verdict আসতে পারে। Accepted, Wrong Answer, Time Limit Acceded, Memory Limit Exceeded সহ আরো আছে। Accepted মানে তোমার সমাধান পুরোপুরি ঠিক আছে। উত্তর ভুল থাকলে verdict দেখাবে Wrong Answer। নির্দিষ্ট সময়ের মাঝে তোমার সমাধানটি যদি আউটপুট জেনারেট করতে না পারে তাহলে দেখাবে Time Limit Exceeded। তোমার প্রোগ্রাম যদি অতিরিক্ত স্পেস খায় তাহলে দেখাবে Memory Limit Exceeded।

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

এই দীর্ঘ লেখাটি পড়ার পর আমি ধরে নিচ্ছি তুমি কন্টেস্ট প্রোগ্রামিং বা প্রবলেম সলভিং যাত্রা শুরু করতে ইচ্ছুক। প্রশ্ন হলো কিভাবে ? এ নিয়ে গুগলে হাজার হাজার লেখা আছে। তবুও আমি দুয়েকটা লাইন লিখছি। সিনট্যাক্স তো জানা আছে। এবার কাজ হলো প্রবলেম সলভিংয়ে নেমে যাওয়া। প্রথম দিকে আমি যেসব ব্যাসিক কিছু সমস্যার কথা বলেছিলাম। প্রথমে সেধনের প্রবলেম সলভ করার চেষ্টা করো। এই লিঙ্কে এরকম বেশ কিছু প্রবলেম পাবে। এখানকার সবগুলো প্রোগ্রাম জানার চেষ্টা করো । এই কাজ শেষ হল । এবার তুমি অনলাইন জাজের সাথে পরিচিত হওয়ার সময় এসেছে। অনলাইন জাজ হলো – এমন একটা সাইট যেখানে অনেকগুলা প্রবলেম দেয়া থাকে – নানা ক্যাটাগরির আর সেগুলো সমাধান করে সল্যুশন পাঠালে অনলাইনেই verdict পাওয়া যায়। মূলত অনলাইন জাজগুলো একেকটি সমস্যা ভাণ্ডার যেখানে চাইলেই তুমি প্র্যাকটিস করতে পারো। বেশ কিছু জনপ্রিয় অনলাইন জাজ হলো – LighOJ, Uva, UriOj, Codeforces, Topcoder, Hackerrank … এছাড়াও আরো অনেক আছে। তোমার যে জাজ ভালো লাগে সেখান থাকে প্রবলেম সল্ভিং শুরু ক্রতে পারো। Uva তে বেশ কিছু ইজি প্রবলেম আছে, সেগুলো সলভ করতে পারো কিংবা আমাদের বাংলাদেশের, জান ভাইয়ের LightOJ এর বিগিনার ক্যাটাগরির প্রবলেম দিয়েও শুরু করতে পারো। এভাবে কয়েকটা জাজ মিলিয়ে ১০০ প্রবলেম সলভ করা উচিত । প্রবলেম সলভ করার সময়ে basic data structure, basic কিছু algorithm, number theory এসব নিয়ে পড়াশুনা চালিয়ে যেতে থাকো। এক ফাঁকে সি++ এর STL টা দখে নিলে ভালো হয়, খুবই কাজের জিনিস। শখানেক প্রবলেম সলভ করা হয়ে গেলে এবার ডাটা স্ট্রাকচার আর এলগরদিম রিলেটেড প্রবলেম সলভ করা শুরু করতে পার। রেফারেন্স বুক হিসেবে CLRS এর Introduction to Algorithm দেখা যাতে পারে। এছাড়াও শাফায়েত ভাইয়ের ব্লগ, জুবায়ের ভাইয়ের ব্লগ, Topcoder টিউটরিয়াল, ইউটিউবে tushar roy, mycodecschool সহ বাংলা ও ইংরেজিতে অসংখ্য টিউটরিয়াল পাবে যেগুলো পড়লে তুমি নিজেই বুঝতে পারবে কিভাবে কি করতে হবে। গুগল করো, Quora তে যাও, ব্লগ পড়ো, ইউটিউব টিউটরিয়াল দেখো, শেখো এবং a2oj তে গিয়ে টপিক বেইজড প্রবলেম সলভ করা শুরু করতে থাকো। সব কিছুর উপর একটাই কথা, নিয়মিত প্র্যাকটিস চালিয়ে যাও। কন্টেস্ট প্রোগ্রামারদের মাঝে মাঝেই ফ্রাস্টেশন পিরিওড আসে, এসব একটু ধৈর্য্য ধরে সামাল দিতে পারলেই তুমিই হচ্ছো আগামী দিনের ওয়ার্ল্ড ফাইনালিস্ট। কনগ্রেটস ব্রো/সিস!

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

ফুটনোট

০১. শাহরিয়ার ভাইয়ের ফেসবুক নোট থেকে অনুপ্রাণিত হয়ে এই লেখাটি লেখার চেষ্টা করেছি। থ্যাঙ্কস টু শাহরিয়ার ভাই।
০২. এই দীর্ঘ লেখাটি ধৈর্য্য সহকারে পড়ার জন্য ধন্যবাদ। এই দীর্ঘ লেখাটি যেহেতু তুমি পড়ে শেষ করতে পেরেছো, তোমাকে দিয়ে Competitive Programming হবে। যাও, এগিয়ে যাও।
০৩. যাই কোড লিখবা, সেগুলো GitHub এ আপ করে রাখো। এই জিনিসটা খুব কাজের। আর যখনই হতাশ লাগবে Quora তে ঢু মেরে আসবা। দেখবে এনার্জি পাচ্ছো বেশ। তোমার জন্য শুভকামনা।