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

Python দিয়ে যাত্রা শুরু করুন!

মাঝে মাঝেই আমরা এমন কাউকে পাই যিনি প্রোগ্রামিং শেখার সময় একেবারে গভীরে ঝাঁপ দেন! কার্ল, যিনি অনলাইনে 'মিটবল' নামেও পরিচিত, Exercism-এর Python ট্র্যাক দিয়ে কোড শেখা শুরু করেছিলেন... এটা সত্যিই কম কীর্তি না, কিন্তু চ্যালেঞ্জ কে না ভালোবাসে!

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

Jonathan: তাহলে, হ্যালো এবং Exercism পডকাস্টে স্বাগতম। আমার নাম Jonathan। আবারও আপনার সঙ্গে জীবন আর গল্প ভাগ করে নিতে পারাটা আমার জন্য সম্মানের ব্যাপার, আপনি যেখানেই থাকুন না কেন। আজ আমাদের একজন অতিথি আছেন, তাঁর নাম Karl। আমি সরাসরি শুরু করে দিচ্ছি এবং Karl-কে বলব একটু নিজের পরিচয় দিতে। তাহলে Karl, বলুন তো আপনি কোথা থেকে এসেছেন? এখন কী নিয়ে ব্যস্ত আছেন? আর Exercism-এর খোঁজ কীভাবে পেলেন?

Carl: আমি সুইডেনের গোথেনবার্গ শহরে থাকি, আর এখন আমি পূর্ণকালীন ছাত্র। কিন্তু যখন আমি টেক ইন্ডাস্ট্রি আর প্রোগ্রামিং-এ ঢুকলাম, তখন আমি Exercism ব্যবহার করতাম। আমি শুরু করেছিলাম Python ট্র্যাক দিয়ে, আর আমার মনে হয় Python ট্র্যাকটাই বেশিরভাগ শিক্ষানবিশের জন্য সেরা ট্র্যাক, কারণ Python-এর সিনট্যাক্স বেশ সহজ, আর আমার মতে বেশ স্বাভাবিকও। আর প্রোগ্রামিং ভাষার টাইপের কথা বলতে গেলে, Python আপনার প্রতি বেশ নরম ব্যবহার করে। এতে তেমন বেশি টাইপ নেই, ডেটা টাইপ, তবে... হ্যাঁ। তাই আমি ধারণা অনুশীলনীগুলো করতে আর সিলেবাস অনুযায়ী এগোতে শুরু করলাম। আমি সেটা প্রায় প্রতি দুই সপ্তাহে একবার এক বা দুইটা অনুশীলনী করে করতাম। কিছুদিন পর, যখন আমি আসলে, কারণ শুরুতে... অনেক ভুল করেছিলাম, যেগুলো এখন পিছনে তাকিয়ে দেখি। এখন যখন বয়স বেড়েছে, বা... এখন যখন অনেক দিন ধরে প্রোগ্রাম করছি, তখন সেই ভুলগুলো ধরতে পারি। তাই আপনার কোড শুরুতে নিখুঁত হতে হবে না। আর আমার যেটা ভালো লাগল, সেটা হলো যখন আমি আসলে... Python ট্র্যাকে অনেক অনুশীলনী করে ফেললাম, তখন আমি Ruby ট্র্যাকে চলে যাই। আচ্ছা। Python থেকে সরে আসার জন্য Ruby কেন দারুণ ভাষা, কারণ দুটোতে অনেক মিল আছে। আর, Ruby-এর সিনট্যাক্সও প্রায় একই রকম, তবে কিছু পার্থক্য আছে। যেমন, Ruby অনেক বেশি OOP, অবজেক্ট ওরিয়েন্টেড। তাই আমার মনে হয় একজন শিক্ষানবিশের জন্য Python দিয়ে শুরু করে পরে Ruby-তে যাওয়াটা বেশ ভালো একটা যাত্রা হতে পারে। আর পরের বার দেখা হবে।

Jonathan: আপনি Python দিয়ে শুরু করেছেন। মানে, সাধারণত মানুষ যখন Exercism-এ আসে, তাদের ডেভেলপমেন্টের কিছুটা অভিজ্ঞতা থাকে। যদি আপনার আগে থেকে ডেভেলপিং আর কোডিংয়ের কিছু জ্ঞান ও অভিজ্ঞতা থাকে, তাহলে মানুষ প্রায়ই Exercism ব্যবহার করে কোনো নির্দিষ্ট ভাষায় দক্ষতা বাড়াতে। কিন্তু আমি কি ঠিক ধরেছি যে আপনি কোনো কোডিং বা প্রোগ্রামিং অভিজ্ঞতা ছাড়াই এসেছিলেন এবং Exercism দিয়ে শুরু করেছিলেন?

