Saturday, March 5, 2016

প্রোগ্রামিং ইন্টারভিউ - রেজওয়ানুল ইসলাম মারুফ


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

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



   প্রশ্ন ঃ প্রোগ্রামিং কনটেস্ট এর ব্যাপারে প্রথম কিভাবে জানলেন ?

   উত্তরঃ  প্রথম জানি ২০০৮ এর শেষ এ তবে এত বিস্তারিত কিছু না । ২০০৮ এ রিজিওনাল হইছিল NSU তে , আপু ঐসময় NSU তে জব করতেন । উনার কাছেই প্রথম শুনি কনটেস্ট এর ব্যাপারে । চ্যাম্পিয়ন হইছিল চীনের একটা দল , ফুদানের । ওরা নাকি লাস্ট এ তাদের একটা সল্ভ রেখে দিছিল সাবমিট না দিয়ে , র‍্যাঙ্ক লিস্ট ফ্রিজ হবার পর সাবমিট দেয় । ব্যাপারগুলা  শুনে অনেক এক্সসাইটেট হয়েছিলাম । তখন তো কলেজে ছিলাম জানতাম না সিএসই পড়ব কি পড়ব না । ২০১০ এ আহসানউল্লাহতে ভর্তি হবার পর Uva judge নিয়ে জানি মৌরিনের কাছ থেকে । একটা প্রবলেম সল্ভ করতে দিছিল তখন মোবাইলে ওকে সল্যুশন বলি , পরে জানি ঐটা নাকি হয়নাই । তখনও তো জানতাম না কিভাবে online judge এ সল্ভ করতে হয় । ১/১ এ আর তেমন কিছু করা হয়নাই । ১/২ তে থাকতে ভার্সিটিতে সজিব ভাইয়ারা ইন্টার ভার্সিটি কনটেস্ট করে কিন্ত জন্ডিস থাকায় ওইটাও করতে পারি নাই । পরে ভার্সিটিতে অনেক ফ্রেন্ড ছিল রাইয়ান , তাঞ্জিল , জুবায়ের ওরা সল্ভ করত , তোমরা আসার পর তোমরা করতা । ২.১ এর এসে আসলে একটু ব্যাপারগুলা নিয়ে আরো জানি । সজিব ভাইয়ারা একটা কনটেস্ট এরেঞ্জ করছিলেন ভার্সিটিতে , তোমারাও তো করছিলা ?

  - হুম ঐটা আমার ফাস্ট কনটেস্ট ছিল ।  

মাত্র একটা সল্ভ হইছিল , পরে সাস্ট এ একটা কনটেস্ট হয় ।  রাইয়ান , তাঞ্জিলরা যায় আমাকে বলছিল কিন্তু এত কনফিডেন্ট ছিলাম না তাই পরে আর যাওয়া হয় নাই । ২/১ এর শেষ এ ভার্সিটিতে প্রথম ইঞ্জাম ভাইয়াকে ট্রেইনার দেয় তখন থেকে আসলে কনটেস্ট এর ব্যাপারে সবকিছু জানি । ২/১ এর ডাটাস্ট্রাকচার কোর্স ছিল ঐখানে গ্রাফ কিছু শিখানো হইছিল কিন্তু এত কিছু তখনও আসলেই জানতাম না ।

  প্রশ্নঃ প্রথম কনটেস্ট কবে করছিলেন মনে আছে ?

  উত্তরঃ প্রথম কনটেস্ট করছিলাম বুয়েট এ । না না ঐটাতে টিম দিছিলাম কিন্তু যাওয়া হয় নাই । ভার্সিটি থেকে ৩টা টিম পাঠাইছিল খালি । জুনিয়র তোমাদের পাঠায়  --

  - হুম আমি , হাসিব , মিতি করছিলাম ।

তখন একটু খারাপ লাগছিল কেন যাইতে পারব না , তখন অনেক সল্ভ করা শুরু করি । এমন ছিল ঘুমাইতাম না , বাসায় অনেক বকা খাইতেও হইছে । এত রাত জেগে না ঘুমাইয়া আমি কি করি । পরে ২/২ এর শেষ বিউবিটি তে একটা কনটেস্ট করি , আমি , রাইয়ান আর তাঞ্জিল । এইটাই ফাস্ট অনসাইট ছিল । ১টা সল্ভ করতে পারছিলাম খালি আমরা। পরীক্ষার মাঝে গিছিলাম , কনটেস্ট এর পরের দিন এক্সাম ছিল । কিন্তু এর পর সারাদিন-রাত প্রবলেম সল্ভ শুরু করে দেই। ক্লাস ও খুব একটা করতাম না ।

প্রশ্ন ঃ ভাইয়া ২০১৩ এর কোডফরসেস এ আপনার প্রাফাইল দেখলে দেখা যায় , আপনি  ৩/৪ টা কনটেস্ট এ লাফ দিয়ে ডাইরেক্ট গ্রে থেকে ব্লু তে হয়ে যান , সচরাচর এক স্টেজ থেক অন্য স্টেজ এ যাইতে তো টাইম লাগে , কিভাবে প্রাকট্রিস করতেন তখন ?

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

প্রশ্নঃ কি টাইপের প্রবলেম সল্ভ করতে ভাল লাগে ?

উত্তরঃ আমার সবসময় জিওমেট্রি প্রবলেম অনেক ভাল লাগত , আমি অনেক জিওমেট্রি প্রবলেম সল্ভ করতাম । পরে ডিপি বুঝার পর ডিপি ভাল লাগা শুরু করে । গ্রাফ ও অনেক করতাম ।

প্রশ্নঃ সবারই একটা কমন প্রশ্ন থাকে ডিপিতে কিভাবে ভাল হওয়া যায় । কিভাবে ডিপিতে ভাল হইছিলেন ?

