সব কাজে পারদর্শী বলে নেতিবাচক তকমা পেয়েছেন? হয়তো এটা আসলে ভালো একটা বিষয়ই, বিশেষ করে যখন নানা পটভূমি, প্রোগ্রামিং অভিজ্ঞতা আর সংস্কৃতি থেকে আসা মানুষকে মেন্টরিং করা হয়! আইজ্যাক নিজে নিজেকে টেকি আর সব কাজে পারদর্শী বলে পরিচয় দেন... আরও অনেক কিছুর পাশাপাশি!
Jonathan: সবাইকে স্বাগতম, এবং Exercism কমিউনিটি পডকাস্টে আপনাকে স্বাগত জানাই। আমার সঙ্গে আজ যুক্ত হওয়ার সুযোগ পেয়েছি আইজ্যাকের, যিনি আমাদের একজন মেইনটেইনার ও কনট্রিবিউটর, এবং সম্প্রতি আমাদের GoHort, অর্থাৎ আমাদের লার্নিং কোহোর্টগুলোতে অনেক শিক্ষার্থীকে মেন্টরিং করেছেন। এই কোহোর্ট আমরা ৩০ দিন ধরে চালিয়েছি, আমার মনে হয় এখন পর্যন্ত দুইবার, বিশেষ করে Go আর Elixir নিয়ে। আর আইজ্যাক Go ট্র্যাকে সাহায্য করেছেন, যা দারুণ ছিল। তাহলে আইজ্যাক, আপনাকে আন্তরিক স্বাগতম। আপনি কি একটু বলবেন আপনি কোথায় থাকেন, কোথা থেকে এসেছেন, আর কীভাবে টেক ইন্ডাস্ট্রিতে ঢুকলেন?
Isaac: হ্যাঁ, আমি ক্যালিফোর্নিয়ায় থাকি। আমার বাড়ি ক্যালিফোর্নিয়ার সান হোজেতে। সত্যি কথা বলতে, টেক ইন্ডাস্ট্রিতে আমি ঢুকেছি কারণ আমার বড় ভাই টেক নিয়ে মেতে থাকতেন, আর তিনি যা করতেন আমি সেটাই করতাম। আমাদের অনেক ভাইবোন ছিল। আমরা একে অন্যের সঙ্গে সময় কাটাতে পছন্দ করতাম, তবে কারও সঙ্গে কেউ বেশি মিলতাম, কারও সঙ্গে কম। আমার একজন বড় ভাই ছিলেন, যাঁর সঙ্গে আমি খুব সময় কাটাতে ভালোবাসতাম। তিনি অবশ্য আমার সঙ্গে ততটা সময় কাটাতে উপভোগ করতেন না, কিন্তু আমি তাঁকে সারাক্ষণ অনুসরণ করতাম, আর তিনি যা করছেন সেটাই করতে চাইতাম। তিনি যখন প্রায় ১৫ বছর বয়সী, তখন বাড়িতে পড়ে থাকা একটা C for Dummies বই হাতে তুলে নেন, আর আমার বয়স ছিল ৯, যদি ঠিক মনে থাকে। তিনি C লিখছেন, আর আমি ভাবলাম, তিনি যদি এটা করতে পারেন, আমিও করব। সেই বয়সে আমার প্রোগ্রামগুলো বেশ সহজ আর সাধারণ ছিল। এগুলো বেশি কিছু ছিল না, “আপনার নাম কী”, “হ্যালো Bob” ধরনের ছোট অনুশীলনী। খুব বেশি জটিল ছিল না। তো শুরু তো একদিন কোথাও করতে হয়। সেখান থেকেই শুরু করলাম। আমি ভাবলাম, আহ, ক্যারেক্টার প্রিন্ট করলেই একটা শব্দ হয়! এটা তো দারুণ। আমি এমন একটা প্রোগ্রাম লিখলাম যেটা আক্ষরিক অর্থেই শুধু একটা slash A প্রিন্ট করত। কিন্তু আমার শুরুটা ছিল ৯ বছর বয়সে। আমি C প্রোগ্রাম লিখতাম। আমাদের একটা পুরনো Windows 3.1 মেশিন ছিল, যেটা বুট হয়ে DOS-এ যেত, আর আমার ভাই একটা ব্যাচ স্ক্রিপ্ট সেট করেছিলেন, যাতে কম্পিউটার চালু হলে একটা মেনু দেখায়, যেখান থেকে Windows চালু করা যায়, গেম চালু করা যায়, এমন একটা গেম মেনু ছিল। আপনি যেমন 5 টাইপ করলে Warcraft বা যা হোক চালু হত। তাই আমরা অন্য গেম ইনস্টল করলে সেগুলোর জন্য আমি ব্যাচ স্ক্রিপ্ট লিখতাম। এরপর সব তো একটাই পথে গড়িয়ে চলতে শুরু করল। আমার ভাই কম্পিউটার ইঞ্জিনিয়ারিং পড়তে বিশ্ববিদ্যালয়ে গেলেন, আর আবারও আমি ভাবলাম, তিনি যদি এটা করতে পারেন, আমিও করব। তাই ৯ বছর বয়স থেকেই আমি C লিখতে শুরু করলাম। আমি লিখতাম... হাই স্কুলে Visual Basic 6। আমার একটা POM pilot ছিল, হাই স্কুলে সেটাতেই নানা প্রোগ্রাম লিখতাম। আমার গণিতের শিক্ষক সত্যিই দুর্দান্ত ছিলেন। আমি ছিলাম সেই পুরনো ধাঁচের...
Jonathan: সেটা কি সেই জিনিসটার মতো, মনে আছে, আইপ্যাড আসার আগে ওরা একটা জিনিস বের করার চেষ্টা করেছিল, আর খুব অল্প কিছু মানুষ সেটা হাতে পেয়েছিল, তাতে ছোট্ট একটা কলম দিয়ে আঁকিবুঁকি করার ব্যাপার ছিল। আর সবাই ভাবত এটা ভারী কOOL, কারণ লেখাটা ওপাশ দিয়ে বেরিয়ে আসত, একেবারে জুপ, আর তারপর আপনি টোকা দিতে পারতেন। ব্যাপারটা... আমি সবসময় এটা মনে রাখি, কারণ তারপর আইপ্যাড বের হতে শুরু করল, আর সবাই বলল, আহ, একটু আগেভাগে বের করে ফেলেছিল। ওই pilot-টা ঠিক ওই একটু, একটু আগেভাগে ছিল, বুঝতে পারছেন?
Isaac: এক দশক বা তার কিছু বেশি সময় ধরে এটা দুর্দান্তই ছিল, তবে হ্যাঁ, ওখানে Palm Graffiti ছিল, যেটা দিয়ে ইনপুট দিতে হত। একটা ছোট ইনপুট প্যাড থাকত, আর আপনাকে ক্যারেক্টার লিখতে হত, কিন্তু সেগুলো অনেকটা বর্ণমালার উপর ভিত্তি করে বানানো। যেমন A ছিল একটা ত্রিভুজের মতো, আর F ছিল সমকোণের মতো। হ্যাঁ, আমার হাই স্কুলের গণিতের শিক্ষক বলতেন, এই, আপনি যদি নিজেই প্রোগ্রামটা লেখেন, তাহলে পরীক্ষায় ব্যবহার করতে চাইলে কোনো সমস্যা নেই। তাই আমি হাই স্কুলে POM pilot-এর জন্য প্রোগ্রাম লিখতাম, যা সত্যিই দারুণ ছিল। আমি কম্পিউটার ইঞ্জিনিয়ারিং পড়তে বিশ্ববিদ্যালয়ে গেলাম। দেখুন, মানুষ স্ক্রিপ্টিং ভাষা নিয়ে কথা বলত। কী যে সেগুলো, আমি ঠিক বুঝতাম না, তাই এলোমেলোভাবে Perl হাতে তুলে নিলাম। তারপর আমি গ্র্যাড স্কুল শেষ করে বেরিয়ে পড়লাম, আর Google আমাকে চাকরি দিল। ২০১৩ সালে ওরা আমাকে ইস্ট কোস্ট থেকে ক্যালিফোর্নিয়ায় নিয়ে এল। আর সেখানেই, প্রায় এক দশক আগে, আমি Python শিখে নিলাম। গত এক দশকে Python-ই আমার প্রধান ভাষা। আমি Google-এ ছিলাম, তাই আমার স্টাইল অনেকটাই Google-এর স্টাইল দ্বারা প্রভাবিত। সেজন্যই আমি মূলত এটাই লিখে চলেছি। তারপর প্রায়... চার বছর আগে, মনে হয় ২০১৮ সালের দিকে, Google অভ্যন্তরীণভাবে Go ভাষা ছড়াতে শুরু করল, আর তখনই আমি Go শিখে নিলাম।
Jonathan: দারুণ। আর আইজ্যাক, আপনি যখন Google-এর স্টাইলের কথা বলছেন, তখন কি এটা নির্দিষ্টভাবে ধরা ছিল যে এটাই সঠিক পথ? নাকি ব্যাপারটা এমন ছিল... মানে, এটা একটু খুলে বলুন, কারণ বিষয়টা মজার।
Isaac: প্রোগ্রামিং স্টাইল মানে একেবারে এটাই একমাত্র সঠিক পথ, তা নয়; বরং এটা একটা অভিন্ন পথ, যেটা সবাইকে মেনে চলতে হবে। ওরা বলে, ভালো একটা আপস বা ভালো একটা চুক্তি হলো সেই চুক্তি, যেখানে কেউই খুশি নয়। স্টাইল গাইড নিয়ে কেউই পুরোপুরি খুশি নয়, কিন্তু সবাই যতক্ষণ সেটা মেনে চলে, code দেখতে অভিন্ন লাগে। এর মানে হলো, যে কেউ Google-এর code base থেকে যেকোনো অংশ তুলে নিয়ে পরিবর্তন করতে পারে, আর যতক্ষণ সবাই একই স্টাইল নির্দেশিকা মেনে চলে, code সবই অভিন্ন থাকে। আপনাকে ভাবতে হবে না, আহ, এই code base-এ চার স্পেসের ইন্ডেন্ট, আর ওটায় দুই স্পেসের, বা এখানে নামকরণের রীতিটা এমন, ওখানে তেমন। পুরো code base জুড়ে সবকিছু একইভাবে করা হয়। এর কোনোটাই নিয়েই সবাই খুশি নয়। সবার নিজের কিছু জায়গা আছে, যেখানে সে চাইত জিনিসটা অন্যভাবে হোক। কিন্তু যেহেতু একটা লিখিত স্টাইল গাইড আছে, যা সবার জন্য খোলা, আপনি শুধু Google করে Google Python style guide খুঁজে নিতে পারেন, আর সেটাই বলে দেয়, Google-এ আমরা এভাবে code লিখি। সবাই যদি ওই গাইড ধরে থাকে, তাহলে সব code দেখতে ভারী অভিন্ন লাগে, আর এটা সত্যিই দারুণ, যেকোনো code base খুললেই কোনো চমক থাকে না, যে আহ, ওরা এটা অন্যভাবে লিখত।
Jonathan: সেই কারণেই কি Go এই প্রসঙ্গে এত ভালোভাবে মানিয়ে যায়? কারণ এটা ফরম্যাট করা, আর একেবারে এমনই যে এটাই নিয়ম। Google-এর প্রভাব এতে স্পষ্ট বোঝা যায়।
Isaac: হ্যাঁ, রব পাইক কতটা Google-এর ধরন দ্বারা প্রভাবিত হয়েছিলেন, বা তিনি কতটা Google-এর ধরনকে প্রভাবিত করেছিলেন, আমি জানি না। কোনটা থেকে কোনটা এসেছে, নিশ্চিত নই। কিন্তু Go সেটাকে সত্যিই আরেক ধাপ এগিয়ে নিয়ে গেছে। Python-এ যেমন নানা স্টাইল আছে, মানুষ তাদের লিন্টার নিজের মতো বদলে নানা জিনিস মেনে নিতে বাধ্য করে। যেমন, Google অভ্যন্তরীণভাবে Python-এ দুই স্পেসের ইন্ডেন্ট ব্যবহার করে, কারণ অনেক code অনেক গভীরে নেস্টেড থাকে, আর ওরা স্পেসের বিশাল দেয়াল চায় না। বাইরে বেশিরভাগ মানুষ চার স্পেস ব্যবহার করেন, আর সেটাই Python-এর ডকুমেন্টেশনে লেখা আছে। কিন্তু হ্যাঁ, Go-র ক্ষেত্রে ওরা এটাকে আরেক ধাপ এগিয়ে নিয়ে গেছে আর বলেছে, ভাষার সঙ্গেই ফরম্যাটিং এসে গেছে। ফরম্যাট করার একটাই পথ। কোনটা সঠিক পথ, তা নিয়ে অনলাইনে কোনো তর্ক নেই। একটাই পথ।
Jonathan: এতে অনেক আনা-গোনা, তর্ক-বিতর্ক বেঁচে যায়। এভাবে বলা যাক। হ্যাঁ। দারুণ ব্যাপার।
Isaac: হ্যাঁ।
Jonathan: তাহলে, আচ্ছা, আপনি যখন Google-এ শুরু করলেন, তখন কি কখনো Python করেননি, নাকি একটু আধটু করেছিলেন, নাকি ব্যাপারটা সহজ লাফ ছিল? কারণ আপনার কথা শুনে মনে হলো, চাকরি তো পেয়ে গেলেন, তারপর ভাবলেন, আচ্ছা, Python শিখে নিই, চলুন শুরু করি।
Isaac: ঠিক তাই। Google-এ যোগ দেওয়ার আগে আমি কখনো Python লিখিনি বলে মনে হয়। আমি বছর দুই ধরে Perl লিখতাম। মনে হয় তখন পর্যন্ত কয়েক বছর ধরে Perl লিখছিলাম। আমার প্রথম সামার জব। সেটা অবশ্য আলাদা গল্প। Google-এ যোগ দেওয়ার ছয় বছর আগে থেকেই আমি Perl লিখতাম, তাই তখন বেশ ভালোই Perl লিখতাম। একটু Bash-ও লিখতাম, তাই স্ক্রিপ্টিং ভাষার সঙ্গে পরিচয় ছিল। কিন্তু Python কখনো লিখিনি। তবে যথেষ্ট ভাষা নিয়ে একবার ঘাঁটাঘাঁটি করলে... নতুন একটা ভাষা শেখার চড়াইটা একটু কম খাড়া লাগে, কারণ বেশিরভাগ গঠন তো আগেই দেখেছেন, শুধু সিনট্যাক্সটা একটু আলাদা, টুলকিটটা একটু আলাদা। আসলে অনেকটাই একই পুরনো জিনিস, শুধু একটু আলাদা, অন্যভাবে লেখা। গঠনগুলো প্রায় একই রকম হয়। তাই চারটা ভাষা শেখার পর পঞ্চমটা শেখা মানে, আহ, এটা তো শুধু একটু অন্যভাবে লেখা।
Jonathan: হ্যাঁ, হ্যাঁ। এটা মজার। তাহলে, আপনার প্রথম চাকরি নিয়ে, হাই স্কুলের পরে的那种 নিয়ে আপনি একটু হেসেছিলেন। তাহলে আপনার কি সবসময়ই মনে হতো, আমি ইঞ্জিনিয়ারিং-এ যাব, আমি কম্পিউটার নিয়েই কাজ করব? এটা কি সবসময় সচেতন একটা চিন্তা ছিল, নাকি এটাই স্বাভাবিকভাবে আপনার জায়গা, আপনি এটা উপভোগ করেন, আর সেটাই? ব্যাপারটা কেমন ছিল?
Isaac: মনে হয় তাই। আমি তো একেবারে ভাইয়ের পথ অনুসরণ করতেই চাইতাম। তিনি কম্পিউটার ইঞ্জিনিয়ারিং পড়তে গেলেন। তিনি প্রোগ্রাম লেখা শুরু করলেন। আমার ছোটবেলায় তিনি প্রোগ্রামিং শুরু করেন। আমি তাঁর সঙ্গেই চললাম। ছোটবেলা থেকেই আমি প্রোগ্রাম লিখতাম। তিনি কম্পিউটার ইঞ্জিনিয়ারিং-এ গেলেন, আর সেটাই ছিল... মানে, তিনি যা করেছেন আমি তাই করতে চেয়েছি, আর প্রোগ্রাম লিখেও আমি দারুণ সময় কাটাচ্ছিলাম। তাই হাই স্কুলে ঢোকার সময় থেকেই, যখন ভাই ইতিমধ্যে বিশ্ববিদ্যালয়ে পড়ছেন, আমি জানতাম আমাকে সেখানেই শেষ করতে হবে।
Jonathan: তাহলে তিনি আপনার চেয়ে কয়েক বছরের বড়, তাই শুনে মনে হচ্ছে আপনার মানুষ হয়ে ওঠার পেছনে তাঁর বিশাল প্রভাব আছে। আপনার আর কতজন ভাইবোন? নাকি আপনার চোখে তিনি ছিলেন সবার সেরা?
Isaac: আমার আটজন ভাইবোন আছে, তবে তাঁর সঙ্গেই আমি সবচেয়ে ভালো মিলতাম। তিনি একজন... মানে, কারও সঙ্গে আমার বেশি মিল, কারও সঙ্গে কম। আটজন থাকলে সবসময় একটা রেঞ্জ থাকে। তাঁর সঙ্গে আমি বেশ ভালো মিলতাম। আমরা অনেকটা একইভাবে ভাবি। আমাদের আগ্রহও একই রকম। আমরা সারাক্ষণ কম্পিউটার নিয়ে মেতে থাকতাম। এখনও থাকি। তাঁর স্ত্রী অপছন্দ করেন যখন সেটাই খাওয়ার টেবিলের আলোচনা হয়ে যায়। তিনি বলেন, খাওয়ার টেবিলে কাজ নয়। আমরা সারাক্ষণ শুধু প্রোগ্রামিং নিয়ে মেতে থাকি আর কথা বলি। বলতে পারি না এর কতটা ছিল তাঁকে নকল করার ইচ্ছা আর কতটা আমাদের একই রকম আগ্রহ। এখন আমাদের আগ্রহ সত্যিই একই রকম। এর কতটা স্বভাব আর কতটা পরিবেশ, জানি না। কতটা আমি তাঁকে নকল করেছি আর কতটা আমাদের আগ্রহই একই ছিল, সেটা আমার বলা সম্ভব নয়। কিন্তু যেহেতু ছোটবেলা থেকেই আমি তাঁর পথ ধরে চলছিলাম, আমি অনুসরণ করছিলাম আর কোনও এক অর্থে তিনি পথ বানিয়ে দিচ্ছিলেন, আমি সেটাই অনুসরণ করছিলাম।
Jonathan: হ্যাঁ, এটা সত্যিই দারুণ। আর তিনি এখন কোথায়? শুধু জানতে ইচ্ছে করছে, তিনি কি ইস্ট কোস্টে?
Isaac: তিনি এখনও ইস্ট কোস্টে, টেক ইন্ডাস্ট্রিতেই কাজ করেন। আমরা অল্প কিছুদিন একই কোম্পানিতে কাজ করেছি।
Jonathan: হ্যাঁ, আচ্ছা, দারুণ। যাক। এইটাও দারুণ। জিজ্ঞেস করতে ইচ্ছে করছিল। এখন, একটা বিষয় হলো, আমাদের এইমাত্র যে কোহোর্টটা হলো, সেখানে আপনি সত্যিই গভীরভাবে জড়িত ছিলেন। এই সাম্প্রতিক লার্নিং কোহোর্ট, বিশেষ করে Go নিয়ে, আমরা ৩০ দিনের একটা কর্মসূচি চালিয়েছি। আর তার আগে Exercism-এ আপনার জড়িত থাকা ছিল মূলত মেইনটেনিংয়ে, তবে যতটা বুঝলাম, মেন্টরিংও অনেক করেছেন। এই ভাগটা কেমন লাগে? মানে, Exercism-এর সঙ্গে আপনার পরিচয় কীভাবে, আর কোন কোন দিকটায় অবদান রাখতে আপনি ভালোবাসেন?
Isaac: আসলে আমি প্রথম Exercism-এর সন্ধান পাই কারণ আমি Haskell আবার শিখতে চাইছিলাম। Google-এ Haskell 101 নামে একটা ক্লাস করেছিলাম, যা বেশ মজার ছিল। তারপর ভাবলাম, আহ, এটা নিয়ে আরও সময় দেওয়া উচিত। কিন্তু সেটা একপাশে পড়ে রইল। পরে আবার ফিরে আসার চেষ্টা করলাম।
Jonathan: আর পরেরবার দেখা হবে।
Isaac: যেকোনো ভাষার ক্ষেত্রেই আমি দেখি, শেখার সবচেয়ে সহজ উপায় হলো সেটা সত্যিই লিখতে শুরু করা। আর লেখার সবচেয়ে সহজ উপায় হলো লেখার একটা উদ্দেশ্য থাকা। Haskell লেখার তেমন উদ্দেশ্য আমি খুঁজে পাইনি, যার ফলে এটা শেখা সত্যিই কঠিন হয়ে গিয়েছিল। কিন্তু তারপর Exercism খুঁজে পেলাম, আর ভাবলাম, আহ, এটা হয়তো আমাকে আরও Haskell লিখতে সাহায্য করবে। এভাবেই প্রথম Exercism-এর খোঁজ পাই। একবার ঢুকে দেখলাম, আহ, এখানে একটা Python ট্র্যাক, একটা shell ট্র্যাক, আরও কত কী অনুশীলনী আছে। তাই... আর এভাবেই খরগোশের গর্তে নেমে পড়লাম?
Jonathan: আর খরগোশের গর্তে নেমে পড়লেন।
Isaac: হ্যাঁ। আমি Python-এ অনুশীলনী সমাধান শুরু করলাম। Bash-এও সমাধান শুরু করলাম। Go-র কয়েকটা অনুশীলনী করলাম। যখন GoHort শুরু হলো আর আমি আমার আগের কিছু সমাধান ঘেঁটে দেখলাম, দেখলাম অনেকগুলোই তিন বছর আগে সাবমিট করা। আসলে, আমি প্রথম Go ট্র্যাকে সাইন আপ করি ২০১৯ সালে, আর তখনই এর একটা বড় অংশ সমাধান করি। আর তখন পর্যন্ত আমি এক দশক ধরে Python করছি। তাই Python মেন্টর হিসেবে যোগ দেওয়াটা আমার কাছে বেশ আরামদায়ক মনে হলো, আর আজকাল অনুশীলনী নিয়ে আমার বেশিরভাগ সময় ওখানেই কাটে। তারপর আমি Python ট্র্যাকে PR, মানে পুল রিকোয়েস্ট, সাবমিট করা শুরু করলাম, কারণ কিছু জিনিস ঠিক জায়গায় ছিল না। তারপর Bash ট্র্যাকে জড়িয়ে পড়লাম। কীভাবে হলো জানি না, কিন্তু Bash ট্র্যাকে ফিক্স সাবমিট করা থেকে আমি Bash-এর মেইনটেইনার হয়ে গেলাম।
Jonathan: একেবারে তেমনি। মানে, ভাবুন তো, সাইন আপ করার আগে ভেবেচিন্তে করুন, তাই না?
Isaac: হ্যাঁ, তারপর গ্লেন Ock ট্র্যাকটা লিখলেন, আর আমি ভাবলাম, আহ, আমি তো Ock জানি, Ock আমার পছন্দ, আমিও এই দলে যোগ দিই। তাই Ock ট্র্যাকের অনুশীলনীগুলো গড়ে তুলতে সাহায্য করলাম। ঠিক নিশ্চিত নই, কিন্তু আমার মনে হয় তিন বছর আগে যখন Go অনুশীলনীগুলো দেখলাম, তখন আমি পুরো ট্র্যাকটাই শেষ করি, আর তারপর একজন মেন্টর বললেন, আহ, আপনি তো সব অনুশীলনী শেষ করে ফেলেছেন, তাহলে হয়তো মেন্টর হয়ে যেতে পারেন। আমি ততটা পারদর্শী নই, আমি Go যথেষ্ট নিয়মিত বা ঘন ঘন লিখি না যে মেন্টরিং করতে আরাম লাগবে। তাই আমি সত্যিই Go মেন্টর ছিলাম না। কিন্তু তারপর যখন GoHort-এ যোগ দিলাম আর অনেক মানুষ মেন্টরিং চাইছিলেন, তখন ভাবলাম, আহ, তাহলে এই মাসের জন্য মেন্টর হিসেবে সাইন আপ করে সাহায্য করতে পারি। তবে আসলে আমি সম্প্রতি GoHort-এ একজন শিক্ষার্থী হিসেবে যোগ দিয়েছি। আর তারপর আমি শিক্ষার্থীর অংশ থেকে গড়িয়ে মেন্টরের দিকে চলে যাব, মনে হয়।
Jonathan: আমি তো একেবারে শিক্ষার্থীর অংশ থেকে গড়িয়েই এসেছি, মনে হয়। সাইন আপ করার আগে সাবধান থাকুন। বলছি, একটা প্যাটার্ন দেখা যাচ্ছে, আপনি একটার জন্য সাইন আপ করেন, আর শেষে অন্য কিছু হয়ে যান। তবে এটা সত্যিই দারুণ। আচ্ছা, আপনি যখন বিশেষ করে Go ট্র্যাকে শিক্ষার্থীদের মেন্টরিং করছেন, তখন সবচেয়ে কমন কী কী জিনিস দেখেন? মানে, Go ট্র্যাকে সম্ভবত অনেক অভিজ্ঞ ডেভেলপারও ছিলেন, যাঁদের ডেভেলপমেন্টে কিছুটা অভিজ্ঞতা আছে। কিন্তু আপনি কী কী লক্ষ্য করেছিলেন, যেগুলো দেখে মনে হয়েছে, আচ্ছা, এই জিনিসগুলোতেই মানুষ সাধারণত আটকে যায়? কোনো প্যাটার্ন কি চোখে পড়েছে, যে এটা কমন, এটা বেশ নিয়মিতভাবে আসছে?
Isaac: জানি না। আমার বেশিরভাগ মেন্টরিং তো এমন মানুষদের নিয়ে হয়েছে যাঁরা সমাধান শেষ করে ফেলেছেন। বেশিরভাগ ক্ষেত্রেই মানুষ মেন্টরিংয়ে আসার আগে অনুশীলনীটা সমাধান করে ফেলেন। তাই আমার বেশিরভাগ কথাবার্তায় মানুষ সাধারণত আটকে থাকেন না। মানে, বেশিরভাগ সময়ই তাঁরা সফলভাবে একটা অনুশীলনী শেষ করেছেন, আর তারপর অনেকটাই পরামর্শ হয়, আচ্ছা, এটা করার আরও এফিশিয়েন্ট কোনো উপায় আছে? আরও ভালো কোনো অ্যালগরিদম আছে? এর মধ্যে একটা কমন জিনিস খুব বেশি আসে, সেটা হলো স্ট্রিং গড়া। Go আর Python-এর মতো ভাষায় স্ট্রিং ইমিউটেবল, তাই অনেক স্ট্রিং কনক্যাটেনেশন করা খুব একটা এফিশিয়েন্ট নয়। তাই অনেক সময় বলা হয়, এই, আপনি এটা একটা অ্যারে দিয়ে গড়ে তারপর স্ট্রিংগুলো জয়েন করতে পারেন, বা Go-এ স্ট্রিং বিল্ডার ব্যবহার করতে পারেন। তাই অনেকটাই তাঁদের আরও ভালো প্যাটার্ন আর বেস্ট প্র্যাকটিসের দিকে ঠেলে দেওয়া। দেখার জন্য ধন্যবাদ।
Jonathan: আচ্ছা, দারুণ। দারুণ মজার। তাহলে এখন, কাজের ক্ষেত্রে আপনার রোজকার দিনটা কেমন দেখতে? ডেভেলপমেন্ট সেখানে কোথায় পড়ে? ধরুন, আপনি কিছুদিন ধরে টেক ইন্ডাস্ট্রিতে আছেন, দিনটা কেমন কাটে? চ্যালেঞ্জগুলো কী? এখন কাজের কোন অংশগুলো আপনি উপভোগ করেন?
Isaac: আমি সাইট রিলায়াবিলিটি ইঞ্জিনিয়ারিংয়ের ভূমিকায় আছি, যা কমবেশি DevOps-এর মতো। এর মধ্যে কিছু সিসঅ্যাডমিনের কাজও আছে। গত এক দশক ধরে আমি অন-কল রোটেশনে পেজার বহন করছি। তাই আমার রোজকার দিন অনেকটাই নির্ভর করে আমার অন-কল সপ্তাহ কি না, তার উপর। যখন অন-কলে থাকি, তখন অনেকটা পেজারের দিকে খেয়াল রাখা, একটা টিকিট কিউ, সাপোর্ট কিউ থাকে, আর কোনো প্রসেস ফেল করলে বা সমস্যা হলে সেটা যেন ধরা পড়ে এবং ঠিক হয়, সেটা নিশ্চিত করা। এটা মোটামুটি ছয় সপ্তাহে এক সপ্তাহ, বা টিম এখন যত বড়ই হোক। আর বাকি সময়টায় আমি অন-কলে থাকি।
Jonathan: হুম।
Isaac: আমি অনেক সময় অটোমেশন নিয়ে ঘাঁটাঘাঁটি করি, তাই অনেকটা হলো এমন প্রসেস চিহ্নিত করা যেগুলো ঝামেলার, আর সেগুলোকে কম ঝামেলার বানানো। হতে পারে... এটা হওয়ার কোনো কারণ থাকতে পারে, কিন্তু সাধারণত আমি দেখি, এই সমস্যাটা হলে আমাদের এই এই কমান্ড চালিয়ে হাতে হাতে মেরামত করতে হয়। তখন মনে হয়, আচ্ছা, কেন আমরা এই কমান্ডগুলো হাতে চালাচ্ছি? একটা Python স্ক্রিপ্ট লিখতে পারি না, যেটা এসব কাজ করে দেবে? বা টুলিংটা এমনভাবে উন্নত করতে পারি না যাতে সেটা ফেল না করে নিজেই সমস্যাটা ধরে ফেলে? আর অনেকটাই হলো সিস্টেম চালানোর রোজকার কাজটা এমনভাবে উন্নত করার চেষ্টা করা, যাতে মানুষ কম জড়িত থাকে, বা সবকিছু মসৃণভাবে চালাতে এত গভীরভাবে জড়িত থাকতে না হয়।
Jonathan: তাহলে আপনার দিনে, যেখানে যেখানে জিনিস অপটিমাইজ করা যায়, সেই ছোট ছোট জায়গাগুলো খুঁজে বের করতে আপনি উপভোগ করেন? আপনার কাজের কতটা হলো ঘটনার প্রতিক্রিয়ায় সাড়া দেওয়া, আর তারপর সেই প্রতিক্রিয়া থেকে ভাবা, আহ, এটা তো একটা সুযোগ, বরং নিজে থেকেই সেই ছোট ছোট জায়গাগুলো খোঁজা? সাধারণত ভারসাম্যটা কেমন?
Isaac: আমি অটোমেশন উপভোগ করি, কাজের মধ্যে সম্ভবত এটাই সবচেয়ে বেশি উপভোগ করি, জিনিসগুলো অটোমেট করতে পারা। এটা সবসময়ই প্রতিক্রিয়ামূলক নয়। মানে, প্রতিক্রিয়া মানে হতে পারে কিছু ভেঙে গেছে, আবার হতে পারে, আহ, দেখলাম মানুষ এই কমান্ডটা চালাচ্ছে, আমি বুঝলাম আমরা একটা কমান্ড বারবার কপি-পেস্ট করি, এটা কি উন্নত করা যায়? কোথাও কেউ একটা রানবুক বদলাচ্ছে বা একটা কমান্ড উন্নত করছে, আর আমি দেখে ভাবি, আহ, ওই কমান্ডটা তো বেশ এলোমেলো, এটা প্রথম থেকে নতুন করে লিখি না? আর অবশ্যই, খুব বেশি মনোযোগ দেওয়াটাও ঠিক নয়, এটাকে আকর্ষণের সঙ্গে ভারসাম্য রাখতে হয়, বড় বড় শব্দ কমাতে হয়, ভাষা আরও ভালো করতে হয়, এসব। এগুলো করতে গিয়েই আপনাকে ওটার উপরে দখল আনতে হয়। সত্যি বলতে, আমার কাজের সবকিছুই আসলে... ভাবলে মনে হয় সব ঠিক জায়গাতেই আছে। আমি খুবই উদ্যমী একটা মানুষ, তাই... না, আমার কাজটা যেখানে আছে সেখানেই আছে, কিন্তু যে কাজটা আমি ভালোবাসি, নিজের সময় কাটানোর জন্য...
Jonathan: উৎপাদন বলতে পারেন।
Isaac: রিফ্যাক্টরিং, অর্থাৎ দেখতে পাওয়া যে কিছু টুল ব্যবহার করা ঝামেলার, আর সেগুলো নতুন করে লেখা বা তাদের চারপাশে র্যাপার লেখার সিদ্ধান্ত নেওয়া। আমি দেখি... হ্যাঁ, ধরুন আমি কোনো বড়, জটিল প্রোগ্রামে code পরিবর্তন দেখি, আর ভাবি, আহ, ওই প্রোগ্রামটা তো একেবারে এলোমেলো। এটা কি আমি ঢুকে নতুন করে লিখতে পারি বা রিফ্যাক্টর করতে পারি? বা নতুন কিছু বানানো, মানে সবসময় রিফ্যাক্টরিং নয়, মাঝে মাঝে শুধু নতুন টুল বানানো। যেমন, আহ, আমাদের একটা প্রসেস আছে যেখানে ২০টা ধাপ করতে হয়, চলুন এটাকে পুরোটা একটা প্রোগ্রামে ঢুকিয়ে দিই। অনেকটাই আসলে এমন, জানেন তো, এগুলো আমাকে কোনোভাবে খুঁজে বের করতে হয়। কখনো খুঁজে পাই কারণ আমাকে একটা কাজের সেট দেওয়া হয়, তখন ভাবি, এগুলো হাতে চালাতে চাই না। আবার কখনো শুধু লক্ষ্য করেই খুঁজে পাই, যেমন আমি কোথাও code-এর একটা অংশ দেখছি, তখন দেখি, এই, অন্য দলটা যে code-টা দেখাশোনা করে, তারা কাজটা খারাপভাবে করছে, চলুন এটা রিফ্যাক্টর করি, বা আধুনিক লাইব্রেরি ব্যবহার করি, ইত্যাদি।
Jonathan: তাহলে অনেকটাই... শুধু দেখতে পাওয়ার ব্যাপার। তাহলে আপনার কতটা স্বাধীনতা আছে? ঘুরে বেড়িয়ে ঝাঁপিয়ে পড়ে এটা-ওটা ঠিক করার মতো যথেষ্ট স্বাধীনতা আছে? মানে, এটা নিশ্চয়ই বেশ মজার, বেশ উপভোগ্য।
Isaac: আমার ম্যানেজার আমাকে অনেক স্বাধীনতা দেন, যা সত্যিই দারুণ। এর কতটা এসেছে... আমি এখন Google-এ নেই, কিন্তু এর কতটা এসেছে Google-এ আমার পটভূমি থেকে, জানি না। Google-এ মানুষ খুব খোলা মনে ঝাঁপিয়ে পড়ত, যেমন, আহ, আমি লক্ষ্য করলাম, আমি এই লাইব্রেরিটা ব্যবহার করি আর এটা এভাবে উন্নত করা যায়। চলুন আমি এটা ঠিক করে দিই। খুব অল্প সময়ের জন্য আমি একটা স্টার্টআপে কাজ করেছিলাম, যেখানে কালচার একেবারে আলাদা, অনেক কম খোলা। ওই স্টার্টআপে মানুষ তাদের code base নিয়ে খুব রক্ষণশীল ছিল, আর অন্য কেউ তাদের code পরিবর্তন করাটা খুব একটা মেনে নেওয়া হত না। তাই আমি যখন বলতাম, আহ, এই code base-এ একটা সমস্যা আছে, চলুন এটা এভাবে বদলে দিই...
Jonathan: হ্যাঁ, পিছিয়ে যান। কিন্তু এটা মজার, কারণ... আপনার ধারণা হয় স্টার্টআপে বরং অনেক বেশি হবে যে, কাজটা তো শেষ হলেই হলো, যত সস্তায় সম্ভব করে ফেলো। কিন্তু আসলে, হয়তো Google-ই এই ধারণাটা অনেক ভালোভাবে সামলাতে পারত। আর এটা... দুঃখিত, আমি এইমাত্র লাইট জ্বালালাম, কারণ আমাদের... এখন যাঁরা শুনছেন, তাঁদের জন্য বলি, এই মুহূর্তে কোনো আলো নেই, কেপ টাউনে মাঝেমধ্যেই বিদ্যুৎ থাকে না। এইমাত্র নিজের চোখে আলো ঢেলে দিচ্ছি, কিন্তু সমস্যা নেই। কিন্তু স্টার্টআপ কালচার নিয়ে সেই কথায় ফিরে গেলে এটা মজার, কীভাবে মানুষ মজার ব্যাপার হলো, জিনিসের মালিকানা নিয়ে অনেক বেশি আটকে থাকে, আর তারপর হয়তো কাজটা একটু আটকে যায়, বুঝতে পারছেন?
Isaac: হ্যাঁ, স্টার্টআপ হওয়াটা যে খোলা থাকে... মানে খেলার মতো কাজের কালচার হয়, সেটা নিশ্চিত বলতে পারি না। Google-এ মানুষ অনেকটাই খেলার মতো কাজ করত, তারা যা করত সেটা উপভোগ করত। তারা এটা করে কারণ তারা এটা উপভোগ করে। তারা এ নিয়ে খুব বন্ধুত্বপূর্ণ ছিল, খুব খোলামেলা ছিল। অন্য কিছু কর্মক্ষেত্রের কালচার হয়তো জিনিসটা উপভোগ করার জন্য করা নয়, বরং এটা একটা চাকরি, বা এটা আমার code, আমি জানি এটা কীভাবে কাজ করে, অন্য কেউ এতে হাত দিতে হবে না। এই কর্মক্ষেত্রের কালচার কীভাবে বদলায়, তা আমি ঠিক জানি না। কিন্তু Google সত্যিই এমন একটা মনোভাব গড়ে তুলেছিল যে সবাই সব code-এ ঢুকতে পারে। আপনারা সবাই এটা পরিবর্তন করার ক্ষমতা রাখেন। আপনি যা সঠিক মনে করেন, সেটাই করুন। আর আমার বর্তমান চাকরিতে আমার বর্তমান ম্যানেজারও আমাকে অনেক স্বাধীনতা দিয়েছেন। তিনি বলেন, আচ্ছা, তুমি ঠিক করার মতো কিছু পেয়েছ? তাহলে ঠিক করে ফেলো। যেখানে উন্নতি করা যায় এমন জায়গা পেয়েছ? আমি সরে যাচ্ছি। কী সাহায্য করতে পারি বলো। তাই আমি আমার কাজের অনেকটাই নিজে ঠিক করতে পারি, আর যদি আমি ভাবি, আহ, এটা আরও ভালো করতে পারি, তিনি বলেন, হ্যাঁ, দারুণ, করে ফেলো।
Jonathan: আচ্ছা, দারুণ। আর আপনার... কোম্পানির সদর দপ্তর ইস্ট কোস্টে, আমি কি ঠিক বলছি, তাই আপনি আসলে রিমোটে কাজ করেন? আমার মনে পড়ে আপনি বলেছিলেন আপনি ওখানে চলে যেতে চলেছেন, তারপর COVID এসে সব শেষ করে দিল। রিমোট কাজ, দূরত্ব, সময়ের ব্যবধান, এসব কেমন লাগছে? এগুলো কি আপনাকে প্রভাবিত করে?
Isaac: অফিসে থেকে মানুষের সঙ্গে সরাসরি মেশা আমার সত্যিই মিস হয়। তাই ওই দিকটা আছে। সময়ের ব্যবধান নিয়ে... আমার টিম সময়ের পার্থক্যটা খুব ভালোভাবে সামলে নিয়েছে। আমি আমার বাকি টিমের চেয়ে তিন ঘণ্টা পিছিয়ে আছি। একটা ছোট দৈনিক স্ট্যান্ডআপ আছে, যেটা আমি মিস করি। আমাদের দুটো আলাদা প্রোডাক্টের জন্য দুটো দৈনিক স্ট্যান্ডআপ আছে। তাই প্রথমটা আমি মিস করি, আর আমার টিম সেটা সামলাতে খুব সাহায্য করেছে, আর আমরা অভ্যন্তরীণভাবে Slack অনেক ব্যবহার করি। তাঁরা খুব ভালোভাবে প্রতিদিন একটা Slack থ্রেড চালান, যেখানে সমস্যাগুলো থাকে, যাতে আমি আপডেট পেয়ে যাই, আর কিছু দরকার হলে আমাকে পিং করেন। আমি আমার সাধ্যমতো দ্রুত সাড়া দেওয়ার চেষ্টা করি, আর সকালে যত দ্রুত সম্ভব এসব দেখে নিই। তাই এটা একটু... সময়ের ব্যবধানটা ভালো নয়, কিন্তু খুব খারাপও নয়, আমরা এটা বেশ ভালোভাবেই সামলে নিয়েছি। আর উল্টো দিকটাও আছে, তাঁরা জানেন টিমে এমন একজন আছেন যিনি একটু দেরিতে জেগে থাকেন। তাই কিছু সহকর্মী বলেন, দেখো, ইস্ট কোস্টে তখন 6 PM, আর বলেন, আহ, এটা তো ভেঙে গেছে। হেই, Isaac তো ওয়েস্ট কোস্টে, ও এটা ঠিক করে দিতে পারে, কারণ ওখানে তো এখনো 3 PM। তাই এটা দুই দিকেই কাজে লাগে। হ্যাঁ, তারপর...
Jonathan: হ্যাঁ।
Isaac: হ্যাঁ, আমি Google ছাড়ি ২০১৯ সালে, দুঃখিত, ২০২০ সালে। ইন্টারভিউ দিয়েছিলাম ২০১৯ সালে। ২০২০ সালের মে মাসে যোগ দেওয়ার কথা ছিল। ২০২০ সালের এপ্রিল বা আগস্টে চলে যাওয়ার পরিকল্পনা ছিল, কিন্তু COVID শুরু হলো, আর অফিস বন্ধ হয়ে গেল, আর তখন শুধু বলা হচ্ছিল, অফিস এখনো খোলেনি, অফিস খুললেই উনি চলে যাবেন। তারপর মহামারির দুই বছর পর অফিস আবার খুলতে শুরু করল। তখন আমি ভাবলাম, জানেন, আমি আর নিশ্চিত নই যে যেতে চাই। নিউ ইয়র্ক শুনতে সত্যিই দারুণ লাগছিল, সেখানে সব ব্যবসা খোলা, নানা ভেন্যু আর কী কী চলছে। কিন্তু এখন মহামারি চলছে, আর অনেক কিছুই আর ততটা দারুণ শোনাচ্ছে না। তাই দুই বছর রিমোটে কাজ করার পর আমি রিমোট পদে চলে গেলাম।
Jonathan: আর আপনি কি শহরের মানুষ, নাকি গ্রামের, নাকি মাঝামাঝি? মানে কী? কারণ নিউ ইয়র্ক তো শহর। একেবারে ১০০% শহর। মানে, এ নিয়ে দুটো কথা নেই। বুঝতে পারছেন? তাই সেটা নিশ্চয়ই বেশ বড় পরিবর্তন হতো। হ্যাঁ। তবু দারুণ তো।
Isaac: আমি বড় একটা মেট্রো এলাকাতেই বড় হয়েছি, তাই শহরের জীবন আমার কাছে নতুন কিছু নয়। এখন আমি সাবার্বে থাকি। আমি হাইকিং আর সাইক্লিং উপভোগ করি, আর যতটা পারি বাইরে থাকার চেষ্টা করি। তাই দারুণ হাইকিং আর সাইক্লিং ট্রেইলের কাছে সাবার্বে থাকা আমার ভালো লাগে। নিউ ইয়র্কে চলে যাওয়া নিশ্চয়ই বড় পরিবর্তন হতো। কিন্তু মাঝেমধ্যে জীবনটাকে মিশিয়ে ফেলাও খারাপ না, আমি ভাবি। আর নিউ ইয়র্কে জীবনটা যদি একেবারে অপছন্দ হয়, তো আবার সরে যাব।
Jonathan: সেটা করা তত কঠিন নয়। তবে দারুণ। তাহলে এখন আপনি সম্ভবত, ভুল হলে শুধরে দেবেন, অনেক সময় স্ক্রিনের সামনে কাটান, অফিসে বা হোম অফিসে, যাই হোক। আপনি কি প্রতিদিন একটু বের হন? স্ক্রিনের দুনিয়া আর বাইরের দুনিয়ার মধ্যে ভারসাম্য কীভাবে রাখেন? নাকি দিনে এমন একটা সময় রাখেন যখন মনে হয়, আমাকে এখন বেরোতেই হবে, বাইরে গিয়ে অন্য কিছু করতে হবে?
Isaac: হতো যদি ভালো হতো। কিছু দিন, কিছু মাস, কিছু বছর আমি অন্যদের চেয়ে ভালো থাকি। ২০২০ সালে প্রায় প্রতিদিন সাইক্লিং করতাম। বেশিরভাগ সপ্তাহান্তে আমি বাইরে যাই। সপ্তাহে একবার হাইকিং করার চেষ্টা করি। সেটা আমি খুব ভালোভাবে করতে পারিনি, তবে হাইকিংয়ে যাই। ঋতুর উপর নির্ভর করে। আমি ক্যালিফোর্নিয়ায় থাকি। কিছু সপ্তাহ একেবারে গরম থাকে। এই তো সবে একটা হিটওয়েভ গেল, যখন প্রায় এক সপ্তাহ টানা ৪০ ডিগ্রি সেলসিয়াসের বেশি ছিল। তখন বাইরে যাওয়া কঠিন হয়ে যায়। আমরা ক্যালিফোর্নিয়ায় থাকি, এখানে দাবানল হয়, তাই কখনো এক-দুই সপ্তাহ বাইরের বাতাস শ্বাস নেওয়ার জন্য পুরোপুরি নিরাপদ থাকে না। তাই কিছু সপ্তাহ ক্যালিফোর্নিয়ায় বাইরে থাকা কঠিন। আর মহামারির মধ্যে ঘরে থাকাও কঠিন। তাই কিছু সপ্তাহ নিশ্চিতভাবেই আছে যখন আমি অন্যদের চেয়ে অনেক বেশি ঘরে থাকি। তবে বাইরে যাওয়া আমার ভালো লাগে। এমন হয়েছে, জানেন, টানা ছয় মাস আমি হাইকিং করেছি, অন্তত প্রতি দুই সপ্তাহে একবার হাইকিংয়ে গিয়েছি।
Jonathan: আর তারপর।
Isaac: এমন সময়ও গেছে যখন মাসে একবার করে ক্যাম্পিং করেছি, মানে টানা ছয় মাস। তাই কিছু সময় আছে যখন আমি অন্যদের চেয়ে ভালো থাকি, আবার কিছু সময় আছে যখন টানা দুই সপ্তাহ ঘরেই পড়ে থাকি।
Jonathan: হ্যাঁ, দারুণ। তাহলে Isaac, পরের... হয়তো, জানি না, হয়তো এত দূর ভাবেননি, কিন্তু আগামী পাঁচ বছর আপনার জন্য কেমন দেখতে? মানে, আপনার কি কোনো ধারণা আছে, নাকি আপনি ভাবছেন আমি নিজের একটা ব্যবসা শুরু করতে চাই, বা এটা করতে চাই, নাকি শুধু ভাবছেন, আহ, জীবনটা উপভোগ করছি, যেখানে আছি সেখানেই খুশি?
Isaac: ওয়েস্ট কোস্টে যাওয়ার আগে আমি ভাবতাম, আমার ভবিষ্যৎ কেমন হবে তা আমি বেশ ভালোভাবেই বুঝি। কিন্তু সেসব উল্টে যাওয়ার পর আমি শিখলাম, পরের বছর কী হবে তা বলা সত্যিই কঠিন, পাঁচ বছরের কথা তো দূরের। আমি বেশ খুশি। এই তো সম্প্রতি চাকরি বদলেছি। প্রায় দুই, আড়াই বছর আগে চাকরি বদলেছি। বর্তমান চাকরিটা বেশ উপভোগ করছি, তাই শিগগির বদলাবে বলে মনে হয় না। আগামী দুই, তিন বছর, পাঁচ বছর একই চাকরিতে থাকতে পারলে খুশি হব। ক্যালিফোর্নিয়ায় থাকতে আমার দারুণ লাগে। হাইকিং, বাইকিং, ক্যাম্পিং, এসব করতে পারা আমার ভালো লাগে। তাই শিগগির ক্যালিফোর্নিয়া ছাড়ব বলে মনে হয় না। আর শিগগির ওই চাকরিও ছাড়ব বলে মনে হয় না, কারণ ওখানে কাজ করতে সত্যিই বেশ ভালো লাগে। তাই আমি বেশ সন্তুষ্ট, আর বড় কোনো... বড় কোনো পরিবর্তনের পরিকল্পনা নেই, তবে সত্যিই বলা কঠিন।
Jonathan: দারুণ। আচ্ছা, আমার আরও দুটো প্রশ্ন আছে, যেগুলোতে আপনার দৃষ্টিভঙ্গি জানতে চাই। প্রথমটা সম্ভবত সেই প্রশ্ন নয়, যার জন্য আমি আপনাকে প্রস্তুত করেছিলাম, কিন্তু... তো ধরুন, এই মুহূর্তে আপনার অফিসে ১০ জন ঢুকল, একেবারে অপরিচিত ১০ জন, আর তাঁরা প্রোগ্রামিং সম্পর্কে কিছুই জানেন না, তাঁদের মধ্যে কেউ বীণাবাদক, কেউ মালী, ইত্যাদি। প্রোগ্রামিং শেখা শুরু করার জন্য আপনি তাঁদের শীর্ষ তিনটি পরামর্শ কী দিতেন? মানে, যদি এটাকে ছোট করে বলতে হত, যা যা করতেই হবে, তবে পরামর্শগুলো কী হত?
Isaac: আমার এক নম্বর পরামর্শ হবে, এমন একটা সমস্যা খুঁজে বের করার চেষ্টা করুন, যেটা আপনি প্রোগ্রামিং দিয়ে সমাধান করতে পারেন। তাই আপনার হাতে এমন একটা নির্দিষ্ট প্রকল্প থাকবে, যা আপনাকে এগিয়ে নিয়ে যাওয়ার প্রেরণা জোগায়, এমনকি সুনির্দিষ্ট লক্ষ্য মনে না থাকলেও। প্রোগ্রামিং শেখা শুরু করা খুব কঠিন, অন্য যেকোনো দক্ষতার মতোই, প্রোগ্রামিং শিখতে যথেষ্ট অধ্যবসায় বা দৃঢ়তা লাগে। আপনাকে শুধু লেগে থাকতে হবে। শুরুতে এটা খুব কঠিন লাগতে পারে। খুব হতাশারও হতে পারে। সামনে এগিয়ে নিয়ে যাওয়ার মতো কিছু না থাকলে ছেড়ে দেওয়া খুব সহজ। তাই সম্ভব হলে, যেটা আপনি সত্যিই করতে চান, এমন কিছু থাকলে অনেক সাহায্য হয়। এসব আসলে একই সূত্রের পরামর্শ। শুধু লেগে থাকতে হবে। নিজের প্রতি ধৈর্য ধরা আর এটা মেনে নেওয়া অনেক সাহায্য করে যে আপনি একটা নতুন দক্ষতা শিখছেন, আর আপনি অনেকবার ফেল করবেন। আমি এমন কিছু মানুষ দেখেছি যাঁরা প্রোগ্রামিং শিখতে চেয়েছেন, তারপর হতাশ হয়ে বলেছেন, আহ, আমি সাধারণত এসব কাজে ভালো, কিন্তু এটা তো শুরু থেকেই হচ্ছে না। আমি বলি, হ্যাঁ, ব্যর্থতা শেখার প্রক্রিয়ারই একটা অংশ। আর কোনো কিছুতে ব্যর্থ হওয়া যদি আপনার কাছে অস্বস্তিকর হয়, তাহলে নতুন দক্ষতা শেখা আপনার জন্য সত্যিই কঠিন হয়ে যেতে পারে। আপনাকে নিজের প্রতি আর প্রক্রিয়ার প্রতি ধৈর্য ধরতে হবে, আর শুধু লেগে থাকতে হবে।
Jonathan: কাজে লাগল। মানে, আমি বলব, ব্যাপারটা এমন... আমি এই তো সবে বুঝলাম মেথড কীভাবে কাজ করে। আর সেটা তো শুধু ভেতরে ভেতরে চলছিল, কারণ অনেক জ্ঞান... মানে, মানুষ যখন কোনো বিষয় নিয়ে কথা বলে, বিশেষ করে শিক্ষা দেওয়ার সময় অনেকটা ধরে নেওয়া জ্ঞান থাকে। তাই হঠাৎ সবাই মেথড শব্দটা ছুড়তে শুরু করল। আমি ভাবি, মেথড আবার কী? এটা কী হচ্ছে? আর Go নিয়ে কোহোর্টের মধ্য দিয়েই আমি বুঝতে শুরু করলাম, আহ, মেথড এভাবে কাজ করে। ব্যাপারটা প্রায় সেই মুহূর্ত যেখানে আকস্মিক বোধোদয় হয়, কিন্তু আমাকে এই পরিবেশ আর এই পরিভাষার মধ্যে অনেকক্ষণ ডুবে থাকতে হয়েছিল, যাতে এটা ধীরে ধীরে মিশে যায়। আমি বলব, আমার সবচেয়ে বড় শিক্ষা ছিল, সবটা একবারে শেখার চেষ্টা না করা, বরং একটা সহজ ধারণা নিয়ে টুকরো টুকরো করে এগোনো। কারণ সবকিছু এত পরস্পর জড়িত যে শেষে আপনি মানসিক মডেলটা গেঁথে ফেলতে পারেন, যেটা সত্যিই গুরুত্বপূর্ণ। তাই এটা দারুণ ছোট একটা হাতিয়ার। আমি সবাইকে Isaac-এর পরামর্শটা জানাব, ধৈর্য ধরুন, নিজের প্রতি সদয় থাকুন, আর টুকরো টুকরো করে এগোন। দারুণ। আচ্ছা। তাহলে আমার শেষ প্রশ্ন, আর আপনাকে দিনের বাকি কাজ সারতে দেওয়ার আগে, আমরা টিম হিসেবে আলোচনা করেছিলাম টেক ইন্ডাস্ট্রিতে আপনি যে পাহাড়ে মরতে রাজি, এমন একটা ধারণা নিয়ে। শুনতে বেশ নাটকীয় আর নাটকীয়তার অভাব নেই। মূলত এর মানে হলো, টেক ইন্ডাস্ট্রিতে এমন কোন একটা জিনিস আছে যা আপনি একেবারে মূল বলে বিশ্বাস করেন, এমন একটা অটল মনোভাব বা দৃষ্টিভঙ্গি? একটা ভালো উদাহরণ, জানি না, খুব সাধারণভাবে বলতে গেলে, আমি সবসময় ফাংশন আগে লিখি, তারপর front end করলে CSS লিখি। তাই আগে কার্যকারিতা, তারপর যুক্তি, তারপর বাকিটা। আবার হতে পারে, আমাদের একজন ছিলেন, রেবেকা, যিনি Unison ট্র্যাক চালান। তিনি বলেছিলেন, প্রতিভাবান কিন্তু একগুঁয়ে আর সঙ্গে কাজ করা কঠিন এমন একজন থাকার চেয়ে, তিনি বরং ৫০ জনকে চাইতেন যাঁরা সত্যিই টিমে কাজ করতে আর একসঙ্গে সমস্যা সমাধান করতে ভালোবাসেন, কারণ একজন প্রতিভাবান পুরো ম্যানেজমেন্ট ব্যান্ডউইথ খেয়ে ফেলেন। সেটা ছিল তাঁর একটা, আর আমি কথাটা সুন্দরভাবে বলেছি, কিন্তু টেক জগতে এমন কোন বিষয় আছে যে পাহাড়ে আপনি মরতে রাজি, যা নিয়ে কোনো আপস নেই?
Isaac: এটা সম্ভবত Google যেভাবে কাজ করে তার খুব বেশি প্রভাব। Google-এ readability নামে একটা ধারণা আছে, যেখানে code পড়তে সহজ হওয়া উচিত। আর আমি যখন code লিখি, আমার চাওয়া থাকে আমার code পড়তে আর বুঝতে সহজ হোক। আমি অনেক code দেখেছি, বিশেষ করে code-এ এফিশিয়েন্সি, বেঞ্চমার্কিং আর code দ্রুত করার দিকে অনেক জোর দেওয়া হয়। আর আমি প্রায়ই স্বীকার করি, আমি যেভাবে করছি সেটা সবচেয়ে এফিশিয়েন্ট নাও হতে পারে, কিন্তু code পড়তে সহজ হলে, অদক্ষ হলেও পড়তে সহজ এমন code-এর চেয়ে আমি সহজে পড়া যায় এমন code পছন্দ করি। হ্যাঁ, একটা কমন উক্তি আছে, ঠিক কার নামে প্রচলিত জানি না, যে অকাল অপটিমাইজেশনই সব অনিষ্টের মূল। আর যখনই কেউ বলে, আহ, এটা আরও এফিশিয়েন্ট করা যায় না? আমি বলি, এটা কি আরও এফিশিয়েন্ট হওয়া দরকার? আপনি কি প্রোডাকশনে চালাচ্ছেন আর এফিশিয়েন্সির সমস্যায় পড়ছেন? প্রোডাকশনে ব্যবহারের জন্য এটা কি খুব ধীর? আপনি যদি প্রোডাকশনে সত্যিই code-এ কোনো সমস্যা ভোগ না করে থাকেন, যেখানে এটাকে আরও এফিশিয়েন্ট হওয়া দরকার, তবে কেন এটা আরও এফিশিয়েন্ট করবেন? এখনই এটা পড়তে সহজ। রক্ষণাবেক্ষণ করাও সহজ। অন্য মানুষ বুঝতে পারে কী চলছে। কয়েকটা CPU সাইকেল বাঁচাতে আপনি ভালোভাবে লেখা, সহজে ব্যবহার আর সহজে রক্ষণাবেক্ষণ করা code কেন ছেড়ে দেবেন? বিদ্যুৎ কি যথেষ্ট সস্তা, আর CPU কি যথেষ্ট সস্তা যে শুধু অপটিমাইজ করার জন্য আমাদের code অপটিমাইজ করা লাগবে না?
Jonathan: হ্যাঁ, এটা সবসময় মজার, কারণ এটা সেই জিনিসগুলোর একটা, যেখানে আমি বলি... আমাদের প্রোগ্রাম কম্পাইল হয়ে ৩০ মিলিসেকেন্ডে চলল। আর ওরা বলে, আহ, কিন্তু আমরা এটা ২০ মিলিসেকেন্ডে নামিয়ে এনেছি। আমি বলি, আমি বলতে পারব না। কোনটা দ্রুত, কোনটা ধীর, তা আমি বলতে পারব না। এটা তো দ্রুতই মনে হচ্ছে। তাই আমার মনে হয় এটা ভালো একটা পয়েন্ট। আমি নিশ্চিত আপনার code পড়তে আমার দারুণ লাগবে, তবে এটা দারুণ। Isaac, আপনার সময় দেওয়ার জন্য, ভোরে উঠার জন্য, আর দক্ষিণ গোলার্ধে লোডশেডিং সহ্য করার জন্য আপনাকে অনেক ধন্যবাদ। আর আমি তো একেবারে অন্ধকারে বসে আছি, এটা নিশ্চয়ই আপনার কাছে বেশ মজার লাগছে। তবে সময় দেওয়ার জন্য অনেক ধন্যবাদ। আর আগামী লার্নিং কোহোর্টে, মেন্টরিং স্ট্রিমে, এসব জায়গায় আপনাকে দেখার জন্য অপেক্ষা করছি। আর Exercism-এ এবং সব জায়গায় আপনার অবদানের জন্য ধন্যবাদ। অনেক কৃতজ্ঞ। আর হ্যাঁ, আবারও অনেক ধন্যবাদ। এক মুহূর্তেই আবার দেখা হবে। না, আনন্দই হয়েছে। ভালো থাকুন, Isaac। বিদায়।
Isaac: আবারও অনেক ধন্যবাদ। আনন্দই হয়েছে। ভালো থাকুন, Isaac।
আমাদের কমিউনিটির সদস্যদের কথা শুনুন, শিখুন এবং অনুপ্রাণিত হোন।