My Journey to Google: Part-2

গুগলে ইন্টারভিউঃ

একদিক দিয়ে বলতে গেলে ইন্টারভিউ এর প্রথম ধাপ হল রিক্রুটার এর সাথে phone screening।

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

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

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

আমিও চিন্তা করে দেখলাম যে আসলেই অনেকদিন ধরে data structure, algorithm, time complexity এই বিষয়গুলো নিয়ে চর্চা করা হয়না তাই ইন্টারভিউ এর আগে কিছুটা সময় নেওয়াই বুদ্ধিমান এর কাজ হবে এবং এটা ছিল আমার নেওয়া শ্রেষ্ঠ ডিসিশনগুলোর একটি। প্রিপারেশন নিতে গিয়ে দেখলাম যে বেশিরভাগ বিষয়ই আবছা আবছা মনে আছে কিন্তু সত্যিকারে খাতা কলমে করতে গেলে কিছুই আর পারিনা। তখন মনে হচ্ছিল যে ২-৩ সপ্তাহ সময় তো কিছুই না, আরও বেশি হলে ভালো হত। তার উপর সারাদিন ৯-৬টা অফিস করে বাসায় আসার পরে আবার ৪-৫ ঘণ্টা পড়াশুনা করা প্রায় অসম্ভবের কাছাকাছি।

গুগলে সাধারণত ১-২টা ফোন ইন্টারভিউ আর ১টা অনসাইট ইন্টারভিউ (গুগলের অফিসে) হয়। ফোন ইন্টারভিউ গুলো হয় সাধারণত ১-১.৫ ঘণ্টা ধরে আর অনসাইট ইন্টারভিউ এর দিন সকাল থেকে বিকাল পর্যন্ত মোট ৫টা আলাদা আলাদা ইন্টারভিউ হয়। একেকটা ইন্টারভিউ সাধারণত ৫০ মিনিটের মতো করে হয় । এর মাঝে একটা ১ ঘণ্টার গ্যাপ থাকে এবং সেটাকে বলে লাঞ্চ ইন্টারভিউ। গুগলের একজন ইঞ্জিনিয়ার এর সাথে গুগলের রেস্টুরেন্টএ লাঞ্চ করা হয় এবং তাকে যেকোনো কিছু জিজ্ঞেস করা যায়। (এই লাঞ্চ ইন্টারভিউ এর সময় ক্যান্ডিডেটকে কোন মার্কিং করা হয়না তাই এসময় একটু রিলাক্সড ভাবে ইন্টারভিউআর এর সাথে কথা বলা বা সময় কাটানো যায়)

টেকনিকাল ফোন ইন্টারভিউঃ

ফোন ইন্টারভিউগুলো সাধারণত হয় ফোন এর মাধ্যমে বা Google Hangout এ। আর ইন্টারভিউ এর কয়েকদিন আগেই একজন coordinator একটা Google Docs এর লিঙ্ক পাঠায় এবং চেক করতে বলে যে সেটা অ্যাক্সেস করা যায় কিনা।

ইন্টারভিউ এর সময় একজন গুগল ইঞ্জিনিয়ার কল করে সেই Google Doc টি ওপেন করতে বলেন এবং সেখানেই প্রশ্নটি লিখে দেন। এর পরে তিনি সেটি বর্ণনা করেন এবং কিভাবে সেটা সল্ভ করা যায় এটা ক্যান্ডিডেট কে তার কাছে বর্ণনা করতে হয়।

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

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

কোডিং পুরোটাই করতে হবে Google Docs এর সেই ডকুমেন্টএ। এখানে কোন code highlighting বা code completion থাকবে না। পুরোটাই লিখতে হবে নিজেকে এবং এখানে কোন pseudocode লিখলে হবেনা। একেবারে যেই কোড রান করবে এমন কোড লিখতে হবে। অনেক ইন্টারভিউয়ার আছেন যারা সেমিকোলন বা বানান ভুল খুব একটা কেয়ার করেন না। আবার অনেকেই আছে যে এটাকে খারাপ চোখে দেখেন। তাই যতটা সম্ভব ভুলবিহীন কোড লিখতে হবে। তবে কোন API যেমন set এর ক্ষেত্রে insert নাকি add এরকম কিছু ভুলে গেলে ইন্টারভিউয়ার কে ভালো করে বলে নিলেই হবে যে এটা ঠিক কোনটা মনে পড়ছে না। এটাকে সাধারণত কেউ তেমন গুরুত্ব দেন না কারণ এসব তো গুগলে সার্চ করলেই পাওয়া যায় ????।

আমার ফোন ইন্টারভিউঃ

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

যথারীতি আমার ইন্টারভিউয়ার আমাকে ফোন করলেন। জাস্ট হাই হ্যালো করে খুব বেশি কথা না বাড়িয়েই উনি বললেন যে তুমি কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করতে চাও। আমি বললাম যে পাইথন। এটা আমি আগে থেকেই ঠিক করে রেখেছিলাম কারণ যদিও আমি C++ সবচেয়ে ভালো পারি, code completion ছাড়া সেমিকোলন, ব্রাকেট, template ঠিক রেখে google docs এ লেখা আমার কাছে একটা পেইন মনে হয়েছে। একারণে এই পুরো টাইম টা ধরে আমি শুধু পাইথনেই অনুশীলন করেছি। এছাড়া বিভিন্ন জায়গায় শুনেছি যে গুগলে ইন্টারভিউয়াররা সাধারণত ল্যাঙ্গুয়েজ নিয়ে মাথা ঘামান না।

হঠাত উনি বললেন যে উনি যেই প্রশ্নটা ঠিক করে রেখেছেন সেটা আসলে পাইথন এর সাথে তেমন যায়না। যেহেতু আমার CV প্রথমেই C++ আর জাভা লেখা ছিল উনি ভেবেছিলেন যে আমি হয়তো এই দুইটার একটা ব্যবহার করব। তাই আমি বললাম যে ঠিক আছে আমি C++ দিয়েই করব।

এমনিতেই মাথায় ছিল হাজারটা টেনশন তার উপরে লাস্ট মুহূর্তের টুইস্টএ আমি একটু অপ্রস্তুত হয়ে গিয়েছিলাম। যদিও আমি সমস্যাটা ঠিকমতো সমাধান করি কিন্তু এই ঝামেলার কারণে কিছু silly mistake ও আমার দ্বারা হয়। যেমন আমি ভুলেই গিয়েছিলাম যে set এর জায়গায় ইচ্ছা করল unordered_set ব্যবহার করে আমি solution টাকে হয়তো আরও optimize করতে পারতাম। আবার প্রশ্নটা খুব একটা কঠিনও ছিল না। তারপরও আমার ইন্টারভিউ পারফরমেন্স নিয়ে আমি নিজেই সন্তুষ্ট ছিলাম না।

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

এটা ছিল আমার জন্যে একটা অনেক বড় পাওয়া। আর একারণেই প্রথমেই বলে নিয়েছি যে রিক্রুটার এর সাথে সুসম্পর্ক অনেক বড় একটা ব্যাপার ????।

আমার দ্বিতীয় ফোন ইন্টারভিউটা হয়েছিল খুবই ভালো। এবারে পাইথনও ব্যবহার করতে পারায় শুধুমাত্র problem solving এই ভালো করে মনোযোগ দিতে পেরেছিলাম ও ইন্টারভিউ দিয়ে আমি নিজেও সন্তুষ্ট ছিলাম। তাই ফলাফলও আশানুরূপ ছিল ও কিছুদিন পরেই আমি অনসাইট এর জন্যে invitation পাই। ????

আমার দুইটা ইন্টারভিউতেই ইন্টারভিউয়াররা ছিলেন অসাধারণ। ইন্টারভিউএর সময় আমার মনে হয়নি যে আমি কোন ইন্টারভিউ দিচ্ছি। আমার মনে হয়েছে যেন আমি আমার কোন কলিগের সাথে একটা সমস্যা নিয়ে আলোচনা করছি। তাই আমার কাছে এই experience টা ছিল অসাধারণ।

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

কিছু সাধারণ জ্ঞানঃ

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

Original Post: