গ্যাব্রিয়েল নেলে থাকেন দক্ষিণ জার্মানিতে, ব্যাডেন-ব্যাডেনের কাছে। তিনি তাঁর প্রেমিকা ও দুটি বিড়ালের সঙ্গে একটি অ্যাপার্টমেন্ট ভাগ করে থাকেন। তিনি সিয়েগেন বিশ্ববিদ্যালয়ে গণিত ও জার্মান ভাষার শিক্ষক হওয়ার পড়াশোনা করেছিলেন, যা তিনি ২০০৮ সালে শেষ করেন।
Jonathan: হ্যালো, সবাইকে শুভেচ্ছা। আমার নাম Jonathan। আজ সন্ধ্যায় আপনার হোস্ট হওয়া আমার জন্য আনন্দের। আজকের অনুষ্ঠানে আমার সাথে এমন একজন অতিথি আছেন, যাঁকে পেয়ে আমি নিজেকে খুব ভাগ্যবান মনে করছি। আমি আপনাদের পরিচয় করিয়ে দিতে চাই Gabriel Nelle-এর সঙ্গে। Gabriel আমাদের Exercism-এর অন্যতম কোর কন্ট্রিবিউটর। তিনি বিশেষভাবে Go ট্র্যাক-এ অনেক জড়িত ছিলেন, তবে বিস্তারিত তিনি নিজেই একটু পরে বলবেন। তবে এটুকু বলি, Gabriel, আপনাকে পেয়ে দারুণ লাগছে। আমাদের সাথে যোগ দেওয়ার জন্য ধন্যবাদ, এবং আজকের অনুষ্ঠানের সব শ্রোতার মতো আপনারও সমান আনন্দ হবে বলে আশা করি। তাহলে Gabriel, আপনি শুরু করুন। বলুন তো আপনি কোথায় থেকে এসেছেন এবং কীভাবে বর্তমান জায়গায় পৌঁছালেন?
Gabriel: হ্যাঁ। হ্যালো। আমি Gabriel। আমাকে আমন্ত্রণ জানানোর জন্য ধন্যবাদ। আমি দক্ষিণ জার্মানি থেকে এসেছি, সেখানেই বড় হয়েছি, এখনও সেখানেই আছি, একই জায়গা নয়, তবে এখনও দক্ষিণ জার্মানিতেই। হ্যাঁ। আমি আশির দশকের শুরুতে জন্মানো মানুষ, ৮১ সালে জন্মেছি। আর আমার মনে হয় আমার গল্পটা আশির দশকের শেষের দিকে শুরু, যখন আমার বাবা তাঁর প্রথম কম্পিউটার বাড়ি নিয়ে আসেন। তাই আমার মনে হয় গল্পটা সেখান থেকেই শুরু। অন্তত লেখার গল্পটা।
Jonathan: হ্যাঁ।
Gabriel: এতে MSOs ছিল, কোন সংস্করণ ছিল ঠিক জানি না। আমার মনে হয় পুরনো সংস্করণ ছিল, কারণ আমার মনে পড়ে, বাবা এটা বাড়ি নিয়ে এসেছিলেন কারণ কোম্পানিতে এটা মূলত ফেলে দেওয়া হয়েছিল, তারা নতুন কম্পিউটার পেয়েছিল, তাই তিনি সেটা বাড়ি নিয়ে আসতে পেরেছিলেন। আর হ্যাঁ, কম্পিউটার সম্পর্কে এটাই ছিল আমার প্রথম ধারণা। MS। এটা মজার আর অদ্ভুত।
Jonathan: লাইনগুলো, কালো স্ক্রিনে রঙিন লাইনগুলো? সেটা কি সুন্দর ছিল?
Gabriel: হ্যাঁ, কালো পটভূমিতে সাদা। হ্যাঁ, মূলত তাই। আর মূলত বেশিরভাগই ছিল কমান্ড লাইন, যেটার সঙ্গে আমি প্রথম পরিচিত হই। তারপর পরে বাবার সঙ্গে, ৯০ সালে, ১৯৯১ সালের দিকে, বাবা আমাদের Q basic-এ প্রথম for লুপ শেখান। তখন আমার বয়স ১০। আর তখন শব্দভান্ডার শেখাও ছিল। বাবা শব্দভান্ডার শেখার একটা প্রোগ্রাম কিনেছিলেন, আর সেটা OS-ভিত্তিক ছিল, আর আমি মনে করি ক্লিক করার জন্য মাউস ছিল, তবে শতভাগ নিশ্চিত নই। হয়তো পরে ছিল। তাই নিশ্চিতভাবে ওই সময়েই আমি প্রথম কম্পিউটার নিয়ে কাজ শুরু করি, আর কয়েকবার এটা ভেঙেও ফেলি। বাবাকে কয়েকবার ঠিক করতে হয়েছিল। তাই এটা শেখার ব্যাপারে আমি নিশ্চিতভাবেই আগ্রহী ছিলাম। এমনভাবে নয় যে আমি বসে নিজেকে বলতাম, আমাকে এটা শিখতেই হবে। আমি সত্যিই আগ্রহী ছিলাম এবং বুঝতে চাইতাম এটা দিয়ে কী করা যায়। এটা আমাকে কৌতূহলী করে তুলেছিল।
Jonathan: আর আপনার বাবা, তিনি কি বিশেষভাবে কম্পিউটার নিয়ে কাজ করতেন, না কি ব্যবসার কাজে ছিলেন আর ঘটনাক্রমে একটি কম্পিউটার বাড়ি নিয়ে এসেছিলেন? নাকি তিনি কম্পিউটার বাড়ি আনার পেছনে নির্দিষ্ট কোনো কারণ ছিল? কম্পিউটারজনিত কারণ, নাকি কারিগরি কারণ?
Gabriel: হ্যাঁ, তিনি আসলে পেশায় ইলেকট্রিশিয়ান, যা শিখেছিলেন। কিন্তু তখন তিনি Bosch-এ কাজ করতেন এবং ইলেকট্রনিক্স ডিপার্টমেন্টে কাজ করতেন, যেখানে গাড়ির জন্য নতুন চিপ বা নতুন জিনিসের উন্নয়ন হতো। আর সেখানে অবশ্যই কম্পিউটার ছিল, আর তিনি বেশ আগেই কম্পিউটার, নেটওয়ার্ক প্রিন্টার আর এসবকিছুর দায়িত্বে ছিলেন। তাই এভাবেই তিনি এতে ঢুকেছিলেন। তিনি মূলত সেখানে সবকিছু কাজ করানোর জন্য সবকিছু করতেন। আর যেহেতু তাঁর ডিপার্টমেন্টের বেশিরভাগের মতো তাঁর ডক্টরেট ডিগ্রি ছিল না, তাই তিনি মূলত এসব দেখাশোনা করতেন এবং কম্পিউটার সম্পর্কে অনেক কিছু শিখেছিলেন। হ্যাঁ।
Jonathan: হ্যাঁ। ঠিক আছে, দারুণ। দুঃখিত, আমি মাঝখানে ঢুকে পড়লাম। তাহলে আপনি বলছিলেন, আপনি ঘাঁটাঘাঁটি করছিলেন, কয়েকবার ভেঙে ফেলেছিলেন, এটাই ছিল আপনার কম্পিউটার ও হার্ডওয়্যার আর এসবের সঙ্গে প্রথম পরিচয়। তারপর কী? সেখান থেকে এরপর কী হলো? অগ্রগতি কেমন ছিল?
Gabriel: আমার মনে হয় পরের বড় ধাপ ছিল আমার নিজের কম্পিউটার পাওয়া, সেটা ছিল, আমি বলব, হয়তো পাঁচ-ছয় বছর পরে, যখন আমি তরুণ ছিলাম। আর আমি কম্পিউটার নিয়ে আরও আগ্রহী হলাম, স্কুলেও কিছু অংশ ছিল। আমি কম্পিউটারে হোমওয়ার্ক লিখতে শুরু করলাম, এসব। আর তখনই Word আর MS Word-এর যুগ, আর আমি বলব এটা একদিন শুরু হলো, আমার বাবা সবসময় আমাদের গির্জার জন্য কিছু সাহিত্যের কাজ করতেন। আমরা খুব ছোট একটা গির্জায় বড় হয়েছি, আর আমাদের এই সাহিত্য ছিল যা আমরা মূলত ব্যবহার করতাম, আর বাবা সেই সাহিত্য ডিজিটাইজ করছিলেন বা ডিজিটাইজ করতে সাহায্য করছিলেন। শুরুতে এটা ছিল একটি সাইড প্রজেক্ট, আর এর ডেটা নিয়ে। এটাই আসলে আমার প্রথম ফুল-টাইম কাজ হয়ে গেল, এবং কাজ করা। ওই, আপনি কি ওটা দেখতে পারেন? যুক্তরাষ্ট্রের প্রকাশকের জন্য কাজ করা, যিনি সেই সাহিত্যের দায়িত্বে ছিলেন।
Jonathan: হুম।
Gabriel: মূলত বাবা আমাকে বললেন, হ্যাঁ, আমার এই সব ম্যাক্রো আছে। আমি সেগুলো Euro script-এ লিখেছি, যা মূলত Word-এর একটা সংস্করণের ভিত্তিতে ছিল, এক অর্থে Word-এর আগের। আর আমি এখন Word-এ যেতে চাই, আমার সব ম্যাক্রো Word-এ দরকার। আমি বললাম, ঠিক আছে। ঠিক আছে। এভাবেই আমি Word প্রোগ্রামিং শুরু করলাম। মানে Visual Basic for Applications। প্রথমে ম্যাক্রো রেকর্ড করা যেত। কোড দেখে বোঝা যেত এটা কী করছে, উন্নত করা যেত, আর ম্যাক্রোকে এতটা উন্নত করা যেত যে তারা প্রায়... আগে ছিল, আপনি কার্সর এখানে রাখবেন, তারপর একটা কী চাপবেন, তারপর পরের কয়েক লাইনে কিছু করবে। আর শেষে এটা পুরো Word ডকুমেন্ট উপর থেকে নিচ পর্যন্ত প্রক্রিয়া করত, সম্পূর্ণ স্বয়ংক্রিয়ভাবে। আর মূলত এটাই ছিল সেই কাজের জন্য আমার লেখা অনেক ম্যাক্রোর প্রবেশদ্বার। এটা বড় ঢেউ তুলেছিল, আর যাঁরা বাবাকে তাঁর ফ্রি সময়ে এই ধরনের কাজ দিয়েছিলেন, তারা বললেন, ওয়াও, এটা দারুণ। আরও করি, আরও স্বয়ংক্রিয় করি। হ্যাঁ। এভাবেই আমি ঢুকলাম।
Jonathan: তাকে, আপনি আপনার বাবার অনেক সময় বাঁচিয়েছেন।
Gabriel: হ্যাঁ।
Jonathan: সে অর্থে, অল্প বয়সেই।
Gabriel: তা বলতে পারি। তারপর Word-এ ম্যাক্রো লেখা, পরে Excel-এ। আমি ছোট একটি দোকানের জন্য Excel-ভিত্তিক এক ধরনের দোকান সিস্টেম লিখেছিলাম। দোকানটি ছিল জৈব খাবারের ছোট দোকান, ইত্যাদি। তারা মূলত সব দাম লিখে রাখত, তারপর মাথায় বা কাগজে হিসাব করত। শুরুতে এভাবেই চলত। আর আমি সেটার জন্য একটা সিস্টেম লিখলাম, বারকোড স্ক্যানিং আর দাঁড়িপাল্লাসহ, যেখানে কিছু রেখে ওজন করা যেত, রসিদ পাওয়া যেত, তারপর পেমেন্টের সময় গিয়ে সেটা স্ক্যান করা যেত, আর এসব। তাই মূলত সবটাই Excel-ভিত্তিক ছিল। তাই হ্যাঁ, আমি অবশ্যই আজ আলাদাভাবে করতাম। Excel একই সঙ্গে ডেটাবেস আর প্রিন্টিং মেশিন ছিল। আমি সবকিছু Excel-এ, একটি Excel শিটে ফরম্যাট করতাম, তারপর রসিদ প্রিন্টারে প্রিন্ট হতো, এসব। অবশ্যই হ্যাঁ, আমার মনে হয় এটাই আমার ক্যারিয়ারের শুরু ছিল, এক অর্থে।
Jonathan: আপনি তখন কত বয়সে ছিলেন, যখন এসব করছিলেন? আর সেখান থেকে এরপর কী আপনাকে এগিয়ে নিয়ে গেল? এটা কি বিশ্ববিদ্যালয়ের আগে, হাই স্কুলের সময়? আর সেটা কি আপনার ক্যারিয়ারের পথকে bastante প্রভাবিত করেছিল? এক অর্থে?
Gabriel: হ্যাঁ, এসব সবই বিশ্ববিদ্যালয়ের আগে। দোকানের সিস্টেমটা আমি ২০-২১ বছর বয়সে করেছিলাম, আর সেই সময়েই আমি আমার সিভিল সার্ভিস করি।
Jonathan: হ্যাঁ?
Gabriel: ম্যাক্রো লেখা যখন আমার বয়স ১৬-র মতো। মাঝে আমি চিঠির লেবেল প্রিন্ট করার জন্য Access-ভিত্তিক কিছু সিস্টেমও লিখেছিলাম, যাতে চিঠি পাঠানো যায়। মানে ঠিকানা ইত্যাদি। তারপর এল পড়াশোনা, আর অবাক করার মতো, আমি ইনফরমেটিক্স পড়িনি।
Jonathan: ঠিক আছে।
Gabriel: আমি আসলে গণিত ও জার্মান শিক্ষক হওয়ার জন্য পড়াশোনা করেছি। কত বয়স পর্যন্ত? হিসাব করে দেখি। বয়স ১০ থেকে ২০ এবং ১৯। মানে ওই বয়সগুলো। তাহলে পঞ্চম...
Jonathan: তাহলে আপনি
Gabriel: থেকে ত্রয়োদশ শ্রেণি পর্যন্ত।
Jonathan: তাহলে আপনার ক্যারিয়ারের পথ শুরু হচ্ছিল, আর সেটা কী ছিল, সেই সিদ্ধান্তটা কিসের ভিত্তিতে নেওয়া হয়েছিল?
Gabriel: আসলে আমি হয়তো প্রায়ই প্রোগ্রামিংয়ের পথেই যেতাম। কিন্তু সিভিল সার্ভিসের সময় আমি শুধু কারিগরি জিনিসের চেয়ে অনেক বেশি শিখলাম। আমি একটা ছোট দলের অংশ ছিলাম, যারা একটি বৃদ্ধাশ্রমের দায়িত্বে ছিল। সেখানে ৫, ৬টা ঘর ছিল। সেখানে বিভিন্ন মানুষ ছিলেন, আর আমি মূলত একজনের দায়িত্বে ছিলাম। তাঁর বয়স হয়তো ৫৫, ৬০, আর তিনি আলঝাইমার্সে ভুগছিলেন। এটা আমার ওপর বড় প্রভাব ফেলেছিল, কারণ সেই বয়সে এমন কিছুর মুখোমুখি হলে, আপনি বলতে পারেন, তাঁর বয়স ৬০, আর ২০ বছরের একজনের কাছে সেটা বয়সজনিত শোনায়, কিন্তু আমার কাছে পরিষ্কার ছিল যে এটা যে কারও হতে পারে, আমারও হতে পারে। আর এটাই আমাকে জীবনের সামাজিক দিকগুলোতে অনেক বেশি আগ্রহী করে তোলে।
Jonathan: দারুণ।
Gabriel: সামাজিক ক্যারিয়ারের পথ। আর আসলে সেখান থেকেই। মূলত এটাই ছিল সেই সময়ে শিক্ষক হওয়ার সিদ্ধান্তের কারণ। আমি কোড করতে চেয়েছিলাম, কিন্তু আমি পড়াতে বা সহপাঠীদের সাহায্য করতে খুব ভালো ছিলাম, বিশেষ করে স্কুলে। আর গণিত। গণিতই ছিল আমার সবচেয়ে শক্ত দিক, আর আমি এটা সবসময় ভালোবাসতাম। হ্যাঁ, আমি অন্যদের সাহায্য করতে ভালোবাসতাম। তাদের দক্ষতা বাড়াতে, বা তাদের হঠাৎ বুঝে ফেললে আমি দারুণ খুশি হতাম। যখন দেখতাম, এখন তারা ধরতে পেরেছে। হ্যাঁ। তাই আমি, আমি আসলে শিক্ষক হয়ে গেলাম।
Jonathan: ও, দারুণ। আর একটু বলুন, আপনি সিভিল সার্ভিসের কথা বললেন। জার্মানিতে এটা কি বাধ্যতামূলক, প্রত্যেক ছাত্র বা সন্তানকে বিশ্ববিদ্যালয়ে যাওয়ার আগে করতে হয়? এটা জার্মান সংস্কৃতিতে কীভাবে মানিয়ে যায়?
Gabriel: সে সময় এটা ছিল সামরিক বাহিনীতে যাওয়ার বিকল্প। হয় আপনি নয় মাস সামরিক বাহিনীতে যেতেন, নয় মাস, অথবা ১১ মাস সিভিল সার্ভিস করতেন। এটাই ছিল নিয়ম।
Jonathan: ঠিক আছে।
Gabriel: পুরুষদের জন্য, নারীদের জন্য নয়।
Jonathan: জার্মানিতে কি এখনও এমনটাই চলে?
Gabriel: না, এখন আর তা নেই। না, না।
Jonathan: ঠিক আছে। আমি জানি সুইজারল্যান্ডে এটা আছে, আমার স্ত্রী সেখান থেকেই এসেছেন। তাহলে ওই ব্যবস্থা এখনও প্রচলিত। ঠিক আছে। এখন আপনি গণিত করেছেন, শিক্ষক হওয়ার জন্য পড়েছেন, আর স্পষ্টতই প্রোগ্রামিং আপনার জীবনে বেশ গুরুত্বপূর্ণ ভূমিকা রেখেছে। কখন এমন হলো, অর্থাৎ আপনার কি এমন একটা মুহূর্ত এসেছিল যখন আপনি ভাবলেন, আসলে আমি শিক্ষকতায় আছি, এটা উপভোগ করছি, কিন্তু প্রোগ্রামিংয়ের অংশটা এখনও সক্রিয় ও জড়িত? শিক্ষকতা আর প্রোগ্রামিং, এই দুটো কীভাবে ভারসাম্য বজায় রেখেছিল?
Gabriel: আমি কীভাবে আবার প্রোগ্রামিংয়ে ফিরে এলাম? হ্যাঁ।
Jonathan: হ্যাঁ।
Gabriel: হ্যাঁ। তাই আমার পড়াশোনার সময়ে আমি মূলত দুটি সাইড জব করতাম। একটা ছিল শিক্ষকতা। আমি একটি টিউটরিং এজেন্সিতে পড়াতাম। বিশ্ববিদ্যালয়েও পড়াতাম, ছোটদের, মানে মূলত গণিত, বেশিরভাগ প্রথম ও দ্বিতীয় সেমিস্টারে। আর একই সময়ে আমার একটি টেক কোম্পানিতে চাকরি ছিল। সেটা মূলত Access-ভিত্তিক ছিল।
Jonathan: হুম।
Gabriel: কোম্পানিটি কার শেয়ারিংয়ের জন্য হার্ডওয়্যার ও সফটওয়্যার করত, আর এমন কোম্পানির জন্য যাদের অনেক গাড়ি ছিল এবং তারা কর্মীদের ভাড়া দিত। আর হ্যাঁ, সেখানে আমি প্রথমে ডকুমেন্ট রাইটার হিসেবে শুরু করি, তারপর তারা বুঝল আমি প্রোগ্রামও করতে পারি। তাই আমি দ্রুত প্রোগ্রামিং এলাকায় চলে যাই। হ্যাঁ। তারপর আমি বলব, শেষের দিকে, পড়াশোনার যে অংশে স্কুলে যেতে হতো, ছয় সপ্তাহ, কখনও চার সপ্তাহ ইত্যাদি, তখন থেকে জিনিসগুলো বদলাতে শুরু করল। আর আমার মনে হয়, খুব অভিজ্ঞ এবং খুব নিবেদিত কিছু শিক্ষকের সঙ্গে কথা বলেও আমার কাছে স্পষ্ট ও প্রিয় হয়ে উঠল যে সময় অনেক বদলে গেছে। ছাত্ররা অনেক বদলে গেছে। একজন শিক্ষক আমাকে বলেছিলেন, তিনি সবসময় পঞ্চম ও ষষ্ঠ শ্রেণিতে পড়াতেন, আর আমাকে বলছিলেন, পাঁচ বছর আগে তাঁর ক্লাসে একজন ছাত্র সমস্যাগ্রস্ত ছিল, এক অর্থে যে স্কুলটা পুরো নয়, বাবা-মায়ের বিবাহবিচ্ছেদ বা বাড়িতে সমস্যা ইত্যাদি। আর এখন তাঁর ক্লাসে ৫০% এরও বেশি।
Jonathan: নিশ্চয়ই।
Gabriel: আর সেটা ছিল ১০ বা ১৫ বছর আগের কথা। ২০০৬ বা ২০০৭, তাই ১৫ বছর আগে। আর এটা দেখায় জিনিস কতটা বদলেছে। আর আমার কাছে এটাও খুব স্পষ্ট ছিল যে আজকাল অনেক ছাত্র আর শিখতেই চায় না। আর শিক্ষক সবসময়, মূলত শিক্ষকই সবসময় শেষ। সবার শেষে। হ্যাঁ। অভিভাবক, প্রধান শিক্ষক আর ছাত্ররা। তারা মূলত সবাই শিক্ষকের ওপর প্রভুত্ব করে। হ্যাঁ। শিক্ষকই সবসময় শেষ ভরসা, এক অর্থে, বা ইংরেজিতে কীভাবে বলবেন জানি না। তাঁকেই সব দায়িত্ব নিতে হয়, অথচ কোনো অধিকার থাকে না।
Jonathan: কাজ করার authority, হ্যাঁ। হ্যাঁ।
Gabriel: হ্যাঁ।
Jonathan: তাহলে আপনার সিদ্ধান্ত? ওহ, দুঃখিত, আমি আপনাকে থামিয়ে দিচ্ছি। বলুন, বলুন।
Gabriel: অন্তত এটা আমাকে অনেক ভাবিয়েছিল। বিশ্ববিদ্যালয় শেষ করার পর আমি আবার প্রোগ্রামিংয়ে ঢুকে পড়লাম, কারণ আমার এক বন্ধু, যিনি আমার বাবার সেই সাহিত্যের কাজটা দিয়েছিলেন, তিনি আমাকে একটা প্রজেক্টে সাহায্য করতে বললেন। সেই প্রজেক্ট, যা প্রথমে চার বা ছয় সপ্তাহের ভাবা হয়েছিল, তা আড়াই থেকে সাড়ে তিন বছরের, মানে সাড়ে তিন বছরের প্রজেক্টে পরিণত হলো।
Jonathan: স্কোপ ক্রিপ। স্কোপ ক্রিপটা সত্যিই ঘটেছিল।
Gabriel: হ্যাঁ। প্রথমে তিনি আমাকে কিছু একটা করতে সাহায্য করতে বললেন। তারপর তিনি ওই প্রকাশকের একজনের সঙ্গে সবসময় যোগাযোগ রাখতেন। আর প্রকাশক সবসময় বলতেন, আমি এর জন্য একটি পাবলিক হোমপেজ চাই, যেখানে সাহিত্য থাকবে। আমি চাই মানুষ পুরো বইগুলো অনলাইনে পড়ুক।
Jonathan: ওয়াও।
Gabriel: একবার আমি আমার বন্ধুকে বললাম, তিনি ফোনে ওই লোকের সঙ্গে কথা বলছিলেন, আর বলছিলেন, আমি এটা করতে পারি বলে মনে করি। এখন আমার বিশেষ কিছু করার নেই। তখন তিনি বললেন, ওহ, Gabriel করে দেবে। এভাবেই শুরু।
Jonathan: ওয়াও।
Gabriel: তাহলে আমি একটা প্রজেক্ট পেলাম, আর সেই প্রজেক্টে সাড়ে তিন বছর কাজ করলাম। হাজার হাজার বই অনলাইনে আনা হলো, পুরো কনটেন্ট লাইব্রেরি।
Jonathan: ওয়াও।
Gabriel: সূচি। বিভিন্ন ভাষা পরস্পরের সঙ্গে যুক্ত। হ্যাঁ, ওয়েবসাইটটা এখনও অনলাইনে আছে। ঠিকানা e g e gw writings.org। কেউ দেখতে চাইলে দেখতে পারেন, নতুন ডিজাইন হয়েছে। গত বছর ডিসেম্বরের দিকে দেখলাম, তারা নতুন সাইটে চলে গেছে, কিন্তু নিচের কোডটা...
Jonathan: সব একই।
Gabriel: বেশিরভাগই আমার, কারণ বোঝা যায়, এটা মূলত JavaScript-ভিত্তিক ছিল।
Jonathan: হ্যাঁ।
Gabriel: কোডটা অনেকটা একই রকম দেখায়, ফাইলগুলো ভিন্নভাবে সাজানো, কিন্তু সব স্টাইল এখনও একই।
Jonathan: আপনাকে আমাকে লিংকটা পাঠাতে হবে, আমরা সময়মতো শো নোটে দিয়ে দেব। কিন্তু এখন আপনি সাড়ে তিন বছর, মানে তিন বছর এই প্রজেক্ট করলেন। এসব সূচিবদ্ধ করলেন। তখন কি JavaScript-ই আপনার মূল ভাষা ছিল? আপনার টেকনিক্যাল সেটআপ কী ছিল? এক অর্থে আপনি কীসের ওপর মন দিচ্ছিলেন?
Gabriel: তাই এটা ছিল Windows-ভিত্তিক সফটওয়্যার থেকে সরে আসার বড় ধাপ, আগে যা Visual Basic আর Visual Basic .NET ছিল। আর এখন শুধু jQuery, JavaScript আর ব্যাকগ্রাউন্ডে PHP।
Jonathan: ঠিক আছে।
Gabriel: আমাদের একটা চুক্তিও ছিল, যখনই আমি রিসার্চ করতাম, আমার ঘণ্টার হার কম থাকত।
Jonathan: হুম।
Gabriel: যা আসলে প্রোগ্রামিং করার সময়ের এক-তৃতীয়াংশ। আর হ্যাঁ, সেটাই আমাকে কাজের মধ্যে শেখার স্বাধীনতা দিয়েছিল। হ্যাঁ।
Jonathan: দারুণ। তারপর কোথায়, কোথায়। Exercism। এখন আপনি অনেক কিছু করেন। আমি কি ঠিক বলছি, Go হলো আপনার কাজের মূল অংশ? আপনি অনেক মেন্টরিং করেন, আর আপনি Exercism-এ Go নিয়ে জড়িত ছিলেন এবং সেই দিকটা এগিয়ে নিতে সাহায্য করেছেন। এটা কখন ছবিতে এলো, আর কেন এটা আপনার কাছে আগ্রহের ছিল? বলুন।
Gabriel: হ্যাঁ, ২০১৬ সালে, ওই বড় প্রজেক্টের পর এটাই ছিল আমার প্রথম চাকরি। আসলে ওটার শেষের দিকে আমি Go-তে সরে যেতে শুরু করি। সেই চাকরিতে আমি মূলত কিছু PHP আর Python করতাম। আর Go খুব দ্রুত আমার প্রিয় ভাষা হয়ে গেল, কারণ এর মধ্যে সেই সরলতা আছে। এটা মূলত চেষ্টা করে... আরও বেশি ফিচার, আরও বেশি ভাষা, সেগুলোকে আরও জটিল ও কঠিন করে তোলা, ডেভেলপারের জন্য আরও বেশি ওভারহেড, কারণ তাকে বেছে নিতে হয় কোন পথে করবে। আর অন্যদের করা অন্য সব উপায়ও বুঝতে হয়। এই সব ওভারহেডের মধ্যে Go হঠাৎ এই নীরবতা আর আবার সরল করার অনুভূতি নিয়ে এল। আর এটা খুব দ্রুত আমার এক নম্বর জিনিস হয়ে গেল। আমি ওই কোম্পানিতে চলে যাওয়ার ছয় মাস আগে একটি প্রোটোটাইপ বানিয়েছিলাম, কারণ তারা Go-তে যেতে চেয়েছিল। শুরুতে অবশ্যই এমন জিনিসে হোঁচট খেতে হয় যা ভাষায় করা যায় না, তারপর বুঝতে হয় কেন ওভাবে করা অর্থহীন, বা কেন অন্যভাবে করা ভালো। আমি এসব কীভাবে করতে হয় শিখতে সত্যিই আগ্রহী ছিলাম। এভাবেই আমি Go Time পডকাস্ট শুনতে শুরু করি। এটা Change Log-এর।
Jonathan: ঠিক আছে।
Gabriel: আর Katrina Owen সেই পডকাস্টে ছিলেন, আমি মনে করি দুবার। অন্তত দুবার আমি তাঁর কথা শুনেছি। হ্যাঁ। এভাবেই আমি Exercism-এর দিকে তাকাতে শুরু করি। আমি মনে করি ২০১৭ সালে আমি Exercism-এ রেজিস্টার করি। নিশ্চিত নই, দেখে নিতে হবে।
Jonathan: সম্ভবত। এটা কি ঠিক হবে?
Gabriel: হ্যাঁ, আমি মনে করি তখনও হয়তো সংস্করণ এক-ই ছিল, কারণ শুরুতে কোনো ফিডব্যাক পাওয়া যেত না। আমি কয়েকটি অনুশীলনী করেছি, কিন্তু কখনও ফিডব্যাক পাইনি। আর আমি অন্যদের ফিডব্যাক দিতে পারতাম, দিয়েছি। কিন্তু নিজে কখনও ফিডব্যাক পাইনি। তাই সত্যিকারের ফিডব্যাক পাওয়ার কোনো ব্যবস্থা ছিল না। ব্যাপারটা ছিল, চাইলে করো, না চাইলে ছেড়ে দাও। হ্যাঁ। আমি মনে করি ওটা সংস্করণ এক ছিল, তাই না?
Jonathan: আমারও তাই মনে হয়। মানে, সংস্করণ এক থেকে সংস্করণ তিন পর্যন্ত অনেক পরিবর্তন হয়েছে।
Gabriel: হ্যাঁ। হ্যাঁ।
Jonathan: এক নম্বরে কম ফিডব্যাক ছিল। দুই নম্বরে প্রচুর ফিডব্যাক বাধ্যতামূলক ছিল, আর তিন নম্বরে এসে সেটা মাঝামাঝি somewhere বসেছে, একটু কম দিকেই, তবে হ্যাঁ। আর আপনি কি সংস্করণ তিন গড়ে তোলার সঙ্গে জড়িত ছিলেন? কীভাবে, কীভাবে আপনি... হ্যাঁ। সেখানে আপনার ভূমিকা কী ছিল? মানে, আমি পুরোপুরি পরিষ্কার নই, তবে জানতে চাই।
Gabriel: হয়তো এক ধাপ পিছিয়ে যাই, যদি অনুমতি দেন। আমি দ্বিতীয় ইন্টারভিউয়ের পর ফিরে এলাম। Katrina-র কাছ থেকে Exercism-এ শুনলাম।
Jonathan: ঠিক আছে।
Gabriel: তখন সংস্করণ দুই এসেছে। আর তখন অনেক কাজ ছিল, অনেক ফিডব্যাক দরকার ছিল। আমি তাতে ঝাঁপিয়ে পড়লাম, আর ফিডব্যাক দিতে আমার দারুণ লাগত। আর,
Jonathan: হুম।
Gabriel: মূলত আমি ভাবতে শুরু করলাম, এটা আরও দ্রুত করা যায় কি না। হ্যাঁ। কারণ আমি দ্রুত বুঝলাম, বিশেষ করে প্রথম দিকের অনুশীলনীগুলোতে একই উত্তর বারবার দিতে হচ্ছিল।
Jonathan: হ্যাঁ।
Gabriel: আর অন্যদিকে, অবশ্যই, কখনও কখনও এই দুটো সমস্যা থাকত, কখনও এই সমস্যা আর অন্য একটা। তাই আমি মূলত এটা অপটিমাইজ করা শুরু করলাম। আমি একটা লো-লেভেল Go প্রোগ্রাম লিখতে শুরু করলাম, যা স্ট্যাটিক অ্যানালাইসিস ব্যবহার করে, কারণ আমি অ্যানালাইসিসে ঢুকতে চেয়েছিলাম। আগে এটা করিনি। জানতে চেয়েছিলাম। তাই যেহেতু চেষ্টা করতে আগ্রহী ছিলাম, আর সেটা ভালো আইডিয়া মনে হলো। কারণ কোডটা সবসময় খুব কমন বা খুব একই রকম ছিল। একটি অনুশীলনীর সমাধান, বিশেষ করে প্রথমগুলো, খুব একই রকম হয়। এভাবেই আমি স্ট্যাটিক অ্যানালাইসিসে ঢুকলাম, কোডে বিভিন্ন প্যাটার্ন খুঁজলাম, তারপর স্বয়ংক্রিয়ভাবে উত্তরে উত্তর ব্লক বা পূর্বনির্ধারিত ব্লক যোগ করলাম। মূলত আমি স্থানীয়ভাবে শুরু করলাম, আর এভাবেই সপ্তাহে প্রায় ১০০টা, সপ্তাহে ১০২টা রিভিউ করতে পারতাম। আর আমি পুরো সময় এটা করতাম না। চাকরির পাশাপাশি করতাম। হ্যাঁ। তারপর এটা ছড়াতে শুরু করল। Pitfield সম্ভবত প্রথমজন ছিলেন। John Arun, আমি মনে করি তাঁর আসল নাম। তিনিই প্রথম বললেন, ওয়াও, এটা দারুণ। এটা অসাধারণ। এভাবেই আমি যে কাজ করেছি, স্ট্যাটিক অ্যানালাইসিস নিয়ে, তা পরিচিত হতে শুরু করল। আর আমি মনে করি এটা সংস্করণ তিনের বড় অংশ ছিল। আমরা ভাবতে শুরু করলাম, কীভাবে এসব টুল, স্বয়ংক্রিয় স্ট্যাটিক অ্যানালাইসিস, বা যে টুলগুলো কোড স্বয়ংক্রিয়ভাবে পরীক্ষা করে এবং স্বয়ংক্রিয়ভাবে ফিডব্যাক দেয়, তা দিয়ে একজন টিউটরের কাজ কমানো যায়। এমনকি সম্পূর্ণ স্বয়ংক্রিয়ভাবে, কোনো মেন্টরের জড়িত না থেকেও। কারণ মেন্টররা, এটা পরিষ্কার ছিল, আমাদের মেন্টর আছে, কিন্তু কাজের জন্য যথেষ্ট নয়। আমাদের ইনভার্সন টুল ছিল, আর আমরা দেখলাম অনেক মেন্টর বার্ন আউট করছেন, হারিয়ে যাচ্ছেন, আর হ্যাঁ, অনেকের ওপর অনেক চাপ। হ্যাঁ। কাজটা ছিল স্ট্রাইক নিয়ে, তাদের ৫০০ বা তার বেশি সমাধান মেন্টরিংয়ের জন্য থাকত, আর কখনও এক মাস বা তার বেশি অপেক্ষার সময় হতো। আর অবশ্যই এমন অবস্থায় ছাত্ররা একসময় চলে যেত। হ্যাঁ।
Jonathan: হুম। মজার ব্যাপার, কারণ Jeremy সেদিন বলছিলেন, জমা দেওয়া সব সমাধানের মধ্যে প্রায় ৭৫% সম্পূর্ণ ইউনিক, যা আমারও দারুণ লাগে। মানে, Hello World-এর মতো একটা অনুশীলনীতে যান, স্পষ্টতই খুব সহজ। নিশ্চয়ই এটা নিয়মিত ব্যবহৃত একটা স্ট্যান্ডার্ড প্যাটার্ন হবে। অথচ তিনি বলছিলেন, মানুষ নানা রকম আলাদা আলাদা জিনিস চেষ্টা করে। আর মজার ব্যাপার হলো এই ক্রসওভারটা, কারণ কোডিং জনপ্রিয় হওয়ার সঙ্গে সঙ্গে, আরও মানুষ ডেভেলপিং ও প্রোগ্রামিংয়ে নামার সঙ্গে সঙ্গে ভাবতে হয়, এই অটোমেশন কোথা থেকে ডেভেলপারের ভূমিকা খর্ব করা শুরু করবে? আমি জানি না, আদৌ করবে কি না। আমার মনে হয় এখনও অনেক কিছু দরকার। কিন্তু Exercism-এ ইদানীং মেন্টরিংয়ের ওপর বড় জোর দেওয়া হচ্ছে, যা সত্যিই আকর্ষণীয়, কারণ আপনি যেমন বললেন, এটা সেই বারবার দিতে হওয়া পুনরাবৃত্ত পাঠগুলো নেয় আর সেগুলোকে এমনভাবে সাজায় যা মানুষের পক্ষে সহজে সামলানো যায়। একই সময়ে, এটা কি আসলে মানবিক সম্পর্ক, মানুষের সঙ্গে বিষয়বস্তুর সম্পর্কের দিকে গড়ায়? তাই জানি না আপনার এ নিয়ে কোনো ধারণা আছে কি না, তবে এই মুহূর্তে এটা আমার কাছে 흥흥কর ক্ষেত্র।
Gabriel: হ্যাঁ, আমার মনে হয় না ডেভেলপারদের খুব শিগগির প্রতিস্থাপন করা হবে। এখনও অনেক সময় লাগবে। ডেভেলপমেন্টে, সাধারণভাবে অ্যাপ্লিকেশন নির্মাণে, মেন্টরিংয়ে, আমি মনে করি স্ট্যাটিক অ্যানালাইসিস এবং স্বয়ংক্রিয় মেন্টরিং, সাধারণভাবে Exercism-এ স্বয়ংক্রিয় মেন্টরিং, বড় সাহায্য হতে পারে। কিন্তু প্রকৃত মেন্টরিংয়ের জন্য মেন্টর দরকার, আমি বলব। হ্যাঁ। যেমন, আমার একজন আছে যাকে আমি মেন্টর করি, প্রায় দুই-তিন মাসে একবার কল করি, কখনও বেশি। আর আমি তাকে তার ক্যারিয়ারে মেন্টর করি, এক অর্থে। হ্যাঁ। আবার কারিগরি দিক থেকেও খুব গভীরভাবে কারিগরি, কিন্তু এটা সম্পূর্ণ আলাদা ধরনের মেন্টরিং, শুধু সমাধান দেখে বলে দেওয়া নয় যে আপনি কী উন্নতি করতে পারেন। আর আমি মনে করি বিদ্যমান মেন্টরদের এখনও এটার জন্যই দরকার, ভবিষ্যতেও দরকার হবে, এবং আমি মনে করি আমরা এদিকে মন দিতে পারি। অন্যদিকে আমি মনে করি সমাধানের ক্ষেত্রে মেন্টরদের সম্পূর্ণ প্রতিস্থাপন করা যায় না, এবং করা উচিতও নয়। আমরা অনেক কিছু স্বয়ংক্রিয় করতে পারি, তবুও মেন্টর এমন একজন যিনি দিক দেখিয়ে দিতে পারেন। এখন তিনি দেখতে পারেন আপনি কোন সমস্যাগুলোর সঙ্গে লড়াই করছেন এবং বলতে পারেন, এইটা আর এইটা বুঝুন, শুধু এই নয় যে আপনাকে এইভাবে কোড উন্নত করতে হবে।
Jonathan: হ্যাঁ। হ্যাঁ।
Gabriel: আর সৎভাবে বলতে, আমি চাই Exercism-এ আবার বেশি মেন্টরিং ফিরে আসুক। তাই ভাবছি, আমাদের কি উচিত...
Jonathan: আপনার মানে মুখোমুখি যোগাযোগ?
Gabriel: হ্যাঁ। ভাবছি, আমাদের কি এটা করা উচিত। আগে ১০টি অনুশীলনীর একটা পথ ছিল, অন্তত ১০টি। যেটা আপনাকে পার করতে হতো, আর মেন্টরিং না হলে আপনি এগোতে পারতেন না।
Jonathan: হ্যাঁ।
Gabriel: আর আমি মনে করি এখন যে অটোমেশন আছে, তা দিয়ে আমরা আসলে সেটা আবার চালু করতে পারি। হয়তো এখন নয়, ভবিষ্যতে। আর আমি মনে করি এটা আমি চাইব।
Jonathan: আমরা অবশ্যই, এটা একটা কমিউনিটি কলে তোলা উচিত, কারণ আমার মনে হয় এটা আবার ফোকাসে ফিরিয়ে আনা দারুণ হবে। তাহলে Gabriel, আমরা প্রায়ই একটা প্রশ্ন করি, আর এটা সেই প্রশ্ন নয় যা আগে আপনার সঙ্গে আলোচনা করেছি। আমার প্রশ্ন করতে ভালো লাগে, কারণ এটা সবসময় খুব আকর্ষণীয় আর আলাদা। প্রশ্নটা হলো, প্রোগ্রামিং কি আপনার কাছে হঠাৎ ক্লিক করেছিল? অনেকে বলেন, এমন একটা অভিজ্ঞতা হয় যখন হঠাৎ সবকিছু অর্থপূর্ণ হয়ে যায়। আমি প্রায়ই নিজের একটা গল্প বলি। স্কুলের উদাহরণ দিই, যখন আমি রসায়ন শিখছিলাম, যুক্তরাজ্যে যেখানে স্কুলে পড়তাম। সেখানে এই পরীক্ষাগুলো হয়। আর তার আগের তিন বছর সবকিছু ওই পরীক্ষার দিকেই এগোয়। মানে তিন বছরের পড়াশোনা, শেষে চূড়ান্ত পরীক্ষা। আর সেটা সব বিষয়ের জন্যই। বিষয়গুলোর মধ্যে একটি অবশ্যই ছিল রসায়ন। আর আমি প্রায় তিন বছর রসায়ন সম্পর্কে কিছুই বুঝিনি। পারতাম না, একদমই না। তারপর পরীক্ষার এক সপ্তাহ আগে, মনে হলো যেন পয়সাটা পড়ে গেল, অর্থাৎ হঠাৎ বিষয়টা বোধগম্য হয়ে গেল। আমি ভাবলাম, আরে বাবা। আমি পর্যায় সারণি থেকেই সবকিছু পেয়ে যাচ্ছি। যদি পর্যায় সারণির সংখ্যাগুলো জানি, তাহলে এইটা, ওইটা, সব বুঝতে পারব। আর বিষয়গুলো সত্যিই সহজ হয়ে গেল। তাহলে প্রোগ্রামিংয়ের ক্ষেত্রেও কি আপনার এমন কোনো মুহূর্ত ছিল, নাকি এটা এমনই ছিল যে আপনার কাছে স্বাভাবিকভাবে বোধগম্য হয়ে গেল? আর সেই মুহূর্তটা কখন ছিল, যদি প্রাসঙ্গিক হয়?
Gabriel: আমার নিশ্চিত মনে নেই এমন নির্দিষ্ট কোনো মুহূর্ত আছে কি না। তবে ম্যাক্রো রেকর্ডিং আর খুব অল্প বয়সে Visual Basic for Applications দিয়ে কোড দেখা অনেক সাহায্য করেছিল। আজও এমন কিছু আছে কি না জানি না। আমি মনে করি Word-এ এখনও করা যায়। কিন্তু এমন জিনিস খুব কমই পাওয়া যায়, যেখানে রেকর্ড করে কোড দেখে শেখা যায়। আমার মনে হয় এটা আমাকে অনেক সহজ করে দিয়েছিল, কারণ শুরুতে আমি অনেক সংগ্রাম করতাম। একটা মুহূর্ত যেখানে বলতে পারি, ঠিক আছে, আমি জিনিস বুঝেছিলাম তা নয়, বরং বুঝেছিলাম যে আমি আসলে ঠিক করছি কি ভুল করছি, সেটা ছিল যখন আমি ওই কোম্পানিতে যোগ দিলাম, যখন আমি ছাত্র। সেটাই ছিল প্রথমবার যখন আমি অন্য ডেভেলপারদের সঙ্গে কাজ করলাম। এর আগে আমি সবসময় একা ছিলাম, সবকিছু নিজেকেই করতে হতো। আর সবসময় বড় প্রশ্ন থাকত, আপনারা সাধারণত এভাবে করেন? এটা অদ্ভুত লাগে। জটিল লাগে। মনে হয় কাজ করে, কিন্তু এটা কি সঠিক? সেই প্রশ্নের উত্তর মিলতে শুরু করল যখন আমি ওই কোম্পানিতে যোগ দিলাম এবং সেখানে কাজ শুরু করলাম। নিশ্চিতভাবে অনেক কিছু শিখতে হয়েছিল, আর আমি অনেক শিখেছি, যেমন Access রেকর্ড সেট। আগে সেগুলো সত্যিই বুঝতাম না। কাজ করতাম, কিন্তু...
Jonathan: হুম।
Gabriel: হ্যাঁ, কাজ করত।
Jonathan: হ্যাঁ। কিছু একটা
Gabriel: তারপর আমি সত্যিই বুঝলাম, সেগুলো বুঝতে শুরু করলাম। তাই সেটাই হয়তো এমন কিছু ছিল যা আমার কাছে ক্লিক করেছিল, কারণ আমার এক সহকর্মী ছিলেন, তিনি আমাকে বুঝিয়েছিলেন, আর সত্যিই একদিন ক্লিক করল, আমি বুঝলাম। সেগুলো কীভাবে কাজ করে আর...
Jonathan: হুম।
Gabriel: সেগুলো কীভাবে কাজ করার কথা, আর কীভাবে সঠিকভাবে ব্যবহার করতে হয়, ইত্যাদি। তাই হ্যাঁ, হয়তো ওটা এমন একটা বিন্দু ছিল। কিন্তু আমার মনে হয়, এসব বিন্দু আমাদের কাজে খুব প্রায়ই আসে। আমি মনে করি শুধু একটা বিন্দু নেই, হয়তো ওটা একটা প্রাথমিক বিন্দু। Go-র ক্ষেত্রেও অনেক জায়গা আছে যেখানে আমার কাছে ক্লিক করতে পারে, যেখানে আমি বুঝি কেন কোনো কিছু ওভাবে, আর কীভাবে ব্যবহার করার কথা। আর উদাহরণস্বরূপ, context। হ্যাঁ। যেমন Context।
Jonathan: হ্যাঁ।
Gabriel: হ্যাঁ। যেমন context, সেগুলো কখন যোগ হয়েছিল, নিশ্চিত নই, এক বা ছয় বা সাত হতে পারে। সেই সময়ে আমি সেগুলো দেখিনি। সৎভাবে বলতে, শুরুতে আমার সেগুলো দরকারই ছিল না। তারপর একবার একটা meetup-এ গেলাম, কেউ context নিয়ে উপস্থাপনা করল, কীভাবে ব্যবহার করবেন, ইত্যাদি। আর তখন মনে হলো...
Jonathan: হুম।
Gabriel: দেখা উচিত। কিন্তু তারপরও কয়েক মাস লাগল যতক্ষণ না আমি সত্যিই সেগুলো দেখলাম এবং বুঝলাম কেন সেগুলো আছে। আর যেমন closed channel, আমি জানি না আপনি জানেন কি না, ইন্টারনেটে এখনও অনেকে বলে goroutine বন্ধ করতে closed channel ব্যবহার করুন, যা করা উচিত নয়। context-ই এটার জন্য। হ্যাঁ। আপনি context ব্যবহার করেন, context বাতিল করেন, তারপর সেটা দিয়ে goroutine বন্ধ করতে পারেন। যদি closed channel ব্যবহার করেন, আপনি মূলত হাতে হাতে সেটাই করছেন যা context ভেতরে করে। আর অনেক ফুটগান এড়াতে হয়, অনেক সমস্যা। এড়াতে হয়, সাধারণত মানুষ ভুল করে।
Jonathan: আমার মনে হয় আপনি একটা লাইভ স্ট্রিম করেছিলেন আর সেখানে এ নিয়ে কিছু বলেছিলেন। আমি মনে করি আমার মনে আছে, আপনি বলেছিলেন, শুধু context ব্যবহার করুন, কারণ...
Gabriel: হ্যাঁ।
Jonathan: অনেক যুক্তিসঙ্গত।
Gabriel: মনে পড়ল, আমি ওই অংশটা বলেছিলাম।
Jonathan: হ্যাঁ। কিন্তু না, তাহলে আগে আপনি যখন মানুষ মেন্টর করেছেন, কিছু জিনিস কী? আপনি কি চিহ্নিত করতে পারেন এমন কাজ, আচরণ বা জিনিস, যারা দ্রুত শিখে ফেলে? তাদের কী করা হয় যা তাদের দ্রুত বা আরও কার্যকরভাবে শেখার অবস্থানে নিয়ে যায়? নাকি আপনি যাদের মেন্টর করেছেন, তারা স্বাভাবিকভাবেই এভাবে জড়িত? নাকি এমন মানুষও আছেন যাদের দেখে আপনি ভাবেন, ওয়াও, তারা কাজ করে, তারা এমন কিছু করে যা তাদের শেখা ত্বরান্বিত করে?
Gabriel: অন্য মানুষ সম্পর্কে আমি নিশ্চিত করে বলতে পারব না। নিজের সম্পর্কে অবশ্যই বলতে পারি। আমি আমার বাবা-মায়ের কাছ থেকে শিখেছি। তারা নিজেরাই অনেক কিছু শিখেছিলেন, আর সেটাই আমি তাদের কাছ থেকে শিখেছি, নিজে নিজে শেখা। তাই আমি প্রোগ্রামিং শিখেছি সম্পূর্ণ নিজেরাই। শুরুতে বাবা ছিলেন। স্কুলে কিছু জিনিস ছিল। পরে ক্লাসে বেশিরভাগ সময় আমি, বা আমরা, প্রায় সবাই শিক্ষকের চেয়ে ভালো ছিলাম, তাই সেখানে সত্যিকারের শেখা ছিল না। বরং একে অন্যের কাছ থেকে শেখা হতো। কিন্তু...
Jonathan: হ্যাঁ।
Gabriel: সাধারণভাবে, আমি সবকিছু নিজেই শিখেছি। আর প্রোগ্রামিংয়ে আমার মনে হয় এটা দরকার। কারণ আপনাকে постоянно এমন জিনিসে ঢুকতে হয় যা আগে দেখেননি। সেগুলো সম্পর্কে জানেন না, পড়তে হয়। কী শব্দটা? এই ক্ষমতা। হ্যাঁ। কোনো কিছুতে ঢুকে নিজে নিজে শেখার ক্ষমতা, আমার মনে হয় প্রোগ্রামিংয়ে শেখার জন্য এটাই মূল চাবিকাঠি। আর অবশ্যই আপনি অনেক দ্রুত শিখতে পারেন যদি কেউ পান যে এ নিয়ে বলে দেয়। তাই আমি বলব না যে মেন্টর খুঁজবেন না, Exercism-এ যাবেন না, ইত্যাদি। সেটা আপনাকে অনেক দ্রুত বাড়তে সাহায্য করে, তবুও সেটা। আমি এটাই বলব।
Jonathan: আমার কাছে মনে হচ্ছে আপনার শেখা এসেছে বাস্তবে সমস্যা সমাধান করার চেষ্টা থেকে। তাই ম্যাক্রো বানানো হোক বা আরও দক্ষভাবে কিছু করা হোক, আমার মনে হয় এটা আপনার জীবনে শেখার ক্ষেত্রে একটা মূল থিম যা বারবার ফিরে এসেছে, আর আমি মনে করি এটা Exercism-ও সাধারণভাবে যা করার চেষ্টা করে, মানুষকে বাস্তবে কাজ করতে সাহায্য করা, তার সঙ্গে bastante মেলে।
Gabriel: হ্যাঁ। ঠিক তাই।
Jonathan: তাহলে হ্যাঁ। এটা সত্যিই দারুণ। তাহলে Gabriel, আমাদের আর বেশি সময় নেই, তবে আপনার জন্য শেষ দুটি... ভালো, প্রশ্ন না। একটা প্রশ্ন, আর আমি আপনাকে আপনার একটা মতামত বলতে অনুরোধ করব। তারপর অন্যটা হবে... ভালো, এটাও এক ধরনের মতামত। আমি আপনাকে কমিউনিটির জন্য একটা সুপারিশ দিতে বলব, এই সপ্তাহে তাদের কী চেষ্টা করা উচিত। কিন্তু প্রথমে, আমরা আগে সাক্ষাৎকার নেওয়া অনেক মানুষের সঙ্গে কথা বলেছি, আর আপনি যদি এই পডকাস্ট বা লাইভ স্ট্রিম কিছু সময় ধরে শুনে থাকেন, তাহলে জানেন আমরা সাধারণত লাইভ স্ট্রিমের শেষের দিকে একটা বড় প্রশ্ন করি। প্রশ্নটা হলো, টেক জগতে কোন বিষয়ে আপনি মরতে রাজি? অর্থাৎ এমন একটা মতামত যেটা আপনি খুব দৃঢ়ভাবে ধরে রেখেছেন, যেটার পক্ষে আপনি দাঁড়াতে চান। মনে রাখবেন, এর জন্য ভালো কারণ দিতে হবে। শুধু বলা যাবে না, এটা আমার মত, ব্যস। সেই অর্থে নিজেকে defended করতে হবে। কিন্তু সেই মতামতটা কী হবে, আর এটা যেমন খুশি তেমন গুরুত্বপূর্ণ, intense বা তুচ্ছ হতে পারে। তাই বলুন তো?
Gabriel: আমি বলব এটা একটা প্রবাদ। Go কমিউনিটিতে একটা কথা আছে, কেউ বলেছেন, বিরক্তিকর কোড চতুর কোডের চেয়ে ভালো।
Jonathan: দারুণ লাগল। এর মানে কী?
Gabriel: এর মানে কী? হ্যাঁ, মূলত এটা Go-র দর্শনের একটা বড় অংশকে সারসংক্ষেপ করে, সরলতা আর পাঠযোগ্যতা নিয়ে। তাই Go কোডে যদি ভাবেন, ওয়াও, এটা তো চতুর, তাহলে আসলে সেটা খারাপ কোড। এমনকি যিনি লিখেছেন তিনি খুব বুদ্ধিমান আর খুব চতুরভাবে করেছেন। আর মাঝে মাঝে আমার মনে হয়, আপনি যদি সত্যিই সরলতা আর Go-র idioms অনুসরণ করেন, তাহলে আপনার পুরো কোডবেসে এমন কোড থাকবে না যেটা আপনি দেখাতে চাইবেন বা দেখাতে পারবেন, এই কোডটা দেখুন, কত ভালো। কারণ আপনার সব কোড আসলে বিরক্তিকর আর খুব সরল, আর যে কেউ আপনার কোড দেখবে, সে বলবে, এতে বিশেষ কী আছে? হ্যাঁ, কিন্তু মূল কথা হলো, আপনি সরলতায় পৌঁছেছেন কারণ আপনি ভালো প্রোগ্রামার, আর এটা একটা ইটারেশনের প্রক্রিয়া। জটিল কোড লেখা খুব সহজ, আর সরল কোড লেখা... কারণ আপনাকে প্রথমে মনে সমস্যাটা সরল করতে হয়, তারপর কোডটা সঠিকভাবে লিখতে হয়, তারপর ইটারেট করে সরল করতে হয়। আর সেটা অনেক দীর্ঘ প্রক্রিয়া, আর শুধু জটিল কোড লেখার চেয়ে অনেক ভালো ডেভেলপার দরকার, কারণ জটিল কোড দেখতে বুঝতে কষ্ট হয়, পড়তে কষ্ট হয়, maintain করতে কষ্ট হয়, পরিবর্তন করতে কষ্ট হয়।
Jonathan: এটা তো সবসময় ট্রেড-অফের ব্যাপার, তাই না? আমি টেক জগতে বেশ নতুন, তিন বছর, আর আমি ডেভেলপিং দিক থেকে আসিনি। আমি প্রোডাক্ট দিক থেকে এসেছি, আরও ব্যবসায়িক দৃষ্টিকোণ থেকে। আর একটা জিনিস খুব আকর্ষণীয় ছিল, 점점 더 স্পষ্ট হলো যে সবকিছুই ট্রেড-অফ। যেমন, সরল কোড বনাম জটিল কোডের ট্রেড-অফ, যেখানে জটিল কোড পরে আরও ঝামেলার ও কঠিন হতে পারে। সরল কোড লিখতে বেশি সময় লাগতে পারে, শুরুতে বেশি শক্তি ও পরিশ্রম লাগতে পারে। আর এই ট্রেড-অফটা প্রতিনিয়ত করা হয়। তাই এটা একটা... জানি না আপনার এ নিয়ে কী ভাব, কিন্তু আমার মনে হয় সরলতার দিকটা সত্যিই গুরুত্বপূর্ণ, কারণ আমার মনে আছে মায়ের বিশ্ববিদ্যালয়ের এক বন্ধু ছিলেন, তিনি অ্যাসাইনমেন্টের জন্য শুধু দুই পৃষ্ঠার প্রবন্ধ লিখতেন। কারণ তিনি সবকিছু দুই পৃষ্ঠায় সংক্ষেপ করতে পারতেন, আর তার জন্য শীর্ষ নম্বর পেতেন। তাই আমার মনে হয় এটা সরলতার পুরো ধারণার সঙ্গে মেলে, আর আমি মনে করি সরল কোড লেখা সত্যিই কঠিন, কারণ এতে শুধু কোডিং নয়, পরিষ্কার চিন্তা দরকার। তাই আমার মনে হয় এটা একটা যোগ্য পাহাড়, আর আপনি এটা ভালোভাবে উপস্থাপন করেছেন। দারুণ। তাহলে Gabriel, এই সপ্তাহের শেষ প্রশ্ন। এখন আপনি Exercism কমিউনিটিকে কিছু পরামর্শ দিতে পারেন। যেকোনো কিছু হতে পারে। স্বাস্থ্য পরামর্শ, খাদ্যাভ্যাস পরামর্শ। কমিউনিটিকে দিতে চান এমন একটি পরামর্শ শেয়ার করার সুযোগ, যেকোনো কিছু হতে পারে। তাহলে এই সপ্তাহে Exercism কমিউনিটির জন্য আপনার সুপারিশ কী? আপনার মতে তাদের কী একটা জিনিস চেষ্টা করা বা করা দরকার?
Gabriel: ওহ, এটা কঠিন। ঠিক আছে, আপনি যেহেতু বললেন যেকোনো কিছু হতে পারে, আমি কি দুটো জিনিস দিতে পারি?
Jonathan: আপনাকে দুটোই করতে দিচ্ছি।
Gabriel: ঠিক আছে। একটা সুপারিশ। আমি আসলে নিরামিষভোজী। নিরামিষ পরিবেশে বড় হয়েছি। কখনও মাংস খাইনি, আর আসলে আমার শৈশব ও যৌবনের বেশিরভাগ সময় ভেগান ছিলাম। তাই এক সপ্তাহ কোনো দুগ্ধজাত খাবার ছাড়া কাটানোর চেষ্টা করুন। এটা একটা। আর আরেকটা সুপারিশ, জানি না এক সপ্তাহে করা যাবে কি না, কিন্তু আপনি যদি ভালো ডেভেলপার হন, করতে পারবেন: শেয়ার্ড মেমোরি, একাধিক সার্ভিসের মধ্যে শেয়ার করা, একই সার্ভিসে শেয়ার্ড মেমোরি, এমন কিছু বানানোর চেষ্টা করুন। Raft প্রোটোকল ব্যবহার করে শেয়ার্ড মেমোরি 구현 করার চেষ্টা করুন। লাইব্রেরি ব্যবহার করতে পারেন। Raft নিজে তৈরি করতে হবে না, কিন্তু...
Jonathan: Raft। আপনাকে আমাকে লিংকটা পাঠাতে হবে, যাতে আমি পোস্ট করতে পারি। তাই এটা Gabriel-এর চ... ভালো, হয়তো আমরা এটাকে Gabriel-এর সপ্তাহের চ্যালেঞ্জ বলতে পারি। সুপারিশ বললে হয়তো কম হবে। হয়তো আমাদের দরকার...
Gabriel: হ্যাঁ। এটা বরং চেষ্টা করার মতো কিছু।
Jonathan: আপনি একটা চ্যালেঞ্জ দিচ্ছেন। এটা মজার হতে পারে। কিন্তু দারুণ। তাহলে এক সপ্তাহ কোনো মাংসজাত খাবার নেই। দেখি কেমন হয়, আর একটা শেয়ার্ড মেমোরি সার্ভার বানান। আপনি কী বলবেন? সার্ভিস, শেয়ার্ড...
Gabriel: হ্যাঁ, এটাকে ইন-মেমোরি key-value বলতে পারেন।
Jonathan: ঠিক আছে।
Gabriel: একাধিক সার্ভিস, একটা ডেটাবেস, বা একটা সার্ভিস। হ্যাঁ।
Jonathan: দারুণ। এটা
Gabriel: কারণ এটা আপনাকে শেখায় ডেটাবেস কীভাবে কাজ করে। হ্যাঁ, ভেতরে ভেতরে। বিশেষ করে যেগুলো shared, যেমন... হ্যাঁ, নিশ্চিত নই। হ্যাঁ। Cassandra/Scylla, আপনার Scylla আছে কি না জানি না। এটা Cassandra-র মতো, তবে C++-এ, আর তারা এখন Raft প্রোটোকল ব্যবহার করছে। অথবা এটা একটা key-value ডেটাবেস। shared database, না, এটা ডেটাবেস নয়। এটা রিটার্ন ম্যানেজমেন্ট। হ্যাঁ, Degraf থেকে Be degraff? সেটাও হয়তো ভেতরে Raft ব্যবহার করে ডেটা বিতরণ করে। নিশ্চিত করে বলতে পারব না, আবার দেখে নিতে হবে। কিন্তু অনেক ডেটাবেস আছে যেগুলোতে এটা ব্যবহার হয়। ডিস্ট্রিবিউটেড সিস্টেম। তাই ডিস্ট্রিবিউটেড সিস্টেম আমাদের আধুনিক সময়ের একটা বড় চ্যালেঞ্জ, আমি বলব। আমরা এটা সমাধানের প্রক্রিয়ায় আছি, তবে এখনও অনেক চ্যালেঞ্জ পার হতে হবে, আর হ্যাঁ, এই দৃষ্টিতে ভাবতে পারা সবসময় ভালো, কারণ পারলে অনেক সম্ভাবনা খুলে যায়।
Jonathan: হুম।
Gabriel: যদি দরকার হয়। আমার শেষ কোম্পানিতে আমি আসলে সেই পথেই যাচ্ছিলাম, একই সময়ে একাধিক সার্ভিসের মধ্যে শেয়ার্ড মেমোরি রাখা। হ্যাঁ।
Jonathan: হয়তো আমাদের এটাকে মাস্টার ক্লাস হিসেবে সাজানো উচিত। মানুষকে কয়েক সপ্তাহ সময় দেব চেষ্টা করার জন্য। তাহলে Gabriel,
Gabriel: এটাই... এটাই মাস্টার...
Jonathan: হ্যাঁ,
Gabriel: আপনি Exercism শেষ করে ফেলেছেন আর সব অনুশীলনী করে ফেলেছেন,
Jonathan: এটাই বড়টা। বড়টা। এটা সবকিছু একসূত্রে বেঁধে দেয়। Gabriel, আপনার সময়ের জন্য অনেক ধন্যবাদ। আজ সন্ধ্যায় আপনার সঙ্গে কথা বলে সত্যিই আনন্দ হয়েছে। আমরা রেকর্ডিং শেষ করার পর আপনি যদি একটু থেকে যান, তাড়াতাড়ি। তবে শুধু বলতে চাই, অসংখ্য ধন্যবাদ, আর Exercism-এ আপনি যা দিয়েছেন, শুধু আমাদের জন্য নয়, বরং দূরে যেখানেই মেন্টরিং করেন আর মানুষকে আরও ভালো কোড লিখতে সাহায্য করেন, তার সবই আমি সত্যিই মূল্যায়ন করি। নিশ্চিতভাবে সব জায়গায় এটার অনেক কদর আছে। তাই আপনার সময়ের জন্য ধন্যবাদ। আর Gabriel-এর সঙ্গে যোগাযোগ করুন। আপনি যদি Exercism-এ থাকেন, তাকে মেসেজ দিন, মেন্টরিংয়ের অনুরোধ করুন, আমি নিশ্চিত Gabriel-এর সঙ্গে আপনার ভালো সময় কাটবে। দারুণ।
Gabriel: অনেক ধন্যবাদ।
Jonathan: রেকর্ডিং শেষ করি। হ্যাঁ, না, আমাদের সঙ্গে যোগ দেওয়ার জন্য ধন্যবাদ, আর খুব শিগগিরই কোনো একটা প্ল্যাটফর্মে দেখা হবে।
Gabriel: ধন্যবাদ।
আমাদের কমিউনিটির সদস্যদের কথা শুনুন, শিখুন এবং অনুপ্রাণিত হোন।