Carl: আমি আগে একটু Scratch নিয়ে কাজ করেছি, মানে ভিজ্যুয়াল প্রোগ্রামিং, কিন্তু আসল কোড কখনো করিনি। শূন্য থেকে শুরু করা কষ্টের। আর আমার মনে হয় এটা প্রতিটা প্রোগ্রামারের ক্ষেত্রেই কমবেশি সত্য। শুরুটা একটা পাহাড়ের মতো, আর একবার পাহাড় বেয়ে উপরে উঠে গেলেই ব্যাপারটা সহজ হয়ে যায়। আপনার ক্ষেত্রেও তাই।

Jonathan: আমি ভেবেছিলাম আপনি বলবেন, আপনি পাহাড় বেয়ে উঠলেন, তারপর পাহাড়টা আরও বড় হয়ে গেল, তারপর একটু উঠলেন, তারপর সেটা আরও বড়, আরও বড়, আরও বড় হতে থাকল। আপনার কি কখনো এমন মনে হয়েছে? একটা সময় ছিল যখন সবকিছু অর্থবহ মনে হতে শুরু করে। এমন কোনো মুহূর্ত ছিল যখন আপনি ভেবেছেন, আচ্ছা হ্যাঁ, এবার বুঝেছি?

Carl: মানে, আসলে, কোনো কিছু পুরোপুরি বুঝতে অনেক সময় লাগে, আর শুরুতে বেশিরভাগ মানুষ প্রায়ই যা করে তা হলো... while লুপ অনেক বেশি ব্যবহার করে, কারণ while লুপ অনেক বেশি নিয়ন্ত্রণ করা যায়, for লুপের চেয়ে। কারণ for লুপে তো শুরুর আগেই বলে দিতে হয় লুপটা কত লম্বা হবে। আর আমার মনে হয়... যখন আমি আসলে ঠিকভাবে for লুপ ব্যবহার করতে শিখলাম, আর while লুপ অতিরিক্ত ব্যবহার করা বন্ধ করলাম, তখন আমার মনে হয় প্রোগ্রামিং-এ ক্লিক হয়ে গেল, বা লুপ কেমন করে কাজ করে সেটা অনেক বেশি পরিষ্কার হয়ে গেল।

Jonathan: আচ্ছা, তাহলে ওটা এমন একটা মুহূর্ত ছিল যখন আপনার মনে হয়েছে, ঠিক আছে, এই ধারণাটা আমি বুঝে গেছি। তারপর কি আপনার লুপ সম্পর্কে বোঝাপড়া অন্য ধারণাগুলোতেও ছড়িয়ে পড়ল, যেগুলো ক্রমে আরও বেশি অর্থবহ হতে শুরু করল? আমি এখানে নিজের অভিজ্ঞতা থেকে বলি। আমি Go ট্র্যাকেও Go শিখছি। আর লুপ আমার কাছে কখনোই অর্থবহ হয়নি, যতক্ষণ না আমি প্রায়, সম্ভবত তিন দিন অনুশীলনী আর ডকুমেন্টেশন ঘেঁটে, একেকটা টুকরো করে আলাদা করে জোড়া লাগালাম। আর লুপ নিয়ে কাজ করে লুপ বোঝার সেই অভিজ্ঞতা আসলে সাধারণভাবে কোড বোঝার উপর, আর ফাংশন আর এই ধরনের জিনিস কীভাবে কাজ করে তা বোঝার উপর সত্যিই বড় প্রভাব ফেলেছে। আপনার ক্ষেত্রেও কি একই রকম ছিল, বলবেন?

Carl: Python-এ সমস্যা সমাধানের জন্য আপনাকে প্রায়ই নানা জিনিসের উপর ইটারেশন করতে হয়। Python-এ মোটামুটি এটাই একমাত্র কাজ যা আপনি করেন। Python-এ আপনি সমস্যা সমাধানের জন্য জিনিসের উপর ইটারেশন করেন। তার মানে লুপ পুরোপুরি বোঝা খুব জরুরি। যখন আপনি Python-এ লুপ পুরোপুরি বুঝে যান, তখন আপনি অনেক কিছু করতে পারেন, কারণ সবকিছুই অবজেক্টের উপর ইটারেশন করার উপর দাঁড়িয়ে আছে।

Jonathan: দারুণ। তাহলে আপনি এখন পড়াশোনা করছেন, এই রেকর্ডিংয়ের আগে একটু বলেছিলেন, যেমন গণিত, পদার্থবিজ্ঞান। এখন আপনি ঠিক কী বিষয় নিয়ে পড়ছেন? এই মুহূর্তে কোন টপিক বা কোন বিষয় পড়ছেন?

Carl: আমি প্রোগ্রামিং, গণিত আর পদার্থবিজ্ঞান পড়ছি।

Jonathan: আচ্ছা, এগুলো কেমন লাগছে আপনার?

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

Jonathan: দারুণ তো।

Carl: ওই কোর্সগুলো থেকে আমি তেমন কিছু শিখি না, বরং তার বদলে মার্কসবাদ নিয়ে শিখি।

Jonathan: তাহলে Karl, আপনি কি বলতে চাইছেন যে মানুষের বিশ্ববিদ্যালয়ের ডিগ্রির বদলে Exercism করা উচিত?

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

Jonathan: আমি ওখানে একটু খুনসুটি করছিলাম, কারণ আপনি যদি ডিগ্রিধারী মানুষদের বলেন যে তারা কিছুই জানে না, তাহলে আমরা সম্ভবত অনেককে কষ্ট দেব। তাই ওই প্রসঙ্গটা বাদ দিই। আর Karl, বলুন তো, এখন আমি আপনাকে বড় হওয়ার সময় নিয়ে আরও কিছু প্রশ্ন করব। আপনার কী ছিল... কথাটা ঠিকভাবে সাজাতে চেষ্টা করছি। মানে ছোটবেলায় সমস্যা সমাধান করতে আপনার ভালো লাগত? Lego বা ওই ধরনের জিনিসে আপনার আগ্রহ ছিল? আর এই প্রশ্ন করার কারণ হলো, মানুষ যখন প্রোগ্রামিং করে, তখন সমস্যা সমাধান করার একটা স্বাভাবিক আনন্দ প্রায়ই থাকে। তাহলে বড় হওয়ার সময় আপনার অনেক শখ ছিল, বা এমন কিছু জিনিস ছিল যা একটু বেশি টেকনিক্যাল? একটু বলুন তো।

Carl: মানে, আমার Lego ভালো লাগত। আমি... মানে, আমি ছোটবেলায় গণিতে ভালো ছিলাম। ওটাও এক ধরনের সমস্যা সমাধান, নানা রকম গণিতের সমস্যা সমাধানের চেষ্টা। আমার মনে হয় আমাকে আসলে প্রোগ্রামিং-এ সবচেয়ে বেশি টেনেছে... সাধারণভাবে টেক ইন্ডাস্ট্রিতে আমার আগ্রহ, আমি কম্পিউটার খুব ভালোবাসি। আর আমি সত্যিই ভালোবাসি... ধন্যবাদ। কেউ যখন কম্পিউটারে সমস্যায় পড়ে, তখন বলে, আহ, একটু সাহায্য করবেন? এটা মাঝে মাঝে একটু বিরক্তিকর লাগতে পারে, কিন্তু আসলে প্রায়ই খুব মজার। তাই আসলে আমি কম্পিউটার আর কম্পিউটিং-এ খুব আগ্রহী হয়ে উঠি, আর সেই আগ্রহই আমাকে মজার প্রোগ্রামিংয়ের দিকে নিয়ে আসে।

Jonathan: আচ্ছা, তাহলে এখন, আমার যতটা বোঝা যায়, আপনি Exercism-এ এখন চার থেকে পাঁচটা ট্র্যাক শেষ করেছেন, বা আপনি আসলে Exercism ব্যবহার করে চার থেকে পাঁচটা ভাষা শিখেছেন, তাই না?

Carl: তাই না? হ্যাঁ, আমি... আমি প্রায় ছয়টা ট্র্যাকে শুরু করেছি। আচ্ছা। কিন্তু মোটামুটি ভালোভাবে জানি বলতে পারি চারটার মতো।

Jonathan: আচ্ছা, তার মধ্যে কোনগুলো? Python, Ruby হবে।

Carl: Python, Ruby, JavaScript আর TypeScript, কিন্তু Elixir-ও মোটামুটি জানি।

Jonathan: আচ্ছা, তাহলে সব ভাষার মধ্যে শেখার দিক থেকে কোনটা আপনার সবচেয়ে বেশি ভালো লেগেছে?

Carl: আমার Elixir সত্যিই খুব ভালো লাগে। ওই ভাষায় আপনি কীভাবে টাইপ করেন, সেটা আমার দারুণ পছন্দ। আমার মনে হয় এটা টাইপ করার জন্য খুব... খুব মজার একটা ভাষা, কিন্তু অন্য ভাষায় আমি যা শিখে অভ্যস্ত তার থেকে এটা অনেক আলাদা। কিছু জায়গায় মনে হয় একেবারে শুরু থেকে শুরু করছি। হ্যাঁ। কিন্তু আমার মনে হয় কেউ যদি সত্যিই সত্যিই শক্তিশালী একটা ভাষা শিখতে চায়, তাহলে JavaScript আছে। আমার মতে এটা আপনি জানতে পারেন এমন সবচেয়ে শক্তিশালী ভাষাগুলোর একটা।

Jonathan: আচ্ছা, তাহলে JavaScript হবে, আমি ভুল হলে শুধরে দিন, একটু বেশি ইন্টারপ্রেটেড ভাষা। এটা কি ঠিক কথা হবে? আর Elixir সম্ভবত একটু বেশি ফাংশনাল। তাই না?

Carl: হ্যাঁ।

Jonathan: আচ্ছা, তাহলে দুটো আসলে বেশ আলাদা। তাই আমার কাছে এটা মজার লাগছে যে আপনি ওই দুটো ভাষার পুরো পরিসরটাই উপভোগ করছেন। Elixir-এর কী এমন আছে? Elixir-এর কোন জিনিসটা আপনার কাছে মজার বা উপভোগ্য? এটা কি একটু নির্দিষ্ট করে বলতে পারবেন?

Carl: মানে, এটা হলো এই ফাংশনাল প্রোগ্রামিং। যেমন, আপনার কাছে থাকে এই... আপনার কাছে এই ফাংশনগুলো থাকে, আর আপনাকে সেগুলো সব একসাথে জোড়া লাগাতে হয়। আর এই সব ফাংশন দিয়ে আপনাকে সমস্যাটা সমাধান করতে হয়। মানে, আর তার মানে আমার জন্য, অন্তত আমি অনেকটাই, আসলে কিছু করতে হলে Elixir-এর ডকুমেন্টেশন খুব জরুরি। আর Elixir-এর ডকুমেন্টেশন আমার মতে দারুণ। তাই সঠিক মেথডগুলো খুঁজে বের করেই আপনি সমাধান করেন, যা আমার কাছে খুব মজার লাগে।

Jonathan: তাহলে এটা প্রায় ধাঁধা জোড়া লাগানোর মতো, বলা যায়, যেখানে আপনি সবকিছু একসাথে জোড়া লাগান যাতে সমস্যাটা দেখতে পারেন।

Carl: সবকিছু একসাথে জোড়া লাগানো, যাতে একটা ধাঁধা সম্পূর্ণ হয়। আর আমি যেমন বললাম, ভাষাটা আপনি কীভাবে লেখেন সেটাও আমার দারুণ পছন্দ। তাই এটা খুব সুন্দর একটা ধাঁধা।

Jonathan: আচ্ছা, দারুণ। তাহলে ওই ট্র্যাকে আপনি এখন কোথায় আছেন? আপনি কি প্র্যাকটিস অনুশীলনীগুলো শেষ করেছেন, নাকি এখনো ধারণা অনুশীলনীতেই আছেন?

Carl: ওই ভাষার জন্য অনেক ধারণা অনুশীলনী আছে। আমার মনে হয় ২০টা বা হয়তো তার বেশি। আমি এখনো ধারণা অনুশীলনীতেই আছি, আমি প্রায়... সম্ভবত ৯০ শতাংশের মতো শেষ করেছি, তাই প্রায় শেষের পথে।

Jonathan: দারুণ, খুব ভালো। সত্যিই দারুণ। তাহলে Karl, আমি জীবনের আরেকটু নানা দিক জানতে চাই, শুধু কোডিং আর ডেভেলপমেন্টের বাইরেও। তাহলে আপনার অবসর সময়ে বা শখ হিসেবে যা করতে ভালো লাগে, তার মধ্যে কী কী আছে? এমন কিছু আছে যা আপনি সত্যিই, যদি কোডিং ছাড়া পুরো সময় দিতে পারতেন, তাহলে কী করতেন?

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

Jonathan: মাউন্টেন বাইকিং নাকি রোড বাইকিং?

Carl: রোড বাইকিং।

Jonathan: তাহলে আপনি সাইকেল চালান? মানে একটু বলুন, কারণ আপনি তো সুইডেনে, তাই না? হ্যাঁ। আর আপনি যেখানে থাকেন, সেটা সমতল? পাহাড়ি? আপনার সেখানে সুন্দর সমুদ্র আছে? কারণ সুইডেন সম্বন্ধে আমার ধারণা হলো সেখানে সমুদ্র আছে।

Carl: আপনার সেখানে সমুদ্র আছে। হ্যাঁ, যেখানে আমি থাকি সেটা বেশ সমতল। কিন্তু উত্তর দিকে গেলে বেশি পাহাড়ি।

Jonathan: এখন সুইডেনে বরফ পড়ছে? মনে হচ্ছে এখন ঠান্ডা শুরু হতে যাচ্ছে।

Carl: গত সপ্তাহে বোধহয় বরফ পড়েছিল, কিন্তু এখন খুব একটা বরফ নেই।

Jonathan: আচ্ছা, আর আপনি কি বরফের মধ্যে সাইকেল চালান?

Carl: হ্যাঁ।

Jonathan: আপনি চালান। তাহলে আমাদের আরেকজন আছেন, আপনি Brian-কে চিনতে পারেন। Brian, তিনি Elixir মেন্টরদের একজন। Brian Underwood, তিনিও সুইডেনে থাকেন, আমার মনে হয় স্টকহোমে, আর তিনি শীতের মাঝখানে দৌড়াতে যান, সুইডেনের অন্ধকার রাতের মধ্যে দৌড়ান। তাই আমার কাছে এটা বেশ, বেশ দারুণ লেগেছিল। তাহলে আপনি কি প্রায়ই সাইকেল চালান, যেমন সপ্তাহে একবার, সপ্তাহে দুবার? নাকি এটা নিয়মিত করেন? নাকি শুধু...

Carl: আমি, আমি, আমি, যখন আমি, আমি যাই, আমি, আমি বাস স্টেশন পর্যন্ত সাইকেল চালিয়ে যাই, তারপর বাস স্টেশন থেকে বাস নিই।

Jonathan: আচ্ছা, তারপর আপনি একটা সুন্দর জায়গা বের করেন, তারপর... তাহলে আপনি বাসে যাতায়াত করেন।

Carl: আমি সাইকেলে বাস স্টেশন পর্যন্ত যাই, তারপর বাসে যাই।

Jonathan: বুঝলাম। আচ্ছা, আচ্ছা, দারুণ। আর Karl, আপনার বাড়ি থেকে বিশ্ববিদ্যালয় কত দূরে? আপনি এখন বাড়িতে থাকেন নাকি ভাড়া বাসায়? আপনার ব্যবস্থাটা কী?

Carl: আপনার ব্যবস্থাটা কী? আমি বাড়িতেই থাকি। এটা ৩০ কিলোমিটার দূরে। এটা, আমাদের, সময় লাগে প্রায়, জানি না। ওহ, দাঁড়ান। হ্যাঁ, ৩০ কিলোমিটার, এটাই সম্ভবত ঠিক। প্রায় ৪০ মিনিটের মতো লাগে।

Jonathan: আচ্ছা, তাহলে তেমন খারাপ না, তবে এখনো বেশ লম্বা পথ যেতে হয়। তাহলে এই কথিত বাস্তব জীবনে ঢোকার আগে আপনার আর কত বছর পড়াশোনা বাকি? আপনার আর চার বছর পড়াশোনা বাকি। আপনি কি এখন প্রথম বর্ষে?

Carl: হ্যাঁ।

Jonathan: আচ্ছা, বাহ। তাহলে আপনি প্রথম বছর শেষ করেছেন, আর এটা চার বছরের ডিগ্রি। আচ্ছা। আর কী, ভবিষ্যতে আপনার স্বপ্ন কী, বা ক্যারিয়ার হিসেবে আপনি কী করতে চান, নাকি এ নিয়ে কোনো ভাবনা আছে?

Carl: মানে, আমি সবসময় মহাকাশ নিয়ে কাজ করতে চেয়েছি, কারণ আমার মনে হয় ওটা দারুণ। জ্যোতিঃপদার্থবিজ্ঞান জাতীয় কিছু না, বরং মহাকাশ সংক্রান্ত কিছু প্রোগ্রামিং করা। আর আমাদের তো ইউরোপীয় মহাকাশ সংস্থা আছে, ওটা একটা জিনিস হতে পারে, কিন্তু... যদি সেটা না হয়, তাহলে আমার মনে হয়, জানি না, একটা সাদামাটা backend চাকরিই ভালো হবে।

Jonathan: শুধু একটা সাদামাটা backend, কী দারুণভাবে বললেন। আমার কানে শুনতে এটা খুব সহজ আর সোজা লাগছে। আর আপনি কি কখনো সুইডেন ছাড়া অন্য কোথাও চলে যেতে চাইবেন বলে মনে করেন? নাকি সুইডেনই ভালো লাগে? এ নিয়ে কোনো ভাবনা আছে? মানে, শুনুন, আমি আপনাকে এমন কিছু প্রশ্ন করছি যা আপনি হয়তো এখনো ভাবেনওনি, কারণ এই সিদ্ধান্ত নিতে আপনার আরও কয়েক বছর বাকি। কিন্তু মহাকাশ শুনতে সত্যিই খুব চমৎকার লাগছে। আপনি এটা কীভাবে করবেন? কীভাবে এতে ঢুকতে শুরু করবেন?

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

Jonathan: আচ্ছা, তাহলে ঠান্ডা, বরফ আর তুষার। এটা নিয়ে আপনি খুশি? হ্যাঁ। Karl, আপনার ভাই, বোন, কোনো ভাইবোন আছে?

Carl: আমার ছোট একটা ভাই আছে।

Jonathan: আচ্ছা, তাহলে আপনারা দুজন। আর তার প্রোগ্রামিং ভালো লাগে? আপনি যা শেখেন আর যা জানেন, সেটা তাকে শেখান?

Carl: ওহ, আসলে তার প্রোগ্রামিং পছন্দ না। জানি না।

Jonathan: আহা সত্যিই? তাহলে কোনো মিল নেই। কিন্তু তার সাথে কি খেলাও খেলেন?

Carl: মাঝে মাঝে তার সাথে গেম খেলি, হ্যাঁ।

Jonathan: ও কি আপনার চেয়ে অনেক ছোট, নাকি ধরে নিই সে এখন স্কুলে পড়ে?

Carl: ও আমার চেয়ে প্রায় পাঁচ বছরের ছোট।

Jonathan: আচ্ছা, তাহলে বয়সের অনেক ফারাক। ও, দারুণ। দারুণ ব্যাপার। তাহলে Exercism আর আপনার সংশ্লিষ্টতায় ফিরে আসি, আপনি এখন Python ট্র্যাকে মেইনটেইন করছেন, আমি ভুল না করলে? হ্যাঁ, বা কন্ট্রিবিউট করছেন। কন্ট্রিবিউট, আচ্ছা, দারুণ। একদিন মেইনটেইন করবেন। কিন্তু এটা আপনার কেমন লাগছে? এই অভিজ্ঞতা থেকে আপনি কী কী শিখেছেন?

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

Jonathan: তাহলে কন্ট্রিবিউট করার দিক থেকে এটা কি আপনার ভালো লেগেছে, বিশেষভাবে একটা চর্চা হিসেবে?

Carl: হ্যাঁ, আর মানে ওই ডকুমেন্টেশনগুলো পড়তে পড়তে আমি অনেক শিখি।

Jonathan: না, দারুণ ব্যাপার। তাহলে এখন Python-এ কন্ট্রিবিউট করার দিক থেকে, আপনার ভাবনা কি যে আপনি Elixir আর Ruby-তেও কন্ট্রিবিউট করা শুরু করতে চান? এটা কীভাবে দেখছেন?

Carl: মানে, হ্যাঁ, আমি নিজেকে Ruby ট্র্যাকে কন্ট্রিবিউট করতে দেখতে পাচ্ছি, কিন্তু Elixir-এ, তা মনে হয় না। আমার একটা দীর্ঘমেয়াদি পরিকল্পনা আছে যে আমি TypeScript ট্র্যাকে কন্ট্রিবিউট করব, কিন্তু দেখতে হবে। আমার মনে হয় আমি আসলে পরের ছয় মাস Python ট্র্যাকেই থাকব।

Jonathan: আচ্ছা, দারুণ। তাহলে বলুন তো, TypeScript সম্বন্ধে আপনি আমাকে একটু বুঝিয়ে বলতে পারবেন? মানে, এটা আসলে কী নিয়ে, সেটা একটু বোঝা যাবে। প্রশ্ন করার কারণ হলো, আমি এটার কথা শুনেছি। কিন্তু শুনেছি এটা একরকম... JavaScript-কে মজবুত করে, কিন্তু আবার, আমি একেবারে ভুল হলে আপনি বলে দিতে পারেন। এটা একরকম JavaScript-কে একটু সেফটি চেক করতে সাহায্য করে, তবে আমি ভুলও হতে পারি। এটা আসলে কী?

Carl: এটা কী? মানে, আপনার বর্ণনাটা বেশ ভালো। আমার একটা frontend ক্লাস ছিল, আর শিক্ষক JavaScript ব্যবহার করতেন, তিনি HTML-এ কিছু বেসিক JavaScript করতেন। কারণ আমি এই কোডটা TypeScript-এ কপি পেস্ট করেছিলাম। আর TypeScript বলল, না না, এটা করা উচিত না। এটা আনসেফ। তাই অনেকটাই এ নিয়ে, মানে আপনার কোড সেফ রাখা নিয়ে। যেমন ক্র্যাশ আটকানো আর এই ধরনের জিনিস। তাই এটা টাইপ নিয়ে এলো, যাতে আপনার টাইপ কনফ্লিক্ট না হয়। আর হ্যাঁ, সাধারণভাবে এটা আপনাকে সেফ জিনিস করতে বলে, আনসেফ কোড নয়। হ্যাঁ, এটা একটা আলাদা ভাষা, কিন্তু JavaScript-এর সাথে খুব মিল। আপনি প্রায়ই TypeScript-কে JavaScript-এর মতো ভাবতে পারেন, তবে তার উপর বর্ম পরানো। তাই এটা একরকম সুরক্ষিত।

Jonathan: আচ্ছা, তাহলে এটা নিজেই একটা ভাষা। আমার মাথায় ধারণা ছিল এটা প্রায় JavaScript-এর একটা প্লাগ-ইনের মতো, কিন্তু আপনি বলছেন এটা আসলে পুরোপুরি নিজস্ব একটা ভাষা।

Carl: আমার মনে হয় তাই। মানে, দুটো খুব মিল, তাই হয়তো একই, মানে এটা একটা প্লাগ-ইনও হতে পারে, কিন্তু আমি এটাকে নিজস্ব একটা ভাষা হিসেবেই ভাবতে পছন্দ করি, কারণ এর কিছু গুরুত্বপূর্ণ পার্থক্য আছে।

Jonathan: আমি সম্ভবত এইমাত্র বলেই সব TypeScript ভক্তকে কষ্ট দিয়েছি যে এটা JavaScript-এর একটা প্লাগ-ইন। আমি নিশ্চিত এটা নিয়ে কিছু মজার মতামত ছড়াবে। কিন্তু তাহলে আপনার কাছে TypeScript-এর সেফটির অংশটাই একে আরও ঘেঁটে দেখার মতো একটা বৈশিষ্ট্য করে তোলে। তাই না?

Carl: মানে। আসলে আমাকে TypeScript-এ টেনেছে এটা যে আমার React লাইব্রেরিটা সাধারণ JavaScript সাপোর্ট করত না, শুধু TypeScript সাপোর্ট করত। আমি TypeScript-এ অভ্যস্ত হয়ে গেছি, আর আমার মনে হয় এটা সত্যিই দারুণ। টাইপ ব্যবহার করলে কোড আরও পরিষ্কারও হয়, কারণ আপনি আসলে দেখতে পারেন, আচ্ছা, এটা ইনপুট নিচ্ছে একটা সংখ্যা, আর আউটপুট দিচ্ছে একটা স্ট্রিং। পড়তে সহজ হয়ে যায়।

Jonathan: আচ্ছা, আপনি ওখানে React Native-এর কথা বললেন। আপনি frontend ডেভেলপমেন্ট পছন্দ করেন নাকি backend? আমার বোঝা থেকে মনে হচ্ছে আপনি backend পছন্দ করেন। কিন্তু frontend-এ একটু হাত দেন কি?

Carl: আমি frontend-এ একটু হাত দিয়েছি, কিন্তু CSS-এ আমি খুব খারাপ। তাই সাধারণত ভালো কোনো UI লাইব্রেরি খুঁজে সেটাই ব্যবহার করার চেষ্টা করি।

Jonathan: CSS-এ খারাপ বলতে আপনি কী বোঝাচ্ছেন? মানে, আপনি এটা বোঝেন না, নাকি এটা শুধু বিভ্রান্তিকর, নাকি অনেক বেশি... মানে, এর কোন জিনিসটা নিয়ে আপনার একটু সমস্যা হয়?

Carl: যে জিনিসটা নিয়ে সমস্যা হয়। ব্যাপারটা হলো, একটা অবজেক্টে আপনি এত এত জিনিস অ্যাসাইন করতে পারেন, খুব সহজে। ওহ, মাঝের জিনিসটা সরাতে, যেমন আপনি যখন CSS-এ বা HTML-এ একটা লিংক বানান, টেক্সটের নিচে একটা দাগ চলে আসে। আর সেটা সরাতে হলে আপনাকে text-decoration যোগ করে তারপর none লিখতে হয়। তখনই আসলে সেটা সরে যায়। আর এমন কত কী যে মনে রাখতে হয়। আর CSS-এ সবচেয়ে বিরক্তিকর হলো, আপনি কোডে বা CSS-এ একটা পরিবর্তন করলেন, আর সেটা প্রায়ই অন্য কিছু নষ্ট করে দেয়। তাই আপনাকে আসলে, আচ্ছা, এই সমস্যাটা তো সমাধান করলাম। এখন এই সমস্যাটা এল, এবার ওটা সমাধান করতে হবে, আর এভাবে চলতেই থাকে। তাই এটা শুধু চলতেই থাকে।

Jonathan: তাই এটা শুধু সমস্যাটাকে রাস্তার ধারে ঠেলে দিতে দিতে অন্য কোথাও নিয়ে যায়। তাই এটা নিশ্চয়ই খুব হতাশাজনক। আমি মনে করি CSS নিয়ে আমার একমাত্র অভিজ্ঞতা ছিল শেখা, মানে React শেখার চেষ্টাও। আর আপনার কাছে এত এত ভ্যারিয়েবল, আপনি যেমন বলেছেন, এত এত অপশন। মানে, আপনি এটা বাড়াবেন নাকি এটা সীমিত করবেন? আর যদি সেটা করেন, তাহলে এই বোতামটা বদলে যায়। আর আপনি টের পাওয়ার আগেই, সাবধান না হলে আপনার সব কম্পোনেন্ট একেক রকম আচরণ করতে শুরু করে। Exercism-এ Jeremy, তিনি CSS-এ সত্যিই ভালো, কিন্তু আমার মনে হয় তিনি এর সব আলাদা আলাদা দিক অনেক বেশি জানেন। তাই আপনার কাছে frontend তেমন প্রিয় না, backend দিকটাই বেশি প্রিয়।

Carl: frontend-এর প্রোগ্রামিং অংশগুলো নিয়ে আমার কোনো সমস্যা নেই, কিন্তু আসল চেহারাটা আমার তেমন পছন্দ না। কিন্তু backend, অন্তত আমার কাছে, বেশি হলো এটা কাজ করলে, নষ্ট করবেন না।

Jonathan: হ্যাঁ, হাত দেবেন না, থাকতে দিন। মানুষের একটার দিকে ঝোঁক বেশি হয়, এটা আমার কাছে মজার লাগে। backend দিকটার আসলে কী ব্যাপারটা, জানেন? আপনি বলছেন এটা শুধু কাজ করে, সেটাই আপনার ভালো লাগে। backend-এর জন্য যুক্তি দিয়ে ভাবা আর জিনিসগুলো প্রসেস করাটা কি আপনার সবচেয়ে বেশি ভালো লাগার দিক?