উত্তরঃ ডিপি একদমই পারতাম না প্রথমে । আসলে কিছুই বুঝতাম না । ২০১২ তে হবে খুবসম্ভবত আইউটি এর কনটেস্ট এ আমি , রাফি ভাই , আরেফিন ভাই করি । ঐ কনটেস্ট এর ম্যাক্সিমাম প্রবলেমই ছিল ডিপি টাইপ , খুবই বাজে হয় কনটেস্টটা । ১টা সল্ভ হয় খালি । ঐ কনটেস্ট এ চ্যাম্পিয়ন হয় ইঞ্জাম ভাইরা । তখন এসে ফেসবুক এ ইঞ্জাম ভাইয়াকে নক দিয়ে জিজ্ঞাসা করি , ডিপি প্রবলেম কিভাবে করতে পারি । ভাইয়া একটা জিনিস বলছিল যেইটা অনেক মনে ধরছিল , ডিপি আসলে কিছুই না , nCm , LCS , knapsack এর ট্যাকনিকই । ঐ প্রবলেম এর কোডগুলা কিভাবে হচ্ছে এইগুলা বুঝতে । ঐগুলা বুঝার ট্রাই করি । আমি বুঝার পর ক্লাস নিতাম , আমি চাইতাম না আমার বুঝার জন্য যেই টাইমটা লাগছে এইটা অন্য কারো যেন না লাগে।

  - জি ভাইয়া , বিটমাস্ক এইসব জিনিস এর ক্লাস নিতেন তখন , আমার নিজেরও অনেক জিনিস ক্লিয়ার করে দিছিলেন আপনি ।

    দেখা যাইত আমি নিজের ক্লাস মিস দিয়েও ক্লাস নিতাম কারন তখন আমার এইগুলাই ভাল লাগত । ৩.১ এ থাকতে শান্ত ভাই আমাদের কনক্রিট ম্যাথ এর কোর্স নিতেন , ভাইয়ার সাথেও তখন অনেক প্রবলেম নিয়ে বসতাম ক্লাস এর পর । ভাইয়া অনেককিছু বুঝাইয়া দিতেন ।  expected value , probability অনেক কিছু শিখা হয় তখন।

প্রশ্নঃ আপনি codechef এর Long কনটেস্ট অনেক পচ্ছন্দ করতেন ?

উত্তর ঃ  কই না তো
 
    -- কেন ২০১৩/১৪ এ করতে করতে বাংলাদেশ এর রাঙ্ক এর ২/৩ এ চলে আসছিলেন ,

ঐ একবছরই । ২০১৩ তে করতাম , নতুন নতুন যারা এল্গো শিখতেছে codechef Longটা অনেক ভাল তাদের জন্য।

প্রশ্নঃ কোন প্রবলেম পড়ার পর  এইটা সল্ভ করার "Thinking Process" কি থাকে আপনার ?

উত্তরঃ   "Thinking Process" বলতে ?
 
  -- মানে আপনি প্রথম কি কি জিনিস দেখেন ,কিভাবে categorize করেন । টাইম লিমিট , constant এইসব

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

প্রশ্নঃ কোন প্রবলেম WA হইলে কি কি দেখেন ?

উত্তরঃ প্রথমে কোডটা আরো ভালভাবে দেখি , যা করতে চাইছি করতে পারিছি কিনা ( হাঁ হাঁ ) । পরে প্রবলেমটা আবার পড়ি , প্রবলেম ভুল বুঝছি কিনা । int , long long int এইসব চেক করি ভুল হচ্ছে কিনা ।

প্রশ্নঃ ভাইয়া আপনি অনেক গুছাইয়া কোড করেন , মানে ভ্যারিয়েবল এর নাম এইসব দেখে মনে হয় খুব চিন্তা করে দিছিলেন ?

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

প্রশ্নঃ প্রোগ্রামিং কনটেস্ট এ ইন্সপারেশন এর কেউ আছে , কাউকে ফলো করেন ? কিভাবে মোটিভেশন পাইতেন ?

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

  --- হুম আমিও মিস দিতাম না , একটা মিস যাইতে পারে আমার ।

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

প্রশ্নঃ  অনেক সময় দেখা যায় কয়েকদিন কারো কনটেস্ট ভাল না হইলে অনেক এ হতাশ হয়ে কনটেস্ট ছেড়ে দেয় বা অন্যভাবেও বলা হয় সব কনটেস্টেন এর লাইফে হতাশার একটা পিরিয়ড থাকে , এই সময় কিভাবে নিজেকে মোটিভেট করা উচিত ?

উত্তরঃ ফলো শাকিল আহমেদ ( হাঁ হাঁ )

 --- মজা নিতেছেন

না আসলেই । আসলে এইখানে হারানোর তো কিছু নাই , কনটেস্ট করে যে নলেজটা পাওয়া যায় তা তো হারাইয়া যাইতেছে না । খুব বেশি হইলে কনটেস্ট খারাপ হবে । একদিন ভাল হবে । ছেড়ে দিলে তো ঐ একদিন কোনদিন ও আসবে না ।

প্রশ্নঃ জুনিওর দের কোন সাজেশন ? কিভাবে ভাল করবে ?

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

প্রশ্নঃ প্রোগ্রামিং বাদে কোন হবি ?

উত্তর ঃ আমি ফুটবল খেলতাম , মুভি দেখতাম এইতো ।

অনেক ধন্যবাদ ভাইয়া ।

--- সব হুবাহু লিখা দিও না , কিছু কাটছাট কইরা দিও ।

--- হাঁ হাঁ দেখা যাক ।










8 comments: