কমিউনিটিতে ফিরে যান

পলিগ্লট ডেভেলপার হয়ে ওঠা

আপনি বলছেন 'পলিগ্লট' কী... আচ্ছা, অভিধান অনুযায়ী এটা একাধিক ভাষা জানার দক্ষতা! তাহলে 'পলিগ্লট' হবেন কীভাবে? এরিক শিয়ারবুম-এর সাথে কথা বলুন আর ভেতরের খবরটা জেনে নিন!

Youtube-এ দেখুন
দৈর্ঘ্য 57মিনিট

Jonathan: আচ্ছা, সবাইকে হ্যালো, আর Exercism পডকাস্ট বা লাইভ স্ট্রিমে আপনাদের স্বাগতম। আমার নাম Jonathan, আর আজ আপনাদের হোস্ট হওয়ার সৌভাগ্য আমার হয়েছে। আমার সঙ্গে আছেন Eric, যিনি Exercism টিমের একজন সদস্য এবং কয়েক বছর ধরে এর সঙ্গে জড়িত। গত কয়েক বছরের মধ্যে যদি আপনি কখনো Exercism-এর ইকোসিস্টেমে ঘোরাফেরা করে থাকেন, তাহলেই খুব সম্ভবত কোনো এক জায়গায় Eric-এর সঙ্গে আপনার পরিচয় হয়ে গেছে। কিন্তু Eric, আজকের অনুষ্ঠানে আপনাকে পেয়ে দারুণ লাগছে। আপনার গল্প, কীভাবে আপনি টেকে পৌঁছালেন, আর টেক জগতের নানা বিষয়ে আপনার দৃষ্টিভঙ্গি নিয়ে আরেকটু জানতে আমার খুব আগ্রহ। কিন্তু এসব নিয়ে খুব গভীরে যাওয়ার আগে, আপনার পরিচয়টা দিলে ভালো হয়, আর একটু পটভূমি বলুন, একটু গল্প বলুন যে কীভাবে আপনি আজ যেখানে আছেন সেখানে পৌঁছালেন। Erik: নিশ্চয়ই। হ্যাঁ। এখানে আসতে পেরে ভালো লাগছে। তাহলে আমি Eric, আপনি হয়তো আগেই বলেছেন। আমি নেদারল্যান্ডসে থাকি। সেখানেই আমার জন্ম। তাই সারা জীবন এখানেই কেটেছে। কীভাবে যে শুরু হলো, আমি ভাবতে শুরু করলাম, কম্পিউটার নিয়ে আমি আসলে প্রথম কখন কিছু করেছিলাম। আমার মনে হয় এটা একটা NES সিস্টেম ছিল। Mario খেলা। আর সেটাই আমাকে আসক্ত করে ফেলল। হ্যাঁ, দারুণ ছিল। আর একইসঙ্গে খুব হতাশাজনকও, কারণ সেসময় গেমগুলো ছিল নির্মম। Jonathan: আপনার কাছে সেভ পয়েন্ট ইত্যাদি ছিল না, শুধু আবার শুরু থেকে খেলতে হতো। Erik: আচ্ছা, এটা নির্ভর করে আপনি যুক্তরাষ্ট্রে থাকতেন কি না, নাকি বিশ্বের বাকি অংশে, কারণ আসলে দুটো ভিন্ন সংস্করণ ছিল। তবে হ্যাঁ, আমার মনে হয় সামনের দিকের স্লটটা খুলে তারপর ডিস্ক বা যাই হোক, কার্ট্রিজগুলো ঢোকাতে হতো। আর এটা আমার খুব, খুব ভালো লেগেছিল। আমাদের কাছে NES ছিল না, কিন্তু আমার কয়েকজন বন্ধুর ছিল। তাই খেলতে আমি নিয়মিত ওদের বাড়ি যেতাম, আর আমি অনেক দারুণ গেম খেলেছি, হতাশাজনক গেমও। কিন্তু এটা দারুণ, সত্যিই দারুণ একটা জিনিস ছিল। আর সেটাই আমাকে একরকম আসক্ত করে ফেলল। আমার মনে হয় অনেক প্রোগ্রামারই এভাবে আসক্ত হয়, শুধু একটা গেম বানানোর ইচ্ছা থেকেই প্রোগ্রামার হতে চায়। ভাবতাম। তবে স্পয়লার অ্যালার্ট, আমি কখনো সেটা করিনি। আমি গেম ডেভেলপার নই। আচ্ছা। না, না, না। কিন্তু এটাই ছিল কম্পিউটার ভালো লাগার শুরু। আর তারপর, আমার জন্মের আগে আমার বাবার একটা দুর্ঘটনা ঘটেছিল। তাই তিনি কাঁধের নিচে পক্ষাঘাতগ্রস্ত ছিলেন। মানে তিনি হুইলচেয়ারে ছিলেন। কিন্তু তিনি সবসময় বাড়িতেই থাকতেন। তাই এটা দারুণ ছিল। আমার এমন একজন বাবা ছিলেন যিনি চব্বিশ ঘণ্টাই বাড়িতে থাকতেন। তাই বাড়ি ফেরাটা সবসময়ই ভালো লাগত। তিনি কম্পিউটারও পছন্দ করতেন। তাই এক সময়ে, আমার মনে হয় তখন আমার বয়স হয়তো দশ বছর বা সেরকম ছিল, তিনি একটা বিশেষ চমৎকার নয় এমন কম্পিউটার আনলেন। আমার মনে হয় এটা একটা X286 ছিল। এটা সাদা-কালো, আর এতে MS-DOS ইনস্টল করা ছিল। আর গেম খেলা যেত। তাই অনেক গেম ছিল, আর আমার বন্ধুদের কাছ থেকে, মানে বন্ধুদের বাবাদের কাছ থেকে আমি কিছু গেম পেতাম, আর গেমগুলো চালু করতে হলে তাদের পাসওয়ার্ড লেখা পুরো শিটগুলো ছাপিয়ে আনতে হতো, কারণ সেখানে পাসওয়ার্ড সুরক্ষা ছিল। এটা প্রায় ম্যানুয়ালের মতো। এখন আর এভাবে পার পাবেন না। কিন্তু সেসময় পেতেন। আর সেই গেমগুলো খেলতে আমার দারুণ লাগত, কিন্তু একইসঙ্গে এটা কীভাবে কাজ করে সেটা বের করার চেষ্টাও আমার ভালো লাগত। আর আমি আমার কম্পিউটার নষ্ট করেছি। কতবার, তা মনে পড়ে না। তাই আমার একটা হেল্প ডেস্ক ছিল, যিনি আমার এক বন্ধুর বাবা, কম্পিউটারে বেশ ভালো। আর যখনই সিস্টেম নষ্ট হতো, আমি তাঁকে ফোন করতাম, আর তিনি খুব উদারভাবে বাড়িতে এসে সিস্টেম ঠিক করতে সাহায্য করতেন। কিন্তু যখন বুঝতাম এই সমস্যা থেকে বেরোতে পারছি না, তখন আমি আতঙ্কে পড়ে যেতাম, সেটা এখনো মনে আছে। কিন্তু হ্যাঁ, এ থেকে আমি অনেক কিছু শিখেছি। Jonathan: এই সমস্যা থেকে। কিন্তু এ থেকে আমি অনেক শিখেছি। ফ্লপি ডিস্কে, আর মনে আছে, এটার জন্য বছরের পর বছর জমানো, তারপর ঢোকানো, তারপর সেসব ছোট ছোট ফ্লপি ডিস্কে কখনো, কখনোই লোড হয় না। তাই এটা ছিল আমার বড় হতাশাগুলোর একটা। ঠিক কীভাবে এটা ঠিক করতে হয়, সেটা বের করার চেষ্টা থেকে আমি কখনোই পুরোপুরি বেরোতে পেরেছিলাম বলে মনে হয় না। তবে মানে গেমগুলো কি ফ্লপি ডিস্কে আসত, আর আপনাকে একটা ছোট কার্ট্রিজ নিয়ে সেগুলো ঢুকিয়ে আপলোড করতে হতো, এই ধরনের সব? Erik: কখনোই না। Jonathan: হ্যাঁ। Erik: হ্যাঁ, কখনো আপনার একাধিক ফ্লপি ডিস্ক থাকত। তাই হ্যাঁ, এটা আসলে দারুণ একটা সময় ছিল। আর MS-DOS আমার দারুণ ভালো লাগত, কী কী করতে পারি সেটা বের করতে। আর তারপর বুঝলাম কী কী করতে পারি না। তাই হ্যাঁ, সত্যিই দারুণ ছিল। Jonathan: হ্যাঁ, সত্যিই দারুণ ছিল। তাহলে তিনি কি এরপর ফুল-টাইম কাজ করতেন? আর আপনার বাবা বাড়িতেই থাকতেন? Erik: না, আমার মা আমার বাবার পুরো সময়ের দেখাশোনা করতেন। কারণ তাঁর অনেক যত্নের প্রয়োজন ছিল। প্রথমে তিনি হাত দিয়ে চলাফেরা করতে পারতেন, পরে থুতনি দিয়ে করতে পারতেন, কারণ তাঁর হাত একটু দুর্বল হয়ে যেতে শুরু করেছিল, তাই নিয়ন্ত্রণ কমে গিয়েছিল। কিন্তু মা পুরো সময় তাঁর যত্ন নিতেন। তাই আমার বাবা-মা সবসময় বাড়িতেই থাকতেন। তাই অন্যদের বাড়িতে যাওয়া, যেখানে বাবা-মা কাজ করতেন, আমার কাছে খুব অদ্ভুত লাগত। দিন শেষ হয়ে যেত, তবু বাবা-মা বাড়ি ফিরতেন না। আমার কাছে সেটা সত্যিই অদ্ভুত লাগত। কিন্তু হ্যাঁ, এটা শুধুই ভিন্ন একটা পরিস্থিতি। Jonathan: আমার কাছে সেটা সত্যিই অদ্ভুত লাগত। আপনি একা ছিলেন। Erik: আছেন, আমার একজন বোন আছে। আমার চেয়ে তিন বছরের ছোট। আমরা যে ভাইবোন, কেউ কখনো তা বলতে পারবে না। আমরা খুব আলাদা। কিন্তু আমি ওর সঙ্গে অনেক ঝগড়া করতাম, এখন আমরা একেবারে ঠিক আছি। তাই শেষ পর্যন্ত ভালোই হয়েছে। আচ্ছা। আর ও কম্পিউটার পছন্দ করত না, তাই ও আমার কম্পিউটারের সময়টা দখল করত না। Jonathan: কিন্তু আমরা প্রায়ই কম্পিউটার নিয়ে ঝগড়া করতাম। ও Simস খেলতে চাইত, আর আমি SimCity বা যা-ই হোক খেলতে চাইতাম। তাই ওই দিক থেকে আমরা সবসময় একে অপরের সঙ্গে লাগিয়ে থাকতাম। Erik: বিদায়। SimCity-এর পছন্দটা অবশ্যই অনেক বেশি পছন্দ করি। কিন্তু না, ও আসলে কখনো কম্পিউটারে আগ্রহী ছিল না। আগ্রহী করার একমাত্র উপায় ছিল যখন আমার একটা SNES ছিল, মানে Super Nintendo, আর আমাদের Mario Kart ছিল। আর Mario Kart ও পছন্দ করত, তাই আমরা একসঙ্গে অনেক Mario Kart খেলতাম। অবশ্যই আমি সবসময় জিততাম, কারণ আমার অনেক বেশি অভ্যাস ছিল, তবুও ও এটা পছন্দ করত। Jonathan: তাহলে এখনো ঘাঁটাঘাঁটি করতে ভালো লাগে? হ্যাঁ, MS-DOS, আমি ভুল না হলে, বেশ লো-লেভেল ধরনের ব্যাপার। হ্যাঁ। তাই, সেটা সম্ভবত বেশ লো-লেভেল। হ্যাঁ, একেবারে। আর তারপর, সেই সিস্টেম নিয়ে ঘাঁটাঘাঁটি করার সময় আপনার বয়স কত ছিল? Erik: আচ্ছা। বেশ লো-লেভেল, হ্যাঁ। একেবারে লো-লেভেল। হ্যাঁ, তখন আমার বয়স ছিল আমার মনে হয় দশ। আর তারপর আমার একজন বন্ধু ছিল, যে আমার ফুটবল টিমে ছিল, আসলে সকার টিমে, বলা উচিত। কিন্তু সে তখনই ভালো প্রোগ্রামার, আর আসলে গেম কোড করতে পারত। আর সে Visual Basic-এ করত। আর আমি একেবারে হতবাক হয়ে গিয়েছিলাম। সে আমার কম্পিউটারে আসত, আর দেখাত কীভাবে টাইপ করে, আর আমি একটুও বুঝতে পারতাম না। কিন্তু আধা ঘণ্টা পরে, তার স্ক্রিনে একটা কিছু হাঁটাহাঁটি করছিল, আর আমার কাছে এটা একেবারে জাদুর মতো ছিল। আমি তো একেবারে মুগ্ধ। কিন্তু তখনো আমি আসলে প্রোগ্রাম করার চেষ্টা করিনি। আমার তখনো মনে হতো এটা আমার জন্য এত কঠিন যে চেষ্টাও করা যায় না। তাই করিনি। শুধু ঘাঁটাঘাঁটি করতাম, গেম খেলতাম। Jonathan: তাই আমি... আমি শুধু মাঝখানে ঢুকছি। Erik: আর তারপর, যখন আমার বয়স একটু বেড়েছিল। Jonathan: কীভাবে এই যোগসূত্রটা তৈরি হলো যে, আচ্ছা, আমি গেমটা প্রোগ্রাম করতে পারি, আর এটাকে আমি সত্যিকারের একটা কিছু হিসেবে করতে পারি, যদি বোঝা যায়, বা আমি আরও সিরিয়াসভাবে এটাকে অনুসরণ করতে পারি। Erik: হ্যাঁ, সেটা পরে এল। তো আমার বয়স যখন, আমার মনে হয়, সতেরো, তখন আমাকে ঠিক করতে হয়েছিল কোন পথে যাব। আমার মাথায় দুটো বিকল্প ছিল। একটা ছিল ইতিহাস পড়া, আর অন্যটা ছিল IT করা। শেষ পর্যন্ত সিদ্ধান্তটা বেশ সহজ ছিল, কারণ আমার মনে হয়েছিল IT এমন একটা জিনিস যেটা আমি ইতিহাস পড়ার চেয়ে একটু বেশি ভালোবাসব। ইতিহাসে হয়তো খুব একঘেয়ে অংশ থাকতে পারে, আর আমি ভাবিনি কম্পিউটার সায়েন্সে একঘেয়ে অংশ থাকবে, কিন্তু থাকেই, অবশ্যই। তাই আমি ভুল ছিলাম। হ্যাঁ, হ্যাঁ। না, আচ্ছা, এটা নিয়ে আমরা আরেকবার কথা বলতে পারি। কিন্তু হ্যাঁ, একঘেয়ে অংশ থাকে। যাই হোক, আমি তখন সিদ্ধান্তটা নিলাম। আর তখন সবকিছু ফুলে-ফেঁপে উঠছিল। মানে এটা ছিল ডটকম বুমের সময়। তো আমরা যখন আমার হাই স্কুলে ঘুরতে গিয়েছিলাম, যে স্কুলে আমি যেতে যাচ্ছিলাম, সেটা ছিল একটা ইউনিভার্সিটি অব অ্যাপ্লায়েড সায়েন্সেস। তাই আমি ইউনিভার্সিটি অব অ্যাপ্লায়েড সায়েন্সেস আর ইউনিভার্সিটির মধ্যে বেছে নিতে পারতাম। কিন্তু আমার অ্যাপ্লায়েড সায়েন্সেস ভালো লাগে, কারণ আমি জিনিস বানাতে চাই। আমি বড় থিওরিটিশিয়ান নই। কী বলব জানি না, কিন্তু থিওরি নিয়ে আমি ভালো নই। তাই আমি জিনিস বানাতে ভালোবাসি। আমি খুব প্র্যাকটিক্যাল। তাই আমি প্র্যাকটিক্যাল অংশ দিয়ে শুরু করলাম। আর আমার সেটা খুব ভালো লেগেছিল। আর সেটা ছিল এমন একটা সময় যখন এসব কোম্পানি প্রচুর টাকা কামাচ্ছিল। আর তারা বলত, আপনি গ্র্যাজুয়েট হলেই গাড়ি পাবেন, এটা পাবেন, ওটা পাবেন। আর তারপর যখন আমি গ্র্যাজুয়েট করলাম, তখন ডটকম ধস। তাই সবকিছু এলোমেলো, আর কাজ খুঁজে পাওয়া আসলে বেশ কঠিন ছিল। আর তখন আমার মনে হয়েছিল, হয়তো আমার ইউনিভার্সিটি চেষ্টা করা উচিত, কারণ অ্যাপ্লায়েড সায়েন্সেসের অংশটা খুব মজার ছিল। আর সেখানেই আমি আসলে প্রোগ্রাম করতে শিখলাম। কিন্তু ভাবলাম, আচ্ছা, হয়তো আমার কাজের ক্যারিয়ারটা একটু পিছিয়ে দিই, আর দেখি ইউনিভার্সিটি করতে পারি কি না। তাই ভালোই ছিল। Jonathan: তো আমার যতটা বোঝা, ইউরোপীয় শিক্ষাব্যবস্থায় আপনাকে বেশ দ্রুতই ভাগ করে ফেলা হয়, প্র্যাকটিক্যাল স্কিলের ভিত্তিতে বনাম ইউনিভার্সিটি, হয়তো আরও বেশি একাডেমিক পথে। নেদারল্যান্ডসেও কি তাই? তারা কি এটা বলতে বেশ ভালো যে, এই, আপনি আসলে এটার জন্যই উপযুক্ত? আমি জানি সুইজারল্যান্ডে, যেটা আমার তুলনার ভিত্তি, আপনি যদি খুব ভালো হন, তাহলে বলা যায়, আচ্ছা, ঠিক আছে, যান অ্যাপ্রেন্টিসশিপ করুন, সেভাবে স্কিল অর্জন করুন। আর এটা আসলে সমান, ইউনিভার্সিটিতে যাওয়ার চেয়ে কোনোভাবে কম বা বেশি বলে বিবেচিত হয় না। এটা শুধু আপনার পছন্দের সঙ্গে বেশি মানানসই। নেদারল্যান্ডসেও কি তাই? আর বড় হওয়ার সময় কি এই ধরনের প্রক্রিয়ার মধ্য দিয়ে যেতে হতো? Erik: আমি বলব না যে এটা সমান বলে বিবেচিত হতো। এখনো এই ধারণা আছে যে ইউনিভার্সিটিতে যাওয়া, আর অ্যাপ্লায়েড সায়েন্সেস ইউনিভার্সিটিতে না যাওয়া, ভালো বা কঠিন, বা অন্তত বেশি সম্মানজনক। আপনি ভিন্ন একটা ডিগ্রিও পেতে পারেন। কিন্তু আমার কাছে এটা আসলে খুব একটা টানত না। এটা অনেক বেশি থিওরিটিক্যাল। আমি প্রোগ্রাম করতে শিখতে চেয়েছিলাম, কারণ তখনো আমি প্রোগ্রাম করতে শিখিনি। জানতাম, সম্ভবত এটা আমার ভালো লাগবে। আমি HTML-এর ছোট ছোট অংশ দেখেছিলাম, কিন্তু আসলে কখনো এক লাইন কোডও লিখিনি। কিন্তু আমি বেশ নিশ্চিত ছিলাম যে এটা আমার সত্যিই ভালো লাগবে। যখন আমি শুরু করলাম, প্রথম বছর আমি আসলে এক লাইন কোডও লিখিনি। শুধু গ্রুপে আমার কিছু সহপাঠীর সঙ্গে ভেসে চলতাম, কারণ তাদের একজন আসলে দুর্দান্ত প্রোগ্রামার, সবকিছু জানত। সে সব করত, তাই আমি বেশি কিছু করার সুযোগই পেতাম না। কিন্তু দ্বিতীয় বছর আমি সচেতনভাবে সিদ্ধান্ত নিলাম, এভাবে হবে না। এভাবে আমি কখনো প্রোগ্রাম করতে শিখব না। তাই আমি গোটা মন ঢেলে দিলাম, আর শুধু প্রোগ্রাম করেই গেলাম। সেটা ছিল একটা গভীর ডুব। আমি শুরু করলাম C দিয়ে, শুরুর জন্য যা ভয়ংকর একটা ভাষা। C-কে আসল ভাষা হিসেবে আমি কী মনে করি, সেটায় যাব না, কিন্তু শুরু করার জন্য এটা খুব কঠিন ভাষা। তাই হয়তো দ্বিতীয় বা তৃতীয় পাঠেই লিংকড লিস্ট করা, যার কোনো পটভূমি নেই তার পক্ষে ছাত্র হিসেবে এটা নিশ্চিতভাবেই উপভোগ্য নয়। কিন্তু আমি প্রোগ্রাম করতে পারলাম, আর আমার এত ভালো লাগল যে অবসর সময়ে প্রচুর প্রোগ্রাম করতে শুরু করলাম। তাই আমি নিজেকে প্রায় নিজে থেকেই প্রোগ্রামিং শেখানোর যে পথটা নিলাম, কারণ তারা যেভাবে শেখাত সেটা সত্যিই খুব খারাপ ছিল, সেটা হলো এমন কিছু বের করা যা আমি নিজে ব্যবহার করতে চাই, তারপর সেটা বানানো, বা অন্তত বানানোর চেষ্টা করা, কারণ শুরুতে আপনি শুধু হাতড়ে বেড়ান, আর আসলে বেশি কিছু করতে পারেন না। সেটাই আসলে কাজে লাগে। কিন্তু শেষ পর্যন্ত এটা শুধুই প্র্যাকটিস, প্র্যাকটিস, প্র্যাকটিস। তাই আমি বুঝলাম, প্রোগ্রামিং এমন একটা দক্ষতা যা শুধু করে করেই অর্জন করতে হয়। আপনি যত চান থিওরি নিতে পারেন, আর দেখতে পারেন, আমি জানি না, এক কোটি ভিডিও। কিন্তু আপনি যদি আসলে সময়টা না দেন, তাহলে আমার মনে হয় আপনি কখনো ভালো প্রোগ্রামার হতে পারবেন না। শুধু করতে হবে। আর সেটা একটা বড় ধাপ। আমি এখনো মনে করি, কোড পড়তে পারা, আর আমি তাতে বেশ খুশি ছিলাম। কিন্তু তারপর কোড লিখতে হওয়া, সেটা ছিল আরও বড় ধাপ। Jonathan: তাতে খুশি ছিলাম, আর কোড লিখতে হওয়া, সেটা এত বড় ধাপ ছিল। গত কয়েকটা অনুষ্ঠানে আমি জিজ্ঞেস করেছি, মানুষের কাছে প্রোগ্রামিং কখন ক্লিক করেছিল, আর আপনার কি এমন কোনো মুহূর্ত ছিল যখন মনে হয় সবটা মাথায় ঢুকে গেল, আর আপনি ভাবলেন, আরে বাবা, সবটা তো মানে খায়? নাকি আপনি থিওরি ধরার চেষ্টায় শুধু হাতড়ে বেড়াচ্ছিলেন, নাকি এমন কোনো মুহূর্ত ছিল যখন ভাবলেন, আচ্ছা না, এটা তো সোজা? Erik: আমার মনে হয় না আমার একটাই ইউরেকা মুহূর্ত ছিল। আমার মনে হয় কয়েকটা ছিল। এটা ধাপে ধাপে আসে। আমার মনে হয় আমি আসলে যে প্রথম প্রোগ্রামটা লিখেছিলাম, সেটা ছিল এমন একটা যেখানে একটা শব্দ অনুমান করতে হতো। মানে এখনকার খুব জনপ্রিয় কোন খেলাটা যেখানে আপনি... আচ্ছা, এটা Hangman-এর মতো, তবে ধরি এটা Hangman। কিন্তু এটা C-তে ছিল, আর আমি আসলে এটা চালু করতে পারলাম, তাই নিজের গেম নিজে খেলতে পারতাম। তাই কী হচ্ছে সেটা আমি একটু বুঝলাম, তারপর একটু এগোলাম। আমার একটা জিনিস ছিল যেটার সঙ্গে, আমার মনে হয়, মিউটেক্সের সম্পর্ক ছিল। মানে ট্রেন ছিল, আর সেগুলোকে সংঘর্ষ করা চলবে না। তাই ট্রেনগুলো যখন ছেদ করে তখন আপনি একটা মিউটেক্স ব্যবহার করতে পারতেন। আর মিউটেক্স আসলে থামো বা যাও, এমন একটা সংকেতের মতো। তাই এটা অনেক মজার ছিল। আমি এটা নিয়ে বেশ খুশি ছিলাম। তাই আমি এটা আমার অধ্যাপককে দিলাম। আর তিনি বললেন, কিন্তু আমি যদি চারটা ট্রেন চাই? আর আমি ভাবলাম, ওহ, ওহ, ওহ, বাহ। এটা তো ভাবিনি। তাই এটা ছিল চোখ খুলে দেওয়ার মতো, অথচ এটা ছিল মাত্র একটা সহজ বাক্য। আর আমি ভাবলাম, ওহ, উনার এমন কিছু জিজ্ঞেস করতে পারেন, সেটা আমার হিসাবের মধ্যে নেওয়া উচিত ছিল। তাই আমি সপ্তাহান্তটা দিয়ে আমার কোড প্যারামিটারাইজ করার চেষ্টা করলাম, যাতে একাধিক ট্রেন থাকতে পারে, আর আমি সেটা করতে পারলাম। কোনোমতে জোড়াতালি দিয়ে বসিয়ে দিলাম। সুন্দর ছিল না, কিন্তু কাজ করল। তাই সেটা ছিল আরেকটা মুহূর্ত যখন ভাবলাম, ওহ, এটা সত্যিই দুর্দান্ত। আর আমি এসব করতে পারি। Jonathan: দারুণ। আমি বুঝতে পারি আপনি এসব করতে পারেন। তো আপনাকে চেনার পর থেকে আমি সেটা জানি। আর কোড শেখার থেকেও, একটা প্রক্রিয়া আছে যেখানে আপনি যা-ই হোক লিখে ফেলেন, কাজ করান, তারপর সেটা উন্নত করেন। আপনার অভিজ্ঞতাও কি এমন ছিল? মানে, শুধু লিখে ফেলো, কাজ করাও। বাকি সব নিয়ে কার কী এসে যায়? তারপর সেটা উন্নত করো। Erik: হ্যাঁ, হ্যাঁ, আমার মনে হয় প্রথম এক বছরের মতো শুধু এটুকুই ছিল যে যদি এটা রান করে, আমি খুব, খুব খুশি। নান্দনিকতা বা এসব বলে কিছু ছিল না। শুধু এটুকুই, যদি রান করে তাহলে ভালো। আর আমি আমার কোডে মন্তব্য করতে গিয়ে একেবারে বাড়াবাড়ি করে ফেললাম, কারণ আমার অধ্যাপক বলেছিলেন কোডে মন্তব্য লিখতে হবে। আর কোড আর মন্তব্যের অনুপাত ছিল হয়তো এক থেকে দশ বা সেরকম, বিশাল। আর... হ্যাঁ, আমার সবচেয়ে পুরনো প্রজেক্টটা এখনো অনলাইনে আছে যা আমি রেখেছিলাম, সেটা ছিল আমার প্রথম ওপেন সোর্স প্রজেক্ট। আপনার কি MSN Messenger মনে আছে, যেখানে আপনি মেসেজ পাঠাতে পারতেন? Jonathan: আচ্ছা, খুব ক্ষীণভাবে মনে পড়ে, কিন্তু না। Erik: আপনার Winamp মনে আছে? Jonathan: হ্যাঁ। Erik: হ্যাঁ, তো Winamp ছিল একটা মিডিয়া প্লেয়ার। সেটা ছিল Napster-এর যুগের মতো। আপনি MP3 ডাউনলোড করতেন, তারপর Winamp দিয়ে চালাতেন। তো আমি যা করতে চেয়েছিলাম, যদি আমি কোনো গান চালাতাম, সেটা যেন স্বয়ংক্রিয়ভাবে MSN Messenger-এ আমার নামের সঙ্গে যুক্ত হয়ে যায়। আর সেসময় আমি Windows প্রোগ্রামিং করতে বেশ আগ্রহী ছিলাম। সেটা ছিল Win32। খুব পুরনো ধাঁচের, এখনকার মতো নয়, কিন্তু খুব লো-লেভেল আর দারুণ জিনিসও। তাই আমি C++-এ একটা প্লাগইন বানালাম, যা সেসময় আমার প্রিয় ভাষা ছিল, কিন্তু আমি তখন তিনটা ভাষা জানতাম, তাই এতে বিশেষ কিছু বোঝা যায় না। কিন্তু আমি একটা প্লাগইন বানালাম। তাই Winamp চললে সেটা চমৎকার Win32 API-এর মাধ্যমে গানের নাম নিত, তারপর MSN উইন্ডোতে আপনার নামটা আপডেট করত। তাই সবাই দেখতে পেত আমি কোন নাম্বারটা চালাচ্ছি। আর আমি এটা আসলে অনলাইনে দিয়েছিলাম, কারণ ভাবলাম হয়তো অন্যদেরও ভালো লাগবে। আমার মনে হয় এটা SourceForge-এ ছিল, যা এখন আর কেউ ব্যবহার করে না, কারণ আমার মনে হয় তাদের গোপনীয়তা নিয়ে কিছু সমস্যা হয়েছিল বা সেরকম। কিন্তু আসলে পৃথিবীর অন্য মানুষও এটা ব্যবহার করেছিল, আর আমি খুব অবাক হয়েছিলাম। আমি ডাউনলোড দেখতে পেতাম, আমি জানি না, কয়েকশো ডাউনলোড, আর লোকে আমার লেখা সফটওয়্যার ব্যবহার করছিল। সেটা ছিল সবচেয়ে ভালো অনুভূতি। আর সেটা ছিল আমার প্রথম ওপেন সোর্স প্রোগ্রাম। আমার কখনো সত্যিকারের ইমপোস্টার সিনড্রোম হয়নি। আমার মনে হতো, এটা আমার কোড। কেউ যদি ভাবে এটা খারাপ, সমস্যা নেই। এটা কাজ করে, তাই আমি খুশি ছিলাম। আর আমি অন্যদের মন্তব্য থেকে শিখতে পারতাম। আমি কখনো ইমপোস্টার সিনড্রোমে ভুগিনি, যারা আমাকে চেনে তারা এতে অবাক হবে না। Jonathan: আমি অবাক হব না। ইউনিভার্সিটির অধ্যাপক আর শিক্ষকদের অভিজ্ঞতার কথা বললে, আপনার কি এমন কোনো নির্দিষ্ট শিক্ষক ছিলেন যাঁরা আলাদা হয়ে দাঁড়িয়ে ছিলেন, আর তাঁদের শেখানোর ধরন যেন আপনার শেখার গতি বাড়িয়ে দিয়েছিল, বা প্রোগ্রামিং ও কোডিং সম্পর্কে আপনার বোঝাপড়ায় বড় প্রভাব ফেলেছিল? আর তাঁরা নির্দিষ্টভাবে কী করেছিলেন যা আপনাকে তত্ত্ব থেকে বাস্তবে বাস্তবায়নের ফাঁকটা পূরণ করতে দিয়েছিল? এটা বেশ বড় প্রশ্ন। আপনি যত চান টুকরো করে ভাগ করতে পারেন। হ্যাঁ, হ্যাঁ। Erik: হ্যাঁ, হ্যাঁ। তাই আমাকে এটাকে অ্যাপ্লায়েড সায়েন্সেস ইউনিভার্সিটি আর ইউনিভার্সিটি, এই দুটোয় ভাগ করতে হবে। প্রথমে পরেরটার কথা বলি, ইউনিভার্সিটিতে, আমার মনে হয় কেউ যখন কাউকে শেখাত, তার দক্ষতার সাধারণ মান খুব, খুব নিচু ছিল। মানদণ্ডটা খুব নিচু ছিল। আর আমার মনে হয়েছিল, ইউনিভার্সিটিতে যারা পড়াতেন, তাদের অনেকেই এটা করতেন কারণ করতে হতো, ইচ্ছা থেকে নয়। ইউনিভার্সিটিতে বেশিরভাগ সময় আপনি গবেষণা করতে চান, কিন্তু নির্দিষ্ট কিছু ঘণ্টা আপনাকে পড়াতে খরচ করতে হয়। নইলে, হ্যাঁ, এটা কাজেরই অংশ, কিন্তু তাঁদের আসলে এটা ভালো লাগত না। তো প্রোগ্রাম করতে শেখার পর আমি আরও বেশি প্রোগ্রাম শিখতে চাইলাম। তাই সেখানে প্রোগ্রামিং স্পেশালাইজেশন নিলাম, কিন্তু সেটা এত খারাপ ছিল। প্রায় রাগই লাগছিল যে প্রোগ্রামিং জ্ঞানের যে স্তরটা তারা আমার ওপর ঢালতে চেয়েছিল, সেটা এত খারাপ যে আমি আসলে সিকিউরিটিতে চলে গেলাম। আর সিকিউরিটি আমার আসলে পছন্দ নয়, কিন্তু প্রোগ্রামিংয়ের জিনিসটা এত খারাপ ছিল। আমি সবসময় বলি, আমার ইউনিভার্সিটির ক্যারিয়ারে আমি একমাত্র যা শিখেছি, তা হলো কীভাবে ঠিকভাবে আর্টিকেল লিখতে হয়, কীভাবে ঠিকভাবে সূত্রের গবেষণা করতে হয়, যাতে আপনি আপনার সূত্র সম্পর্কে জানেন আর যেকোনো সূত্র শুধু মেনে নিয়ে না ফেলেন। আর সেটা আমি সেসব বছরে শিখেছি, কিন্তু প্রোগ্রামিং নিয়ে আমি একদম কিছুই শিখিনি। Jonathan: এখন এটা ইতিহাসের সঙ্গেও বেশ মিলে যায়, যেমন আপনি কীভাবে কোনো সূত্রকে জেরা করেন, কীভাবে নিশ্চিত করেন যে আপনার যুক্তি মিলে যায়, এই ধরনের সব। ইতিহাসের দক্ষতা আর আনন্দ কীভাবে... Erik: বেশ মিলে যায়। Jonathan: সেগুলো আপনার কোডিং আর কোড শেখার মধ্যে কীভাবে প্রকাশ পেল, যদি আদৌ পেয়েছিল? সেখানে কিছু মিল কী ছিল? Erik: এটা কঠিন প্রশ্ন। আচ্ছা, দুটোতেই অনেক পড়তে হয়। তাই ইতিহাস মানে পড়া। আর প্রোগ্রামিংও মানে কোড পড়া। আপনি আসলে যতবার কোড লেখেন, তার চেয়ে অনেক বেশি বার কোড পড়েন। তাই এটাও অনেকটা পড়ার মতোই। এটা কিছুটা প্রত্নতত্ত্ববিদ হওয়ার মতোও হতে পারে, যদি আপনার নতুন চাকরি হয়, আর আপনি এমন একটা প্রাচীন লিগেসি সিস্টেম দিয়ে শুরু করেন যা ঘুরে বেড়াতে হয়। মনে হয় আপনি কোণে-কোণে উঁকি দিয়ে দেখছেন সেখানে কী লুকানো আছে। আর মাঝে মাঝে আলমারি থেকে লাশও বেরিয়ে আসে। তাই এটা কিছুটা অন্বেষণের মতো মনে হয়। মানে, এর মধ্যে আপনার কী ভালো লাগত? জানি না আর কিছু আছে কি না, আনন্দটা আসলে কোথায় ছিল? Jonathan: ধন্যবাদ। ইন্ডাস্ট্রিতে আপনার আনন্দটা কোথায় ছিল? Erik: বেশিরভাগই, আচ্ছা, আমার শিক্ষকেরা যে গল্পগুলো বলতেন। যেমন জলদস্যুদের কথা, তাঁরা বলতেন কীভাবে তাদের দড়ি দিয়ে জাহাজের নিচে টেনে নিয়ে যাওয়া হতো, আর খুব বিস্তারিত বর্ণনা দিতেন। ওই জিনিসগুলো আমার ভালো লাগে। সত্যিই ভালো লাগে। আর রোমানদের আর তাদের সংস্কৃতি, কীভাবে তারা ছড়িয়ে পড়েছিল, আর রাজনীতিও। মানে পিঠে ছুরি মারার সব। এসব আমার দারুণ ভালো লাগে। আমার হাই স্কুলে ল্যাটিনও ছিল। ল্যাটিন নিয়ে আমার একদমই আগ্রহ ছিল না, কিন্তু যে গল্পগুলো অনুবাদ করতে হতো, সেগুলো আমার খুব ভালো লাগত। তাই ল্যাটিন করতে হতো, এটা পছন্দ করতাম না, কিন্তু যে গল্পগুলো অনুবাদ করতে হতো, সেগুলো পছন্দ করতাম। তবে দুই বছর পর ছেড়ে দিলাম। Jonathan: সেগুলো আমার ভালো লাগত। না, আমি এটা জিজ্ঞেস করেছিলাম, শুধু ইতিহাস নিয়ে, কারণ... Erik: হ্যাঁ, গল্পটা জানি। Jonathan: আমি অনেক মানুষকে দেখেছি যাদের আরও শিল্পীসুলভ বা সামাজিক ধরনের আগ্রহ থাকে, কী বলব? হয়তো ইংরেজি কাঠামোতে আর্টস মানে আর্টস আর ইতিহাস, যারা ওই শ্রেণিতে পড়ে। কিন্তু আমি ক্রমেই দেখছি যারা ওই ধরনের জগৎ উপভোগ করেছে, তারা প্রোগ্রাম করতে শেখার দিকে যাচ্ছে। আর আমি আগ্রহী কারণ এখানে স্পষ্টভাবে একটা মিল আছে, আর সেটা একটু ম্যাপ করার চেষ্টা আমার বিভিন্ন মানুষের সঙ্গে কথাবার্তার খুব আনন্দদায়ক অংশ হয়েছে। আর মনে হয়, যদি আপনার একটা বড় ছবি থাকে আর আপনি যা পড়েন তার разных দিক জুড়ে বহুমুখী দৃষ্টিভঙ্গি থাকে, তাহলে সেটা প্রোগ্রামিংয়ে নিয়ে আসলে বিশাল উপকার, কারণ আপনি ভিন্ন ভিন্ন দক্ষতা প্রোগ্রামিংয়ের জগতে ব্যবহার করতে পারেন। আর আমার মনে হয়, হ্যাঁ, এটা শুধু, আমি এটা নিয়ে একটা মন্তব্য করতাম। তাই এটা মজার যে আপনি ইতিহাস ভালোবাসতেন, আর এখন আপনার কী, মানে ত্রিশের বেশি ভিন্ন প্রোগ্রামিং ভাষার অভিজ্ঞতা আছে, আর এর অনেকগুলো আপনি মেইনটেইনও করেন। আচ্ছা, মেইনটেইন করা অবশ্যই নয়, কিন্তু Exercism-এ সেগুলোর সবকিছু ম্যানেজ করার সঙ্গে আপনি গভীরভাবে জড়িত, যা আপনার... আচ্ছা, হ্যাঁ, হ্যাঁ। হ্যাঁ, আপনি বলুন। Erik: এর কতটা আপনার? আপনি যা বললেন সেটায় একটু ফিরে যেতে পারি? আপনি বললেন অনেক রকমের মানুষ, ভিন্ন ভিন্ন আগ্রহ নিয়ে প্রোগ্রাম করে। কিন্তু আমার মনে হয় এর একটা কারণ হলো, প্রোগ্রামিং খুব টেকনিক্যাল মনের মানুষদেরও টানে, কারণ এখানে কড়া নিয়ম আছে, ভাষাগুলো খুব নির্দিষ্ট। এখানে গ্রামার আছে, সিনট্যাক্স আছে। এসব অনেক কিছুই আছে যা এমন মানুষদের টানে যারা জিনিস একটা নির্দিষ্ট ভঙ্গিতে পছন্দ করে। যেমন, আপনি যদি পদার্থবিজ্ঞানী হন, আপনি নিয়ম ভালোবাসেন, সূত্র ভালোবাসেন, ইত্যাদি। প্রোগ্রামিংয়ে এসবও আছে, কিন্তু এটা একটা শিল্পও। তাই কখনো লোকে বই লেখার সঙ্গে তুলনা করে, আর আমার এখনো মনে হয়... এটা হয়তো সবচেয়ে ভালো উদাহরণগুলোর একটা। বাড়ি বানানোর ব্যাপারটা আমার পছন্দ না, কারণ আমরা যদি আমাদের সফটওয়্যার এভাবে বানাতাম যেমন বাড়ি বানানো হয়, তাহলে কোনো বাড়ি বানাই হতো না। কিন্তু আমার মনে হয় এটা সত্যিই একইসঙ্গে বিজ্ঞান আর শিল্প। Jeremy সম্প্রতি ডিগ ডিপারের জিনিসে এটা উল্লেখ করেছিলেন যে খুব সহজ একটা অনুশীলনীতেও মানুষ শত শত ভিন্ন সলিউশন বের করতে পারে, যদিও আপনি ভাবেন, এটা তো সমাধানের একটাই উপায় থাকা উচিত। কিন্তু সবসময়ই একাধিক উপায় থাকে। আর এটাই আমার প্রোগ্রামিংয়ে সবচেয়ে ভালো লাগে, যে আপনার কাছে এমন কিছু থাকতে পারে যা কাজ করে, কিন্তু তারপর আপনি অন্বেষণ করতে পারেন, আমি জানি না, আরও বিশটা বিকল্প, আর লিখে দেখতে পারেন, আর দেখেন, এই, এটাও কাজ করে। শিল্প আর বিজ্ঞান, এই দুইয়ের মিশ্রণটাই আমার দারুণ ভালো লাগে, কারণ আমার মনে হয় এটাই একমাত্র জায়গা যেখানে আমি আসলে সৃজনশীল হতে পারি। আমি একেবারেই সৃজনশীল মানুষ নই। আমার একটা ডান আর একটা বাম, দুটো হাতই আছে, কিন্তু আপনি বলে দিতে পারবেন, বাড়ির কাজকর্ম বা ছুতারির কাজ বা যা-ই করি, আমি ভালো নই। আমি এসবে ভালো নই, যা আবার এই কারণেও যে আমার বাবা আমাকে ঠিকভাবে শেখাতে পারেননি। এটা সত্যিই মজার। Jonathan: কিন্তু একইসঙ্গে, এসবে আমার আসলে আগ্রহ ছিল না। আমার ক্ষেত্রে, আমি স্কুলে আর্ট করতাম। তাই আমি সঙ্গীত করেছি, গিটার বাজিয়েছি বা যা-ই হোক। তাই আমার কাছে সৃজনশীলতার কাঠামোটা সবসময়ই আঁকা বা গান বা এসবের মধ্যে ছিল। আর কোডের সৃজনশীল দিকটা আমি কখনো সত্যিই ভাবিনি। আর এখন আপনি যেহেতু বললেন, আপনার ক্ষেত্রে এটা কীভাবে কাজ করে? মানে, আপনি কোনো বাদ্যযন্ত্র বাজান, নাকি...? আপনি গান উপভোগ করেন, আমি জানি আপনি গান উপভোগ করেন, কিন্তু আমি শুধু এই দুটোকে জোড়া লাগানোর চেষ্টা করছি। Erik: আচ্ছা, উম... করি, করি। হ্যাঁ, তো আমি গিটার শেখার চেষ্টা করেছিলাম। আমার স্ত্রীর জন্য এটা খুব কষ্টের ছিল, কারণ আমরা থাকতাম ওর ছাত্রাবাসের ফ্ল্যাটে, সেটা হয়তো বিশ বর্গমিটার। তাই আমি গিটার শেখার চেষ্টা করছিলাম, আর আমরা একে অপরের এত কাছে ছিলাম। ও যে এটা সহ্য করত, আমি এখনো অবাক হই। কিন্তু আমার নেই... Jonathan: এটা শুধু... Erik: কোনো বাদ্যযন্ত্র বাজানোর সহজাত প্রতিভা আমার নেই। একটা নির্দিষ্ট স্তরে পৌঁছাতে আমাকে সত্যিই খুব, খুব, খুব পরিশ্রম করতে হয়েছে, অথচ সেটাও তখনো খুব নিচু ছিল। তাল ইত্যাদি আমি ঠিকঠাক করতে পারতাম। কিন্তু এক সময়ে আমার গিটারের শিক্ষক আমাকে ইমপ্রোভাইজ করতে আর সোলো করতে বললেন, আর আমি একেবারে হারিয়ে গেলাম। কোনোভাবেই পারলাম না। আমার মধ্যে গানের সৃজনশীলতা বলতে কিছুই নেই। Jonathan: আমার মধ্যে গানের সৃজনশীলতা বলতে কিছুই নেই। কোডিং? আপনার মতো নয়। আপনি যখন কোডিংয়ে একেবারে নতুন কিছু নিয়ে আসেন, ধরুন Jeremy-এর কাছ থেকে একটা ব্রিফ পান বা Exercism-এ একটা ফিচার রিকোয়েস্ট পান, আর সেটা হলো আমরা এই, এই, এই করব। এটা কি সত্যিই আপনাকে মানসিকভাবে উৎসাহ দেয়, আর আপনি কি মনে করেন, বাহ, আচ্ছা দারুণ, চলুন সত্যিই এটা অন্বেষণ করি, আর আপনি কি এটা উপভোগ করেন? এক অর্থে এখানেই কি আপনার প্রাণ ফিরে আসে? Erik: আপনার মতো নয়। আচ্ছা। হ্যাঁ, হ্যাঁ। তো এটা হলো, একটা ভাবনা আসে আর সেটাকে একটা কিছু বানানো, আপনি প্রায়, প্রায় এই ক্ষুদ্র ঈশ্বরের মতো, হ্যাঁ, যেখানে আপনি শূন্য থেকে শুরু করেন, একটা ভাবনা থাকে, তারপর একটা কিছু হয়ে যায়। আর এটা এত, এত জাদুকর। আর আমার একটা স্ক্রিপ্ট থাকলে আমি এখনো খুব, খুব উদ্বেলিত অনুভব করি। আর সারি সারি এত লেখা, তারপর দেখেন এটা শুধু কাজ করছে। আর কম্পিউটার আপনার কথা অনুযায়ী আপনার জন্য কাজ করছে দেখতে দারুণ লাগে। আমার এখনো ভালো লাগে। আর সৃজনশীলতার দিকটা অবশ্যই আছে এটাও বের করার মধ্যে যে আপনি কোন পথে কিছু বানানোর চেষ্টা করবেন। আর তারপর একবার বানিয়ে ফেললে, আপনি হয়তো শুনেছেন, রিফ্যাক্টরিং চক্র, যেখানে আপনার এমন কিছু থাকে যা কাজ করে, তারপর আপনি সেটা নিয়ে ইটারেট করতে শুরু করেন আর দেখেন আরও ভালো করা যায় কি না। আর রিফ্যাক্টরিং আমার একেবারে প্রিয়। একটা বই আছে, কোথায় যেন? ওহ, দেখতে পাচ্ছি না, কারণ এটা ক্যামেরার অনেক বাইরে। কিন্তু এটা Martin Fowler-এর Refactoring। আর সফটওয়্যার নিয়ে পড়ার আমার অন্যতম সেরা অভিজ্ঞতা এটা। তাই রিফ্যাক্টরিং আমার দারুণ প্রিয়। এটা এমন একটা প্রক্রিয়া যেখানে আপনার এমন কিছু আছে যা কাজ করে, কিন্তু আপনি সেটাকে আরও ভালো বা আরও সুন্দর, দ্রুত, আপনার মানদণ্ড যাই হোক, করতে পারেন। আর এজন্যই Exercism আমার এত প্রিয়, কারণ এটা এজন্যই বানানো, আপনি টেস্ট সলভ করেন, তারপর আপনি, আপনার একটা টেস্ট হারনেস থাকে আর আপনার কোড দিয়ে যা চান করতে পারেন। আর যতক্ষণ এটা সবুজ, ততক্ষণ এটা কাজ করে। তাই Jonathan: এটা আমার দারুণ ভালো লাগল। তো আমি এটাকে বারবার ভিন্ন সময়রেখায় নিয়ে যাব। এখন আপনি আপনার ইউনিভার্সিটি শেষ করেছেন, কোড করতে শিখেছেন, আপনি আসলে বলেছেন ঠিক আছে, আমি শেখার এই প্রক্রিয়ায় প্রতিশ্রুতিবদ্ধ, আমি এটাতে গভীরে ডুব দেব। তাহলে এরপর কী হলো, সত্যিই এতে প্রতিশ্রুতিবদ্ধ হওয়ার সেই বিন্দু থেকে, আর তারপর সম্ভবত ক্যারিয়ার নিয়ে ভাবা শুরু করা, আর ইউনিভার্সিটিতে থাকার প্রক্রিয়ার এটা সবসময় একটা বড় অংশ, যে আমি বাকি জীবন কী করব? এটা কীভাবে এগোল? এটা নিয়ে আপনার ভাবনা কী ছিল? আপনার সামনে কী কী খুলে গেল? Erik: নিশ্চয়ই। আমি আসলে কখনো আমার ক্যারিয়ার নিয়ে ভাবিনি। আমার মনে হয় জীবনে কখনো তা করিনি। আমি একমাত্র যেটার সত্যিই পরোয়া করি, তা হলো এমন কিছু করা যা আমার ভালো লাগে। আর সেটা আমার কাছাকাছি হোক, যাতে বেশি গাড়ি চালাতে না হয়। কারণ আমি বেশি গাড়ি চালানো পছন্দ করি না। কিন্তু না, আমি আসলে কখনো আমার ক্যারিয়ার নিয়ে ভাবিনি। আর আমি অসাধারণ ভাগ্যবানও ছিলাম। মোটের ওপর আমাকে কখনো চাকরির জন্য আবেদন করতে হয়নি, হয়তো এক-দুবার ছাড়া। আমার সবসময় বন্ধু বা পরিচিত মানুষ থাকত। Exercism-এর ক্ষেত্রেও তাই। Jeremy আমাকে চিনতেন, তাই আমাকে আবেদন করতে হয়নি, আপনার মতো চার-পাঁচটা ভিন্ন ইন্টারভিউ পর্ব পেরোতে হয়নি, যা জানি না। আপনার জন্য হয়তো আরও বেশি ছিল। কিন্তু, উম, আমি। না, না, জানি। কিন্তু আমার কিছুই ছিল না। তো কাজ খুঁজতে গিয়েও একই অবস্থা। তাই আমি সবসময়, স্কুলে পড়ার সময়ও আমি সবসময় কাজ করতাম, হাই স্কুলেও সবসময় একটু টাকা রোজগারের চেষ্টা করতাম, কারণ আমার বাবা-মায়ের বেশি টাকা ছিল না। তাই আমাকে আমার নিজের ভাগটা রোজগার করতে হতো। কিন্তু কাজ আমার ভালো লাগে। আর আমার মনে হয় ইউনিভার্সিটি করার সময় আমি একটা প্রোগ্রামিং চাকরিতে হয়তো বিশ ঘণ্টা কাজ করতাম, কারণ ইউনিভার্সিটিতে আমাদের আসলে এত কম সময় কাটাতে হতো যে আমি বেশ কিছু টাকা রোজগার করতে পারতাম, আর সেটা দিয়ে আমি বিশাল একটা DVD সংগ্রহ কিনেছিলাম। Jonathan: সেটা নিয়ে আর যাওয়া যাক না। Erik: সেটা নিয়ে আর যাওয়া যাক না। হ্যাঁ, দুঃখিত, আমি আসলে এর বেশিরভাগই দিয়ে দিয়েছি, আর যেগুলোর স্মৃতি আমার খুব, খুব প্রিয় সেগুলো রেখেছি, কিন্তু বেশিরভাগই দিয়ে দিয়েছি। এক সময়ে আমার চারশো বা পাঁচশো DVD ছিল। Jonathan: এক সময়ে চারশো-পাঁচশো DVD। ওহ, দারুণ। Erik: মোটামুটি তেমনই ছিল। মোটামুটি তেমনই ছিল। হ্যাঁ। কিন্তু তো, ইউনিভার্সিটিতে থাকার সময় আমার একজন বন্ধু, সেই একই যে আমার দশ বছর বয়সের সময়কার প্রোগ্রামার ছিল। সে আমার সঙ্গে ইউনিভার্সিটি করত। আর সে একটা চাকরিতে ছিল, আর আমাকে জিজ্ঞেস করল, এই, একটু বাড়তি টাকা রোজগার করতে এই কোম্পানিতে যোগ দিতে চাও? তাই যোগ দিলাম। আর তারপর আমি মোটের ওপর ওখানেই থেকে গেলাম, ইউনিভার্সিটি শেষ হওয়ার পর তারা আমাকে জিজ্ঞেস করল পিএইচডি করতে চাই কি না। কিন্তু আমি সেটা যেভাবে বুঝলাম, পিএইচডিতে আপনি এমন কিছু পেয়েছেন, যেটা আসলে নিছক ভাগ্য, যাই হোক, আমি কাজটা করেছি, কিন্তু এটা ভাগ্যই ছিল। তাই আমি সেটা এভাবে পড়লাম যে আমাদের নাম এমন একটা কিছুতে যুক্ত করতে চাইছি যা আপনি লিখবেন, যাতে আমাদের একটা পাবলিকেশন হয়। তাই আমি এতে রাজি ছিলাম না। আর আমি চার বছর তত্ত্বের কাজ করতে চাইনি। আর পুরো একাডেমিক জগৎ আমার কাছে বিশেষ টানত না। একটা কোম্পানির ভেতরে শুধু প্র্যাকটিক্যাল কাজ করেই আমি অনেক বেশি স্বচ্ছন্দ ছিলাম। তাই আমি যেখানে কাজ করছিলাম, সেখানেই থেকে গেলাম। তো আমি PHP করতাম, আর আমাদের দারুণ একটা টিম ছিল। আমার মনে হয়, এখনকার আমাদের বর্তমান টিম ছাড়া, আমি কখনো এত বৈচিত্র্যময় আর এত দক্ষ টিমে কাজ করিনি। কিন্তু আমাদের নেতৃত্বে ছিল ম্যানেজমেন্ট, আর সেটা এত খারাপ ছিল। ওখানে এমন অসন্তুষ্ট টেক পরিবেশ ছিল। মানে, ভালো ছিল না, কিন্তু তবুও আমার অনেক মজা লেগেছিল। কিন্তু PHP আমার প্রিয় ভাষা নয়। তাই আমি C#-এ আগ্রহী ছিলাম। C# যখন তখনো C# 1.0, তখন থেকেই আমি C#-এর ভক্ত। সেসময় এটা বেশ অপরিপক্ব ছিল। আমি আমেরিকা থেকে বই আনিয়েছিলাম, আর আমাকে কিছু অতিরিক্ত ট্যাক্স দিতে হয়েছিল, শেষে বেশ ব্যয়বহুল হয়েছিল, কিন্তু আমি তবুও সেই বইটা সত্যিই অনেক ব্যবহার করেছি। তারপর আমি বললাম, আমি চাকরিতে C# করতে চাই। শুধু পাশে নয়। তাই আমি আবেদন করলাম। আসলে এটাও ইউনিভার্সিটির জন্য, কিন্তু গবেষণা বা এসব নয়। এটা ছিল, আচ্ছা, ইউনিভার্সিটির বিভিন্ন অংশে আরও সাপোর্ট। আর আমি প্রায় সাত বছর C# করেছি। Jonathan: আর আমি প্রায় সাত বছর C# করেছি। শুধু ওই গল্পটা বলুন। কারণ আপনি শুরু করেছিলেন স্বেচ্ছাসেবক বা কন্ট্রিবিউটর হিসেবে, তাই না? আর তারপর সেখান থেকে একটা কিছু গড়ে তুলেছেন। Erik: হ্যাঁ। হ্যাঁ, তো আমি যখন ইউনিভার্সিটিতে কাজ করতাম, তারা জিনিসপত্র পড়া বা কনফারেন্সে যাওয়ার ব্যাপারে খুব উদার ছিল। তাই এক সময়ে আমি ফাংশনাল প্রোগ্রামিং বলে একটা কিছুর কথা শুনলাম। আর ভাবলাম, এই, এটা তো জানি না। আমি জানতাম, তারা ইউনিভার্সিটিতে একটা ঐচ্ছিক পাঠ পড়াত, কিন্তু আমি আসলে এটা নিয়ে কিছু করিনি। আর ভাবলাম, হয়তো আমার ফাংশনাল প্রোগ্রামিং শেখা উচিত, হয়তো মজা লাগবে। আর আমার আরেকজন সহকর্মী ছিল যে যোগ দিতে চাইল। তাই আমরা একটা ফ্রি কোর্স করলাম, Coursera-তে একটা Scala কোর্স, এখন করতে গেলে টাকা দিতে হয়, কিন্তু সেসময় দিতে হতো না। আর এটা পড়াতেন Martin Odersky, যিনি Scala-র লেখক, যেটা একটা ফাংশনাল ভাষা, যা আমাদের Exercism-এও আছে। আর ফাংশনাল প্রোগ্রামিং শিখতে আমার অনেক মজা লেগেছিল, আর মাঝে মাঝে বেশ মানসিক সংগ্রামও ছিল, কারণ জিনিস নিয়ে ভাবার এটা সত্যিই ভিন্ন একটা উপায়। কিন্তু আমি একরকম লেগে রইলাম, আর আমার সত্যিই ভালো লাগল। আর একটা ফোরাম ছিল যেখানে অন্য ছাত্রদের সঙ্গে আলোচনা করা যেত, যেমন যে অনুশীলনীগুলো আপনি সমাধান করতে পারেননি সেগুলো নিয়ে। কিন্তু কেউ কেউ জিজ্ঞেস করল, Scala নিয়ে আরও শিখতে চাইলে কী কী রিসোর্স ব্যবহার করতে পারি? আর কেউ বলল, এই, Exercism চেষ্টা করে দেখুন, ওদের একটা দারুণ জিনিস আছে যেখানে আপনি অনেক রকমের অনুশীলনী করতে পারবেন, ছোট ছোট পাজলের মতো। আর আমি ভাবলাম, এই, এটা তো ভালো শোনাচ্ছে। তাই যোগ দিলাম আর Scala ট্র্যাক করলাম। আর আমি সত্যিই অনেক শিখলাম। আর সেটাই ছিল প্রথম আমি ফাংশনাল প্রোগ্রামিংয়ের জগতে পা ডুবালাম। তাই ভাবলাম, হয়তো গভীরে ডুব দিই। আর আমি Haskell-এ গেলাম। আর সেসময় আমার জন্য সেটা সত্যিই গভীর ডুব ছিল। কিন্তু এর অনেকটাই ছিল Exercism V1। মানে লোকে শুধু আপনার কোডে মন্তব্য করত, কোনো প্রাতিষ্ঠানিক মেন্টরিং ব্যবস্থা বা এসব ছিল না। কিন্তু Haskell-ের মানুষগুলো একেবারে দুর্দান্ত ছিল। তাই আমি মূলত ওদের কাছ থেকেই Haskell শিখলাম। আমি অনেক গুগল করলাম, কিছু সত্যিই অদ্ভুত সলিউশন পেলাম, আমি নিজেও কিছু অদ্ভুত সলিউশন বানালাম, কিন্তু তারা সবসময় আমাকে এমন কিছুর দিকে চালিত করার চেষ্টা করত যা আইডিওম্যাটিক Haskell আর সুন্দর। আর এটা এত দারুণ অভিজ্ঞতা ছিল যে ভাবলাম, এই, আমারও সম্ভবত অন্যদের ক্ষেত্রে এটা করা উচিত। হয়তো আমিও সাহায্য করতে পারি। সাহায্য করা আমার সবসময়ই ভালো লাগে। তাই ভাবলাম, আমি C# করব আর অন্যদের C# কোডে মন্তব্য করব। তাই এটা করলাম। তারপর দেখলাম, এই, C# ট্র্যাকে রয়েছে, আমি জানি না, চল্লিশটা অনুশীলনী আর Haskell-এ তার চেয়ে বেশি। কেন এমন? তাই কারণটা বের করার চেষ্টা করলাম। আর এই, আপনি Exercism-এ পুল রিকোয়েস্ট জমা দিয়ে নতুন অনুশীলনী যোগ করতে পারেন। আর এই জিনিসটাই আমাকে আসক্ত করে ফেলল। তারপর আমি প্রতিটি সপ্তাহান্তেই অনুশীলনী যোগ করতাম। আর যখন C# শেষ করলাম, ভাবলাম, এই, F#, চলুন F# করি। F# ফাংশনাল। আর এটা Microsoft ইকোসিস্টেমে। তাই দুটোই আমার পছন্দ। তাহলে আমার প্রিয় জিনিসগুলো মিলিয়ে ফেলি। তাই আমি F# করলাম আর একই কাজ করলাম। তাই আমি ছিলাম F# মেইনটেইনার, অনুশীলনী বানাতাম, আর আমার সত্যিই, সত্যিই ভালো লাগত। Jonathan: আমার সত্যিই, সত্যিই ভালো লাগত। আপনার একটা ভাষা আছে, আপনি ভাবেন, আচ্ছা, আমি Scala চেষ্টা করব। আমি একরকম এটাতে দাঁত বসালাম, তারপর আপনি এটাতে গভীরে ডুব দিলেন। এখন, প্রতিটি ভাষা বুঝতে যত সময় লাগত, সেটা কি সময়ের সঙ্গে কমেছে? কারণ এখন তো আপনার অনেকগুলো আছে। মানে, এটা কীভাবে এগোল? Erik: হ্যাঁ, হ্যাঁ। আচ্ছা, স্বাভাবিক ভাষার ক্ষেত্রেও এটা একইভাবে কাজ করে। যেমন আপনি যদি ফরাসি শেখেন আর ভালোভাবে জানেন, তাহলে স্প্যানিশ শেখা অনেক সহজ হবে, কারণ অনেক জ্ঞান ভাগাভাগি হয়, যেমন শব্দভান্ডার, প্রায় ডায়ালেক্টও। কম্পিউটার প্রোগ্রামিংয়েও তাই। যেমন আপনি যদি C জানেন আর C++-এ যান, অনেক নতুন কনসেপ্ট আছে, কিন্তু অনেক জিনিস হুবহু একইও। তাই পুরো C-জাতীয় পরিবার, যা প্রোগ্রামিংয়ের আর একটা জিনিস যা আমার ভালো লাগে, যে এখানে ফ্যামিলি ট্রি-র মতো আছে। যেমন একটা Lisp শাখা, একটা ML শাখা, একটা C-জাতীয় শাখা। আর এটা প্রায় ইতিহাসের মতো, যেখানে ফ্যামিলি ট্রি বা সেরকম কিছুতে এই বংশতালিকা থাকে। আমি এটা খুব জোরে বললাম। হ্যাঁ, এটা Haskell বা Prolog। কিন্তু আমি এই ব্যতিক্রমী ভাষাগুলোও ভালোবাসি, কারণ তাদের অনন্য ভাবনা আছে। সাধারণত আমি ওগুলোই চেষ্টা করতে চাই। তাই এমন ভাষা খুঁজুন যা ভিন্নভাবে কিছু করে, যদিও সব প্রোগ্রামিং ভাষা অনেক একই জ্ঞান ভাগ করে। সবারই বুলিয়ান লজিক আছে, আর বুলিয়ান লজিক তো স্থির, এটা প্রদত্ত। তাই সব জায়গায় একইভাবে কাজ করে। হয়তো আপনাকে দুটো অ্যাম্পারস্যান্ড লিখতে হতে পারে, বা শব্দ হিসেবে and ব্যবহার করতে পারেন, কিন্তু মূল বিষয়গুলো একই থাকে। তাই একবার ওই মূল বিষয়গুলো জানলে, ভালোভাবে জানলে, আপনি সহজেই অন্য ভাষায় প্রয়োগ করতে পারেন। Jonathan: এটা প্রায় ইতিহাসের মতো, যেখানে ফ্যামিলি ট্রি বা সেরকম কিছুতে এই বংশতালিকা থাকে। ভাষাগুলো আরও সহজে। আপনি কোড শিখেন আর নিজের অভিজ্ঞতাকে বিবেচনায় নেন। কোড শেখার জন্য মানুষ কী কী আচরণ করে বা কী কী করে? আর আমি নিশ্চিত অনেক ভিন্ন শাখায় এর মিল আছে। আপনি বললেন, আপনি শুধু প্রতিশ্রুতিবদ্ধ হয়েছেন, গভীরে ডুব দিয়েছেন, আর বুঝে না আসা পর্যন্ত ওই জিনিসটার সঙ্গে কুস্তি লেগেছেন। আপনি এমন আর কোনো আচরণ বা কাজ দেখেছেন যা মানুষ করে, যেটা দেখে আপনি ভাবেন, হ্যাঁ, ওরা নিজেদের শেখার উপযোগী অবস্থানে নিয়ে গেছে? হ্যাঁ, সত্যিই ভালো। Erik: উম, তো আমি সবসময় মানুষকে উৎসাহ দিতে চেষ্টা করেছি এমন কিছু বানাতে যা তারা বানাতে চায়। উম, যখন আমি PHP শিখছিলাম, আমি এমন কিছু বানালাম যা আমি যেসব IMDB টপ ২৫০ ছবি দেখেছি তা ট্র্যাক করত। উম, আমি অনেক ছবি দেখতাম, তাই ওই ছবিগুলোর প্রত্যেকটা টিক করতে চাইতাম, আর উম, শুধু যা বানাতে চাইতাম তাই বানিয়ে আমি এর থেকে অনেক PHP আর MySQL শিখলাম। কারণ তখন আপনি থামতে চান না, আপনি চালিয়ে যেতে চান, ঠিক করতে চান, কাজ করাতে চান। আর উম, যে কয়েকজন প্রোগ্রাম শেখা শুরু করেছে তাদের আমি এই টিপটা দিয়েছি আর তাদের ক্ষেত্রে ভালোই কাজ করেছে। উম, আর আজকাল এটা আমার শেখার সময়ের চেয়ে অনেক আলাদা, যখন আমাকে Stack Overflow ইত্যাদি সামলাতে হতো। আর অনলাইনে এত জ্ঞান পাওয়া যায়। সঠিক রিসোর্স খুঁজে পাওয়াও কঠিন। তাই আমি মনে করি এখানেই Exercism সত্যিই জ্বলজ্বল করতে পারে, কারণ উম, আমরা প্রায় গেটকিপারের মতো হতে পারি, উম, আমাদের কমিউনিটিতে এমন মানুষ আছে যারা জানে সঠিক রিসোর্স কোনগুলো। আর উম, এটাই একটা জিনিস যা আমি দেখি নতুনেরা সংগ্রাম করে। উম, আর এটাও যে... আপনি প্রায় কখনোই এমন রিসোর্স পান না যেখানে আপনি সত্যিই শূন্য থেকে শুরু করেন। সাধারণত Exercism-এর দর্শক অন্তত একটা ভাষা জানে। তারপর আপনি অন্য আরও ভাষায় যান বা ওই ভাষায় আরও গভীরে যান। কিন্তু এটা তাদের জন্য নয় যাদের প্রোগ্রামিংয়ের কোনো পটভূমি নেই। তাই আপনি জানেন না for লুপ কী। জানেন না ভেরিয়েবল কী। স্ট্রিং তো আপনার মাথায় একেবারে ভিন্ন কিছু। হ্যাঁ, আমার স্ত্রী যদি দেখে আমি স্ট্রিং নিয়ে কথা বলছি, আমি সবসময় অদ্ভুত দৃষ্টি পাই। নেদারল্যান্ডসে এটা ভিন্ন একটা জিনিস। Jonathan: হ্যাঁ। আমি এখানে কিছু সাধারণীকরণ করব। গত কয়েক বছরে এটা সম্ভবত সত্য যে ক্রমেই বেশি মানুষ কোডিং আর প্রোগ্রামিং সম্পর্কে সচেতন হয়েছে। আগে সম্ভবত কম সংখ্যক মানুষ ছিল যারা ওই জগতে চলাফেরা করতে জানত। স্পষ্টতই, এই ইন্ডাস্ট্রি যেহেতু বেশ দ্রুত গতিতে বাড়ছে আর বাড়ছে, স্পষ্টতই অনেক মতামত আছে আর মানুষ এখনো নিজেদের জায়গা খুঁজে বের করার চেষ্টা করছে, নির্দিষ্ট কিছু বিষয় আর টপিকে তারা কোথায় দাঁড়ায় তা খুঁজে বের করার চেষ্টা করছে। আপনি যে পাহাড়ের ওপর মরে যাবেন, এই পুরো ধারণাটা মূলত এই যে কোন মতটা আপনি সত্যিই লড়াই করে বা রক্ষা করবেন, অবশ্যই স্বাস্থ্যকরভাবে। কিন্তু কোন একটা জিনিস যা আপনি রক্ষা করবেন আর চাইবেন? যেমন, এটাকে পেরেক দিয়ে আটকে দিয়ে বলবেন, আমি এই জায়গা থেকে নড়ব না, আর এটা আপনাকে রক্ষা করতে হবে। সেটা কী হবে? আচ্ছা। Erik: আমার এমন মত অনেক আছে, কিন্তু আমার মনে হয় এখানে যেটা ব্যাখ্যা করতে চাই, সেটা হলো আপনার এখন যা জানেন তার চেয়ে বেশি ভাষা শেখা উচিত। তাই এমন নতুন ভাষা চেষ্টা করুন যা আপনি জানেন না, আর এমন ভাষা চেষ্টা করুন যা আপনার জানা ভাষার চেয়ে খুব আলাদা। এটা খুব সহজ। যেমন, আপনি যদি C# জানেন, শুধু C#-এ থাকুন, সেটা ঠিক আছে। কিন্তু আপনি যদি সময় আর ইচ্ছা বের করতে পারেন আর কিছু ভিন্ন চেষ্টা করতে পারেন, যেমন F# বা জানি না, Kotlin চেষ্টা করুন, শুধু ভিন্ন কিছু করুন আর দেখুন পার্থক্য কি। আপনি অনেক ভালো প্রোগ্রামার হবেন। আমি একেবারে ১০০% নিশ্চিত যে F# শেখার কারণে আমি আরও ভালো C# প্রোগ্রামার হয়েছি, যদিও এগুলো ভিন্ন ভাষা আর তাদের ভিন্ন দর্শন। কিন্তু আজকাল ভাষাগুলোর মধ্যে অনেক মিল। যখন ভাষাগুলো তখনো বেশ তরুণ ছিল, যেমন Lisp দেখতে C-এর মতোই নয়। তাই ফাংশনাল ভাষা imperative ভাষার চেয়ে খুব আলাদা ছিল। কিন্তু C#, Java, Kotlin, Rust-এর মতো আধুনিক ভাষাগুলো অন্য ভাষা থেকেও, এমনকি ফাংশনাল ভাষা থেকেও অনুপ্রেরণা নেয়। তাই আমি যখন ইউনিভার্সিটিতে ছিলাম, তখন সবসময় এই রসিকতা চলত, ফাংশনাল প্রোগ্রামিং দারুণ, কিন্তু কেউ এটা করে না। কিন্তু এখন আর সেটা সত্য নয়। তাই আপনি হয়তো ফাংশনাল ভাষায় কাজ করেন না, কিন্তু ফাংশনাল ভাষা সব জায়গায় আছে। JavaScript-এ অনেক ফাংশনাল কনসেপ্ট আছে। C#-এ অ্যাডভান্সড প্যাটার্ন ম্যাচিং আছে, LINQ আছে, অনেক ফাংশনাল জিনিস আছে। আর আপনি দেখছেন ভাষাগুলো চারদিক থেকে কনসেপ্ট ধার করছে। তাই কোন ভাষা ফাংশনাল আর কোন ভাষা শুধু imperative, সেটা আর ততটা স্পষ্ট নয়। এখন এটা বেশি মিশ্র। কিন্তু আমি এখনো মনে করি নতুন একটা ভাষা শেখা শুরু করলে অনেক লাভ আছে। কেউ কেউ বলেছেন প্রতি বছর একটা নতুন ভাষা শিখুন। আমি সেটা করার চেষ্টা করি। আমি কল্পনা করতে পারি এটা কারও কাছে বিরক্তিকর লাগবে, আর তারা অভিভূত হয়ে যাবে। কিন্তু অন্তত একটা ভিন্ন ভাষা চেষ্টা করুন, আর সেটা যেন এমন ভাষা হয় যা আপনার কমফোর্ট জোনের একটু বাইরে। আর আমি প্রতিশ্রুতি দিচ্ছি, আপনি শিখবেন, অনেক শিখবেন, আর সাধারণভাবে আরও ভালো প্রোগ্রামার হবেন। আর আপনার যে ভাষায় এখন কাজ করছেন সেটার জন্যও। Jonathan: আর আপনার যে ভাষায় এখন কাজ করছেন সেটার জন্যও। স্পষ্টতই মানুষ নির্দিষ্ট চাহিদা মেটাতে নতুন ভাষা বানায়। আর আপনি বলছেন imperative আর functional, এই দুটো একটু মিলে যাচ্ছে। আপনার কি কখনো মনে হয় এমন পরিস্থিতি আসবে যখন ভাষাগুলো হারিয়ে যাবে আর আমাদের হাতে কয়েকটা মূল ভাষা পড়ে থাকবে? নাকি এটা সহজ সরল ধারণা? Erik: না, না, আমার মনে হয় মানুষ এতটাই মতামতপ্রবণ যে এমন হবে না। তাই সবসময় নতুন ভাষা থাকবে। প্রতিদিনই নতুন ভাষা আসবে, সেটা ঠিক আছে। কিন্তু গাছ নাড়া লাগবে। জনপ্রিয়গুলো শেষ পর্যন্ত টিকে যাবে সম্ভবত। তাই আমি দেখছি না Java বা C# খুব শিগগিরই চলে যাবে। কিন্তু যেমন, C বা C++ সবসময়ই বিশাল ভাষা ছিল। কিন্তু এখন আমরা Rust দেখছি, যা একই সমস্যাগুলো মোকাবেলার একটা নতুন ধরন, কিন্তু বেশি সুরক্ষা নিয়ে। মানে বিল্ট-ইন সুরক্ষা। আর এটা দুর্দান্ত একটা ভাষা যা আমার আসলে আরও শেখা উচিত। কিন্তু এটা দেখা মজার যে Rust এখন ধীরে ধীরে সেই জায়গায় ঢুকছে, মানুষ C বা C++-এর বদলে এটা ব্যবহার করতে শুরু করছে, যা আমার ব্যক্তিগতভাবে খুব ভালো একটা জিনিস মনে হয়। কিন্তু যেমন, Linux-এ এখন আপনি Rust-এ আপনার ড্রাইভার লিখতে পারেন। মানে এটা সবসময়ই C++ হবে। কিন্তু এখন তারা Rust-এ ড্রাইভার লেখা সাপোর্ট করে। তাই এটা বেশ বড় একটা ধাপ ছিল। তাই আমার মনে হয় ভাষা থাকবেই, কারণ আপনি এমন একটা ভাষা বানাতে পারেন না যা সব কাজে মানায়। আর এজন্যই আমার মনে হয় আপনার একাধিক ভাষা শেখা উচিত, কারণ ভিন্ন পরিস্থিতিতে ভিন্ন ভাষা দরকার। তাই আপনি চেষ্টা করতে পারেন, আর এটা প্রায়... কী যেন? হাতুড়িকে করাতের মতো ব্যবহার করা। আমি জানি না ইংরেজিতে এই প্রবাদটা কী। Jonathan: প্রবাদটা? মানে, আচ্ছা, আপনার একটা করাত দরকার, কিন্তু আপনার কাছে শুধু একটা হাতুড়ি আছে। আপনি কী করবেন? আচ্ছা। Erik: হ্যাঁ, হ্যাঁ, সেরকম কিছু। এটা নতুন, আমার মনে হয় এটা একটা পেরেক আর হাতুড়ি নিয়ে, সেরকম কিছু, কিন্তু ইংরেজি প্রবাদে আমি ভালো নই, তবে ডাচ সংস্করণ দিয়ে আপনাকে বিরক্ত করব না। কিন্তু মূল কথা হলো, আপনি যদি শুধু C# জানেন, তাহলে সবকিছুর জন্য C# ব্যবহার করার একটা প্রলোভন থাকতে পারে, কিন্তু সিস্টেমস প্রোগ্রামিং বা জানি না, AI করার জন্য হয়তো আরও ভালো ভাষা আছে C#-এর চেয়ে, যদিও C#-এ আপনি এটা করতে পারেন, তার মানে এই নয় যে করা উচিত। তাই আপনি যদি বেশি ভাষা জানেন, তাহলে সম্ভবত ভালো সিদ্ধান্ত নিতে আরও উপযুক্ত হবেন। যা আপনার কাজের ডোমেইনের সঙ্গে বেশি মানানসই। Jonathan: আচ্ছা, তো এটা মজার আর সুন্দর। Exercism কমিউনিটি নিয়ে, এই সপ্তাহে আপনি Exercism কমিউনিটিকে কী সুপারিশ দেবেন, যা আপনি জোর দিয়ে বলবেন তারা চেষ্টা করে দেখুক, আর এটা যেকোনো কিছু হতে পারে। আপনি জানেন, হাঁটতে যান। হ্যান্ডস্ট্যান্ড করার চেষ্টা করুন। জানি না। ঠিক আছে, আপনি করতে পারেন, আর চাইলে একটার বেশি দিতে পারেন, আপনি... আমি ইতিমধ্যেই জানি আমি কী বলব, তাই আপনি তিনটা সুপারিশ দিতে পারেন। Erik: তো এটা মজার আর কাজের। আমি ইতিমধ্যেই জানি আমি কী বলব। আচ্ছা। আচ্ছা, যেটা প্রথমে মাথায় আসে, সেটা হলো আমাদের এখন যে Dig Deeper ট্যাবটা আছে, সেটা দেখুন। আমরা শুরু করেছি, Dig Deeper নামে নতুন ফিচারটা যোগ করেছি, যেখানে আপনি একটা অনুশীলনী সলভ করার পর, বা অন্তত একবার সেটাতে ইটারেট করার পর, অ্যাপ্রোচগুলো দেখতে পারেন, মানে একটা অনুশীলনী সমাধানের ভিন্ন ভিন্ন উপায়। আর Exercism V1-এ যোগ করা মন্তব্যগুলোর তুলনায় সবাই মূলত এভাবেই শিখত, অন্য মানুষের কোড দেখে আর তারা কীভাবে সমাধান করেছে তা দেখে। তাই আমি অনেকটাই এভাবেই Haskell শিখলাম, আমার মানসিক মন্তব্য ছাড়াও। শুধু দেখতাম, ওহ, এভাবে করা যায়। তারপর আপনি নিজে চেষ্টা করে দেখতেন আর বলতেন, এই, ওহ, এটা সত্যিই সুন্দর, আর আমি এটা দিয়ে আরও কাজ করতে পারি, তারপর এটা অন্য অনুশীলনীতে প্রয়োগ করতেন। তাই জিনিস ভিন্ন ভিন্ন উপায়ে করার এই রাস্তাগুলো খুঁজে পাওয়া, এটা প্রায় প্রোগ্রামিংয়ের শিল্পের দিকেই ফিরিয়ে নিয়ে যায়, যে আপনি ভিন্ন ভিন্ন উপায়ে জিনিস সমাধান করতে পারেন। তাই এই ভিন্ন ভিন্ন অ্যাপ্রোচ আছে। আমি স্ট্রিং উল্টানোর ওপর আর্টিকেল আর অ্যাপ্রোচ লিখেছি। এটা IT ইন্টারভিউতে পাওয়া মৌলিক ইন্টারভিউ প্রশ্নগুলোর একটা। স্ট্রিং কীভাবে উল্টাবেন? C#-এ কয়েকটা ভিন্ন আইডিওম্যাটিক উপায় আছে, কিন্তু এগুলো আলাদা আর এদের পারফরম্যান্সের বৈশিষ্ট্যও আলাদা, আর এর একটা আসলে পারফরম্যান্সের দিকেই বেশি, কিন্তু কম পড়ার-উপযোগী। তাই আমার ভালো লাগে যে ওয়েবসাইটে, আপনি একবার একটা উপায়ে সলভ করার পর বলতে পারেন, এই, অন্য উপায়ও আছে। আর এভাবে করার এই সুবিধাগুলো আছে। আর এগুলো হলো ট্রেড-অফ। আর এটা শুধু আপনি ভিন্ন অ্যাপ্রোচ দেখতে পারেন তাই নয়, আমরা একটা পরিচিতিমূলক ডকুমেন্টও লেখার চেষ্টা করি যেখানে এগুলোর মধ্যে বেছে নিতে সাহায্য করি। IT-তে সবসময় ট্রেড-অফ থাকে। কখনো এমন কোনো সলিউশন নেই, প্রায় কখনোই নয়, যা একেবারে সেরা। তাই আপনি সবসময় জিনিস ভিন্নভাবে লিখতে পারেন। তাই প্রায়ই, হ্যাঁ। তাই সবচেয়ে পড়ার-উপযোগী সলিউশন সবসময় সেরা পারফরম্যান্সের নয়। তাই ট্রেড-অফ করতে, ট্রেড-অফ বুঝতে আর ভিন্ন অ্যাপ্রোচের মধ্যে বেছে নিতে সাহায্য করা। এটাও আমরা Dig Deeper ট্যাবে করার চেষ্টা করি। আর আমি এখন অবসর সময়ে এগুলো লিখছি। শুধু এই তথ্যগুলো লিখে আর মানুষদের সঙ্গে শেয়ার করে আমার অনেক মজা লাগে। তাই আমি সত্যিই মানুষকে উৎসাহ দেব এগুলো লেখার বা শুধু অ্যাপ্রোচ পড়ার চেষ্টা করতে। আমি জানি প্রতিটা অনুশীলনীতে এগুলো আছে না। আমরা এই ফিচারটা এক সপ্তাহ আগে মাত্র শুরু করেছি। তাই এটা কয়েকটা C# অনুশীলনীতেই সীমিত থাকবে, কিন্তু আমরা এটা অনেক বাড়াব। আর এ ধরনের জিনিসের জন্য আমরা কমিউনিটির পুল রিকোয়েস্ট নিই। আর আমি খুশি মনে আপনাকে লিখতে সাহায্য করব, আর এটা শেষ করতে সাহায্য করব, আর আপনি আপনার ভাষার জ্ঞান শেয়ার করতে পারবেন। তাই আমার মনে হয় এটা এমন একটা জিনিস যা মানুষ সবসময় পছন্দ করে। কেউ যদি একটা ভাষা পছন্দ করে, তারা চায় অন্যরাও এটা পছন্দ করুক। তাই অ্যাপ্রোচ আপনার ভাষা কী করতে পারে তা দেখানোর দারুণ একটা উপায়। গিয়ে দেখুন। হ্যাঁ। Jonathan: গিয়ে দেখুন। এই সপ্তাহের জন্য আর কোনো আছে? Erik: উম, আচ্ছা, খুব বেশি Exercism-মনস্ক শোনার ঝুঁকি নিয়েও বলছি, আমার Exercism ফোরামটা সত্যিই ভালো লাগে। আমার ক্যারিয়ারে একটা জিনিস আমি বুঝেছি, সেটা হলো টেক-মনস্ক মানুষের এমন একটা কমিউনিটি খুঁজে পাওয়া সত্যিই কঠিন যা প্রায় একটা নিরাপদ জায়গা, যেখানে আপনি আলোচনা করতে পারেন, আর অন্যরা আপনাকে বোকা বোধ করায় না, ঝগড়ায় জড়ায় না বা লড়াই করতে আসে না। তাই আমার খুব ভালো লাগে যে আমরা ফোরাম দিয়ে এটাকে মানুষের জন্য খুব নিরাপদ আর আনন্দদায়ক জায়গা করার চেষ্টা করছি, আর একইসঙ্গে এমন জায়গা যেখানে আপনি খুব ভালো প্রোগ্রামারদের সঙ্গে দেখা করতে পারেন। মানে খুব দক্ষ মানুষ, যাদের নিজেদের ভাষা বা প্রোগ্রামিংয়ের জগৎ নিয়ে দারুণ অন্তর্দৃষ্টি আছে। আর অন্যরা কী লিখেছে শুধু পড়তেও আমার দারুণ লাগে। আপনার প্রিয় প্রোগ্রামিং বই কী, এমন একটা থ্রেড আছে। আর আমি ইতিমধ্যেই আমার পড়ার তালিকার শর্টলিস্টে কিছু বই রেখেছি, কারণ... হ্যাঁ, আপনি প্রতিটা বইয়ের সন্ধান পান না। কিন্তু অন্যরা সেগুলো পড়েছে। মূলত আপনি জনতার প্রজ্ঞা ব্যবহার করতে পারেন। Jonathan: মানুষ তো এর মধ্য দিয়ে গেছে, তাহলে আমরা মূলত জনতার প্রজ্ঞা ব্যবহার করতে পারি, ওই থ্রেডটা, আর আমি নিশ্চিত ওখান থেকে আমরা কিছু সত্যিকারের সোনা বের করতে পারব, কিন্তু মানে, আপনি জানেন, এটা সত্যিই দারুণ, Eric। আমার মনে হয় আপনি যদি আরেকটা সুপারিশ দিতে চান, স্বাগতম, নইলে আমরা শুধু জিনিসগুলো একটু গুছিয়ে আনব, কিন্তু আর কোনো ভাবনা বা মন্তব্য? হ্যাঁ, চলুন শেয়ার করি। Erik: উম, হ্যাঁ, সেটা ভিডিওতে যাবে। না, আসলে না। আমি তৃতীয়টা খুঁজে বের করার চেষ্টা করছিলাম। Jonathan: আর আমি সত্যিই, আমি সবসময় তৃতীয়টা খুঁজে বের করার চেষ্টা করি। সেক্ষেত্রে অনেক বেশি। কিন্তু Eric, এই সময়ের জন্য আপনাকে অসংখ্য ধন্যবাদ। আপনার গল্প শুনতে, কীভাবে সেটা টেকে ছড়িয়ে পড়েছে শুনতে সত্যিই দারুণ লেগেছে। আমি বিশেষভাবে ইতিহাস নিয়ে একটু শুনতে দারুণ উপভোগ করেছি, আর হয়তো এটা নিয়ে আপনি ভাবতে পারেন আর একটু বিস্তারিত শেয়ার করতে পারেন যে ইতিহাস আর কোডিং আর এসব কীভাবে এক সময়ে মিলে যায়। কিন্তু আপনাকে অসংখ্য ধন্যবাদ। টিমে আপনাকে পেয়ে দারুণ লাগছে, আর আমি আপনার কাছ থেকে নিশ্চিতভাবে অনেক কিছু শিখেছি আর শিখতেই থাকব। আপনাকে বড় অভিনন্দন, কারণ আপনি Exercism ওয়েবসাইটে ১,০০,০০০ রেপ পয়েন্ট পার করেছেন। আমি জানি আপনি বলবেন যে এর কারণ আপনি প্রতারণা করেছেন, কিন্তু তবুও, আমরা এটাকে যেভাবেই হোক একটা অসাধারণ অর্জন হিসেবেই ধরব। তাই আপনাকে অসংখ্য ধন্যবাদ। আর হ্যাঁ, আপনি যদি এটা শুনছেন আর Exercism-এর সঙ্গে পরিচয় হয়নি, গিয়ে Exercism দেখুন, আর আমি নিশ্চিত আপনি ওই জগতে কোনো এক জায়গায় Eric-কে পাবেন। কিন্তু Eric, ধন্যবাদ। আমি সত্যিই কৃতজ্ঞ। আর আমি এই রেকর্ডিংটা থামাব, তারপর আমরা এটা নিয়ে আবার কথা বলতে পারি, কিন্তু আপনার সময়ের জন্য ধন্যবাদ। আর আশা করি আপনি আমার মতোই আনন্দ উপভোগ করেছেন। এটা দারুণ ছিল। Erik: আপত্তি নেই তো? দারুণ। হ্যাঁ, করেছি। করেছি। অনেক ধন্যবাদ।

আমাদের কমিউনিটির আরও গল্প

আমাদের কমিউনিটির সদস্যদের কথা শুনুন, শিখুন এবং অনুপ্রাণিত হোন।