Carl: হ্যাঁ, আমার এটা ভালো লাগে কারণ এটা বেশিরভাগই লজিক আর নানা রকম ডেটাবেস স্ট্রাকচার দাঁড় করানো। মূলত এটাই, যদিও আমি ডেটাবেসে ভালো নই।

Jonathan: দারুণ। দুর্দান্ত। তাহলে Karl, আপনার জন্য আমার আরও দুটো প্রশ্ন আছে। আপনি কোথা থেকে এসেছেন আর কী করতে ভালোবাসেন, এটা একটু জেনে আমার সত্যিই ভালো লেগেছে। আপনি কি কিছু গুরুত্বপূর্ণ টিপস বলতে পারবেন, বা কেউ কোড শেখা শুরু করলে তাকে আপনি কী কী করতে সুপারিশ করবেন? আর আপনি এটা বলতে পারেন যদি তার পটভূমি বেশি বিজ্ঞানভিত্তিক হয়, তাহলে ওই ধরনের মানুষদের জন্য কিছু টিপস। কিন্তু আপনি যদি সম্পূর্ণ অন্য দিক থেকে দেখেন, তাহলে নিয়মিত করা ভালো এমন একটা জিনিস কী হবে বলে আপনি বলবেন?

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

Jonathan: আর সবকিছু কীভাবে খাটে। আচ্ছা, দারুণ। তাহলে সময় নিন। নিজেকে জিনিসগুলো নিয়ে ভাবার জায়গা দিন। আর আপনি কি বলবেন যে ধীরে চলা, মানে ধীরে চলা, জিনিসগুলো গভীরভাবে বসে যাওয়া, দ্রুতের চেয়ে ভালো, আর আপনি যা বলছেন তাতে মনে হচ্ছে সেটাই, মানে দ্রুত উপরিভাগে চলে যাওয়ার চেয়ে ভালো?

Carl: কিছু ভাষায় হয়তো আপনাকে শুধু সিনট্যাক্স আর... আর বেসিক জিনিসগুলো শিখতে হয়, তারপর বাস্তব জীবনের পরিস্থিতির দিকে এগোতে পারেন আর তখন আরও গভীরে যেতে পারেন। JavaScript-এর ক্ষেত্রে আমি বেসিক শিখলাম, তারপর React প্রজেক্ট করলাম, আর সেখানে... একটু নতুন কিছু শিখলাম আর ভাষাটার গভীরে আরও ঢুকলাম।

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

Carl: হ্যাঁ, মানে, আমি মনে করি, বরফের মধ্যে সাইকেল চালানো খুব কঠিন। তাই আমি এটা মানুষকে সুপারিশ করি না।

Jonathan: হ্যাঁ।

Carl: কিন্তু আমি আগে যা বলেছি সেটাই বলব। দেখুন, কোনো সমস্যায় আটকে গেলে একটু বিরতি নিন। আরও কয়েক ঘণ্টা বসে শুধু সেটা সমাধান করার চেষ্টা করবেন না। একটু ছোট বিরতি নিয়ে তারপর সমস্যাটার কাছে ফিরে আসা ভালো।

Jonathan: আচ্ছা, দারুণ। তাহলে এই সপ্তাহে আপনার সুপারিশ হলো, কিছু শিখতে হলে ধীরে চলুন, একটু বিরতি নিন, একটা কফি নিন। আপনি কি কফি খান?

Carl: এখনো না।

Jonathan: এখনো না। আচ্ছা। কোনোদিনই না।

Carl: আমি আসলে শুধু পানি খাই। এটাই বোধহয় আমার বিশেষত্ব।

Jonathan: আচ্ছা, দুর্দান্ত। বলছি, জীবনে এগোতে এতে আপনার অনেক টাকা বেঁচে যাবে। দুর্দান্ত। আচ্ছা, Karl, আজ আপনার সাথে কথা বলাটা সত্যিই একটা সম্মানের ব্যাপার ছিল। আপনার সময়ের জন্য ধন্যবাদ, আর আলাদা আলাদা ট্র্যাকে আপনার সব অবদানের জন্য এবং Exercism-এ যুক্ত থাকার জন্য ধন্যবাদ। আমরা সত্যিই কৃতজ্ঞ। গত কয়েক মাসে আপনাকে জানতে পেরে আমার সত্যিই ভালো লেগেছে, বিশেষ করে আমরা যে Discord সার্ভারটা চালাতাম সেটার মাধ্যমে। মনে হয় এটা ছিল Ex-Orts, আপনি কি Elixir Discord-এ ছিলেন?

Carl: হয় কোহোর্ট, নয়তো এক্সপার্টস।

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

Carl: বিদায়।

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

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