২০২১ সালের সেপ্টেম্বরের শুরুতে অবশেষে যাত্রা শুরু করল Exercism v3।
Angelika Tyborska হলেন আমাদের লক্ষ্য ছুঁয়ে ফেলতে সাহায্য করা অন্যতম প্রধান মেইনটেইনার। Elixir-এর লার্নিং অনুশীলনী ও সিলেবাসের সহ-নির্মাতা হওয়ার পাশাপাশি, v3-এর পুরো ডেভেলপমেন্ট জুড়ে Angelika ছিলেন একজন গুরুত্বপূর্ণ কণ্ঠস্বর, যিনি নির্মাণ প্রক্রিয়ার প্রতিটি ধাপে নতুন নতুন আইডিয়া ও অন্তর্দৃষ্টি যোগ করেছেন। তিনি Exercism-এর একজন গুরুত্বপূর্ণ কন্ট্রিবিউটর।
এই ভিডিও উপস্থাপনায় Angelika আমাদের জানাবেন, v3 কোন কোন সমস্যা সমাধানের জন্য তৈরি করা হয়েছিল, প্ল্যাটফর্মে কী কী গুরুত্বপূর্ণ সংযোজন হয়েছে, আর সবকিছু কীভাবে একসাথে মানানসই হয়। তিনি অ্যানালাইজার, রিপ্রেজেন্টার এবং নতুন লার্নিং অনুশীলনী নিয়েও আলোচনা করবেন।
ট্রান্সক্রিপ্ট
Exercism-এর ইতিহাস
Exercism অনেক দিন ধরে আছে। ২০১৩ সালে Katrina Owen প্রথম এটি তৈরি করেন তাঁর শিক্ষার্থীদের জন্য একটি টুল হিসেবে। v1-এ এটি ছিল শুধুই আকর্ষণীয় কিছু প্র্যাকটিস অনুশীলনীর সংগ্রহ। v2-এ এটি হয়ে ওঠে বিনামূল্যে কোড মেন্টরশিপের একটি প্ল্যাটফর্ম।
v3 🚀 01.09.2021
১ সেপ্টেম্বর Exercism-এর সংস্করণ ৩ প্রকাশিত হয়।
এই ভিডিওতে আমি আপনাকে v3-এর পরিবর্তনগুলো বুঝিয়ে দেব, কেন সেগুলো করা হয়েছে, আর কীভাবে সেগুলো Exercism-এ আপনার অভিজ্ঞতা আরও ভালো করবে, তা ব্যাখ্যা করব।
আমার সম্পর্কে
এই যে আমি [0:38-এ দেখানো ছবি]। আমি Angelika। Exercism v3-এর জন্য Elixir ট্র্যাকের টুলিং ও ৩০টিরও বেশি লার্নিং অনুশীলনী তৈরি করেছি আমি আর আমার সহ-মেইনটেইনার Tim। আমার বিশ্বাস, নতুন রূপে Exercism-এর মধ্যে নতুন প্রোগ্রামিং ভাষা শেখার সেরা টুল হয়ে ওঠার সম্ভাবনা রয়েছে।
v3-এ নতুন কী আছে?
Exercism v3-এ নতুন কী আছে? সংক্ষেপে বললে: অনেক কিছু।
v3-এ আনা সব বড় পরিবর্তনই করা হয়েছে v2-এ মানুষের মুখোমুখি হওয়া সবচেয়ে বড় সমস্যাগুলো মেটানোর জন্য।
v2-এর সমস্যাগুলো
v3 তিনটি মূল সমস্যার সমাধান করে।
এক: কঠিন প্রাথমিক সেটআপ, দুই: শেখা ছাড়া কোড প্র্যাকটিস, তিন: মেন্টরের সাড়া পেতে দীর্ঘ সময়।
সমস্যা ১. কঠিন প্রাথমিক সেটআপ
প্রথম সমস্যা: কঠিন প্রাথমিক সেটআপ। Exercism শুরু করতে আপনার Exercism CLI ইনস্টল করতে হবে, যে প্রোগ্রামিং ভাষাটি আপনি চেষ্টা করতে চান সেটি ইনস্টল করতে হবে, আর টার্মিনালে স্বচ্ছন্দ বোধ করতে হবে। নতুন ভাষার জন্য সিনট্যাক্স কালারিং চালু করতে আপনার এডিটর কনফিগার করতে হবে, ইত্যাদি। অভিজ্ঞ ডেভেলপারদের কাছে এই পুরো সেটআপ সময় নষ্ট করার একটা ঝামেলা। কিন্তু নতুনদের জন্য এটি হতে পারে ডিঙিয়ে ওঠা অসম্ভব এমন এক বাধা।
সমাধান: মানুষকে ব্রাউজারেই কোড করতে দেওয়া। প্রাথমিক সেটআপের দরকার নেই।
এটা সহজ করতে Exercism-এ এখন আছে একটি ওয়েব এডিটর, আর প্রতিটি প্রোগ্রামিং ভাষার জন্য রয়েছে নিজস্ব টেস্ট রানার, যা Exercism-এর অনুশীলনীর টেস্ট চালানোর জন্য নিবেদিত।
ওয়েব এডিটর
এটি হলো ওয়েব এডিটর [2:25-এ দেখানো স্ক্রিনশট]। এতে দুটি প্যানেল আছে, বাম দিকে সোর্স কোড আর ডান দিকে নির্দেশনা ও টেস্ট স্যুট।
এতে কোনো জমকালো ফিচার নেই, কারণ এর লক্ষ্য আপনার প্রিয় টুলগুলোর বিকল্প হওয়া নয়। এর লক্ষ্য হলো, নতুন প্রোগ্রামিং ভাষাটিতে আপনি আরও স্বচ্ছন্দ বোধ করা এবং এটিতেই কাজ চালিয়ে যেতে চান বলে নিশ্চিত হওয়ার আগ পর্যন্ত প্রয়োজনীয় সব টুল ও ডিপেন্ডেন্সি ইনস্টল করা পিছিয়ে দিতে দেওয়া।
ওয়েব এডিটর সম্পূর্ণ ঐচ্ছিক। আপনি চাইলে আগের মতোই CLI ব্যবহার করে নিজের কম্পিউটারে প্রিয় টুল নিয়ে কাজ করতে পারেন।
টেস্ট রানার
ওয়েব এডিটর ব্যবহারযোগ্য হতে হলে, ব্রাউজারে আপনি যে সলিউশন লেখেন তার বিরুদ্ধে টেস্ট চালানোর একটা উপায় থাকা দরকার। এটাই টেস্ট রানারের কাজ।
Exercism-এ প্রতিটি ভাষার নিজস্ব টেস্ট রানার আছে। টেস্ট রানার টেস্টের ফলাফল জানানোর দায়িত্বে থাকে, কিন্তু এটুকুই সব নয়। এটিকে টেস্টের বডি বের করে আনতেও হয়, যাতে কোন কোডটি চালানো হচ্ছে তা আপনি জানেন এবং ব্যর্থতার বার্তাটি ব্যাখ্যা করতে পারেন, আবার টেস্টের আউটপুটও ধরে রাখতে হয়, যাতে ব্রাউজারেই puts, print, console.log বা আপনার ভাষায় থাকা যে কোনো প্রিন্টিং ফাংশন দিয়ে কোড ডিবাগ করতে পারেন।
ব্রাউজারে অনুশীলনী সমাধানের জন্য টেস্ট রানার অপরিহার্য, তবে CLI-এর মাধ্যমে জমা দেওয়া সলিউশনেও এগুলো ব্যবহৃত হবে। কোনো অনুশীলনীর কমিউনিটি সলিউশন দেখার সময়, বা কোনো শিক্ষার্থীকে মেন্টরিং করার সময়, সলিউশনটি ডাউনলোড করে নিজের কম্পিউটারে চালানো ছাড়াই দেখতে পারবেন যে এটি টেস্ট পাস করে কি না।
সমস্যা ২. শেখা ছাড়া কোড প্র্যাকটিস
দ্বিতীয় সমস্যা: Exercism কোড প্র্যাকটিসের একটি প্ল্যাটফর্ম, কিন্তু শূন্য থেকে নির্দিষ্ট কোনো ভাষা শেখার জন্য এটি কোনো রিসোর্স দিত না। আগে সেটা অন্য কোথাও করতে হতো।
Exercism-এর অনুশীলনীগুলো আকর্ষণীয় ও চ্যালেঞ্জিং হওয়ার জন্য ডিজাইন করা হয়েছিল, কিন্তু মাঝে মাঝে সবচেয়ে সহজগুলোও নতুন একটি প্রোগ্রামিং ভাষায় ঢোকার দরজা হতে গিয়ে খুব কঠিন হয়ে পড়ে। এটা বিশেষভাবে সত্যি যখন আপনি সম্পূর্ণ আলাদা সিনট্যাক্সের, বা এমনকি ভিন্ন প্রোগ্রামিং প্যারাডাইম ব্যবহার করা কোনো ভাষা শিখতে চেষ্টা করছেন।
সমাধান: প্র্যাকটিসের পাশাপাশি শেখার সুযোগ দেওয়া।
সিলেবাস ও লার্নিং অনুশীলনী যুক্ত হওয়ায়, Exercism এখন সরাসরি নতুন একটি প্রোগ্রামিং ভাষায় ডুব দেওয়ার জন্য চমৎকার একটি টুল।
সিলেবাস
সিলেবাস কী? সিলেবাস হলো কনসেপ্টের একটি গাছ, যেগুলো মিলে প্রতিটি প্রোগ্রামিং ভাষা গঠিত হয়। Exercism-এর প্রতিটি ট্র্যাকের সিলেবাস আলাদা, কারণ প্রতিটি প্রোগ্রামিং ভাষা ভিন্ন এবং তাদের কনসেপ্টও ভিন্ন।
কনসেপ্টগুলো একে অপরের ওপর নির্ভরশীল, যা মিলে গাছের বিভিন্ন শাখা তৈরি করে। শাখার পরের কনসেপ্টটি আনলক করতে আগের কনসেপ্টটি শিখতে হয়।
উদাহরণ হিসেবে, এটি Elixir সিলেবাসের শুরু [5:10-এ দেখানো স্ক্রিনশট]। এটি শুরু হয় "basics" নামের একটি কনসেপ্ট দিয়ে, যেখানে আছে: কীভাবে একটি মডিউল ডিফাইন করতে হয়, কীভাবে একটি নেমড ফাংশন ডিফাইন করতে হয়, আর স্ট্যান্ডার্ড লাইব্রেরির ডকুমেন্টেশন কোথায় পাওয়া যায়। এই জ্ঞান Exercism-এর প্রতিটি অনুশীলনীর জন্যই প্রয়োজন। অন্য যেকোনো কনসেপ্ট আনলক করতে basics শিখতে হবে। উদাহরণস্বরূপ আপনি বুলিয়ান শিখতে পারেন, আর বুলিয়ান জানা হয়ে গেলে cond এক্সপ্রেশন শিখতে পারবেন, এভাবে আরও।
পুরোটা বোঝার জন্য, এটি হচ্ছে সম্পূর্ণ Elixir সিলেবাস [6:16-এ দেখানো স্ক্রিনশট]। এই মুহূর্তে এতে ৫০টিরও বেশি কনসেপ্ট আছে, তবে এটি আরও বাড়ানো দরকার।
উপরে থাকবে এমন সব কনসেপ্ট: স্ট্রিং, লিস্ট, ম্যাপ আর টাপল। মাঝখানে আছে: Enum মডিউল, রেগুলার এক্সপ্রেশন, স্ট্রাক্ট, আর টাইপস্পেক লেখা। আর শেষে আছে: প্রোটোকল, প্রসেস আর টাস্ক।
লার্নিং অনুশীলনী
সিলেবাসের কনসেপ্টগুলো আপনি শিখবেন লার্নিং অনুশীলনী সমাধান করে। লার্নিং অনুশীলনী প্র্যাকটিস অনুশীলনীর চেয়ে আলাদা। এগুলো এমন শিক্ষার্থীদের প্রোগ্রামিং কনসেপ্ট শেখানোর জন্য ডিজাইন করা হয়েছে, যারা নির্দিষ্ট প্রোগ্রামিং ভাষাটি একেবারেই জানে না, কিন্তু অন্তত একটি অন্য ভাষা ও প্রোগ্রামিংয়ের মৌলিক কনসেপ্ট জানে।
পরিচিতি
প্রতিটি লার্নিং অনুশীলনী শুরু হয় একটি পরিচিতি দিয়ে। পরিচিতিতে এই অনুশীলনী যে কনসেপ্টগুলো শেখায়, সেগুলোর মৌলিক তথ্য বর্ণনা করা হয়। বেশিরভাগ লার্নিং অনুশীলনী একটি মাত্র কনসেপ্ট শেখায়, তবে এর ব্যতিক্রমও আছে।
এই উদাহরণটিতে Elixir ম্যাপ নিয়ে একটি পরিচিতি দেখানো হয়েছে [7:12-এ দেখানো স্ক্রিনশট]। এতে ম্যাপ কী, কীভাবে ম্যাপ ডিফাইন করতে হয়, ম্যাপের একটি মান কীভাবে অ্যাক্সেস করতে হয়, ইত্যাদি ব্যাখ্যা করা হয়েছে। নতুন সিনট্যাক্স দেখানোর জন্য এতে কিছু কোড উদাহরণ থাকে, কিন্তু খুব বেশি থাকে না, যাতে পরিচিতিটুকু কপি-পেস্ট করেই আপনি অনুশীলনীটা সমাধান করতে না পারেন।
নির্দেশনা
এরপর আসে নির্দেশনা। লার্নিং অনুশীলনীর নির্দেশনা ছোট ছোট টাস্কে ভাগ করা থাকে। টাস্কগুলো এমনভাবে ডিজাইন করা হয়েছে যাতে শিক্ষার্থী কোনো কনসেপ্টের সবচেয়ে জরুরি অংশগুলো ব্যবহার করতে উৎসাহিত হয়।
উদাহরণস্বরূপ, ম্যাপ শেখানো লার্নিং অনুশীলনীতে শিক্ষার্থী প্রথমে একটি ম্যাপ তৈরি করবে, তারপর ম্যাপ থেকে একটি মান পড়বে, তারপর ম্যাপের একটি মান হালনাগাদ করবে, তারপর ম্যাপের সব কী (key) বের করবে, এভাবে আরও।
প্রতিটি লার্নিং অনুশীলনীর একটি গল্প থাকে, কিন্তু গল্পটা খুব গুরুত্বপূর্ণ নয়। এটি আছে যাতে "foo bar" আর "1 2 3"-এর মতো অর্থহীন মান ব্যবহার করতে না হয়, তবে প্র্যাকটিস অনুশীলনীর মতো এতে গল্পের বড় কোনো ভূমিকা নেই।
ইঙ্গিত
শিক্ষার্থী আটকে গেলে যাতে সহায়তা পায়, সেজন্য প্রতিটি টাস্কের সাথে থাকে ছোট একটি ইঙ্গিতের তালিকা। ইঙ্গিতগুলো প্রায়ই বলে দেয় কোন টাস্কে কোন নির্দিষ্ট ফাংশন ব্যবহার করতে হবে, আর সেটির ডকুমেন্টেশনের দিকেও নিয়ে যায়।
কনসেপ্ট প্র্যাকটিস করা
কিন্তু সত্যিকারভাবে একটি কনসেপ্ট আয়ত্ত করতে একটি মাত্র লার্নিং অনুশীলনী সমাধান করাই যথেষ্ট নয়। সেটি প্র্যাকটিসও করতে হবে। সেজন্যই v2-এ আগে থেকেই থাকা সব প্র্যাকটিস অনুশীলনী আমরা পর্যালোচনা করেছি এবং প্রতিটি কনসেপ্ট প্র্যাকটিস করার জন্য কয়েকটি বেছে নিয়েছি।
গাছটিতে একটি কনসেপ্ট কেমন দেখায়, সেটাই এখানে [9:01-এ দেখানো স্ক্রিনশট]। বিন্দুগুলো অনুশীলনী বোঝায়। বাল্বের আইকনসহ প্রথম বিন্দুটি একটি লার্নিং অনুশীলনী, আর বাকি বিন্দুগুলো প্র্যাকটিস অনুশীলনী।
কয়েকটি অনুশীলনী সমাধান করার পর একটি কনসেপ্ট দেখতে এমন হয় [9:37-এ দেখানো স্ক্রিনশট]। খেয়াল করুন, লার্নিং অনুশীলনীটি সম্পন্ন হওয়া সত্ত্বেও এই কনসেপ্টের কিছু প্র্যাকটিস অনুশীলনী এখনও লক করা আছে। কারণ প্র্যাকটিস অনুশীলনী শুধু একটি কনসেপ্ট প্র্যাকটিস করার মধ্যে সীমাবদ্ধ নয়। ওই অনুশীলনীগুলো আনলক হওয়ার আগে হয়তো শুধু atoms-এর বাইরেও আরও কনসেপ্ট শিখতে হবে [স্ক্রিনশটে দেখানো কনসেপ্ট]।
যারা ইতিমধ্যেই কোনো নির্দিষ্ট ভাষায় দক্ষ, তাঁদের কাছে লার্নিং অনুশীলনী সহজ হওয়ার কথা। তবে চিন্তা নেই, এগুলো সম্পূর্ণ ঐচ্ছিক। আপনি লার্নিং মোড থেকে প্র্যাকটিস মোডে যেতে পারেন, যা প্রথমে পুরো সিলেবাস শেষ না করেই সব মজার প্র্যাকটিস অনুশীলনীতে সঙ্গে সঙ্গে অ্যাক্সেস দেবে।
সিলেবাস = বিশাল পরিশ্রম
আপনার প্রত্যাশা সামলে রাখার জন্য একটি গুরুত্বপূর্ণ বিষয় আমাকে বলে রাখতে হয়, সেটি হলো সিলেবাস তৈরি করা বিরাট এক পরিশ্রমের কাজ। প্রতিটি ট্র্যাকে এখনই একটি সিলেবাস প্রস্তুত করার মতো যথেষ্ট সক্রিয় মেইনটেইনার নেই।
আমি এই ভিডিও রেকর্ড করার সময় [৪ সেপ্টেম্বর, ২০২১], লার্নিং অনুশীলনী শুধু এসব ভাষায় পাওয়া যায়: Common Lisp, C#, Elm, Elixir, F#, Go, Java, JavaScript, Python, Ruby, Rust, এবং Swift। Julia ট্র্যাক শিগগিরই তাদের সিলেবাস চালু করবে।
সমস্যা ৩. মেন্টরের সাড়া পেতে দীর্ঘ সময়
তৃতীয় সমস্যা: মেন্টরের সাড়া পেতে দীর্ঘ সময়। প্রতিটি ট্র্যাকে যথেষ্ট মেন্টর নেই। কিছু ট্র্যাকে এত কম মেন্টর আছে যে মেন্টরিংয়ের জন্য অপেক্ষা করতে হতে পারে এক মাস পর্যন্ত। এটি শিক্ষার্থীদের কাছে বরাবরই অত্যন্ত নিরুৎসাহজনক ছিল। Exercism-এর কাছে এটি এতটাই মূল সমস্যা যে এর সমাধানে তিনটি ভিন্ন দিক থেকে কাজ করা হচ্ছে।
অটোমেটেড ফিডব্যাক
সমাধান এক: অটোমেটেড ফিডব্যাক দেওয়া। মেন্টররা শিক্ষার্থীদের যে ফিডব্যাক লেখেন, তার অনেকটাই একই রকমের পুনরাবৃত্তি। কমন ভুল স্বয়ংক্রিয়ভাবে শনাক্ত করে সরাসরি শিক্ষার্থীকে জানাতে পারা এক যুগান্তকারী পরিবর্তন।
কমন ভুল নিয়ে অটোমেটেড ফিডব্যাক পেলে শিক্ষার্থী মেন্টরিং চাওয়ার আগেই নিজের সলিউশন উন্নত করতে পারবে, যা মেন্টরের কাজও সহজ করে দেবে। এটি মেন্টরদের snake_case বনাম camelCase-এর মতো বিরক্তিকর খুঁটিনাটি উল্লেখ করার ঝামেলা থেকে বাঁচাবে, যাতে তাঁরা সলিউশনের মূল বিষয়টিতে মন দিতে পারেন। কিছু ক্ষেত্রে অটোমেটেড ফিডব্যাকই শিক্ষার্থীর জন্য যথেষ্ট হবে, আর তারা মেন্টরিং চাওয়ার দরকারই বোধ করবে না।
v3-এ অটোমেটেড ফিডব্যাকের জন্য দুই ধরনের টুল আছে: অ্যানালাইজার আর রিপ্রেজেন্টার।
অ্যানালাইজার
অ্যানালাইজার এমন একটি টুল, যা একটি সলিউশনে নির্দিষ্ট বৈশিষ্ট্য খুঁজে দেখে এবং যা পায় তা নিয়ে আগে থেকে নির্ধারিত মন্তব্যের একটি তালিকা শিক্ষার্থীকে ফিরিয়ে দেয়। কোন বৈশিষ্ট্য, সেটি সম্পূর্ণভাবে নির্ভর করে ভাষা আর নির্দিষ্ট অনুশীলনীর ওপর।
উদাহরণস্বরূপ, Elixir-এ ফাংশন ও ভ্যারিয়েবলের নামকরণের একটি খুব নির্দিষ্ট রীতি আছে। Elixir অ্যানালাইজার প্রতিটি অনুশীলনীর জন্য যে পরীক্ষাগুলো করে, তার একটি হলো সব ভ্যারিয়েবল ও ফাংশনের নাম যাচাই করা। যদি সে এমন কোনো নাম পায় যা snake_case-এ লেখা হয়নি, তবে নামকরণের রীতিটি শিক্ষার্থীকে মনে করিয়ে দেবে।
Elixir অ্যানালাইজার আরও একটি পরীক্ষা করতে পারে: নির্দিষ্ট কোনো মডিউল ব্যবহার হয়েছে কি না তা শনাক্ত করা। উদাহরণস্বরূপ, Enum মডিউল ব্যবহার না করার এই পরীক্ষাটি [13:20-এ দেখানো স্ক্রিনশট] কেবল রিকারশনের লার্নিং অনুশীলনীর জন্য নির্দিষ্ট। Enum মডিউল ব্যবহার করলে লার্নিং অনুশীলনীর উদ্দেশ্যই ব্যর্থ হয়, তাই অ্যানালাইজার শিক্ষার্থীকে তা না করে বদলে রিকারশন ব্যবহার করতে মনে করিয়ে দেবে।
রিপ্রেজেন্টার
Exercism-এ অটোমেটেড ফিডব্যাক দেওয়ার কাজে আমাদের সাহায্য করবে এমন দ্বিতীয় টুলটি হলো রিপ্রেজেন্টার। রিপ্রেজেন্টার সলিউশনটি নিয়ে তার অপ্রয়োজনীয় অংশগুলো সরিয়ে দেয়। এটি ফরম্যাটিং স্বাভাবিক করে, কমেন্ট ও ডকুমেন্টেশন মুছে দেয়, আর ফাংশন ও ভ্যারিয়েবলের নাম প্লেসহোল্ডার দিয়ে বদলে দেয়।
রিপ্রেজেন্টারের আউটপুটকে বলা হয় রিপ্রেজেন্টেশন। Exercism-এ জমা দেওয়া প্রতিটি সলিউশনই রিপ্রেজেন্টারের কাছে পাঠানো হবে, আর তার রিপ্রেজেন্টেশন সলিউশনের সাথে প্ল্যাটফর্মে সংরক্ষণ করা হবে।
এরপর মেন্টররা এমন একটি ইন্টারফেসে ঢুকতে পারবেন, যেখানে জমা দেওয়া সলিউশনের রিপ্রেজেন্টেশন ঘেঁটে দেখতে পারবেন। প্রতিটি আলাদা রিপ্রেজেন্টেশনের জন্য একজন মেন্টর সেই রিপ্রেজেন্টেশনে ফিডব্যাক রেখে যেতে পারবেন। এরপর ওই ফিডব্যাক দেখানো হবে এমন প্রত্যেক শিক্ষার্থীকে, যারা একই রিপ্রেজেন্টেশনবিশিষ্ট অনুরূপ সলিউশন জমা দেয়। মেন্টরকে ফিডব্যাক লিখতে হয় মাত্র একবার, আর সেই ফিডব্যাক পৌঁছে যায় সবার কাছে যাদের তা দরকার।
কিছু ভাষার জন্য রিপ্রেজেন্টার নিজেই ইতিমধ্যে তৈরি ও চালু করা হয়েছে, কিন্তু আমি এই ভিডিও রেকর্ড করার সময় [৪ সেপ্টেম্বর, ২০২১], মেন্টরদের জন্য ইন্টারফেসটি এখনও প্ল্যাটফর্মে নেই, তাই এই ফিচারটি পুরোপুরি পাওয়ার জন্য আরেকটু অপেক্ষা করতে হবে।
অবাঞ্ছিত মেন্টরিং সেশন এড়ানো
দীর্ঘ মেন্টরিং কিউয়ের আরেকটি সমাধান হলো অবাঞ্ছিত মেন্টরিং সেশন এড়ানো। v2-এ কোর অনুশীলনীর জন্য মেন্টরিং বাধ্যতামূলক ছিল। একটি কোর অনুশীলনী জমা দেওয়ার মানে ছিল আপনি স্বয়ংক্রিয়ভাবে মেন্টরিং চাইছেন, আর মেন্টরের অনুমোদন ছাড়া পরের কোর অনুশীলনীতে এগোতে পারতেন না। অনেক শিক্ষার্থী কোর অনুশীলনীগুলো করে করেই ভাষা শিখত, তাই শেখার প্রক্রিয়ায় পথ দেখানোর জন্য তাঁদের মেন্টরিং দরকার হতো।
এখন আর তা নয়। কোর অনুশীলনীর শিক্ষাদানের ভূমিকা আর মেন্টরের অনুমোদনের কাজ এখন লার্নিং অনুশীলনী ও অ্যানালাইজার নিয়ে নিয়েছে। v3-এ মেন্টরিং সবসময় ঐচ্ছিক এবং স্পষ্টভাবে চাইতে হয়।
মেন্টরিং রিকোয়েস্ট
মেন্টরিং চাইতে হলে আপনাকে দুটি প্রশ্নের উত্তর দিতে হবে: এই ট্র্যাক থেকে আপনি কী শিখতে চান?, এবং: একজন মেন্টর আপনার সলিউশনে কীভাবে সাহায্য করতে পারেন? মেন্টরিং সেশন থেকে শিক্ষার্থীর প্রত্যাশা কী, তা আগে থেকে জানলে মেন্টর নিজের জ্ঞান ও মেন্টরিং স্টাইলের সাথে সবচেয়ে মানানসই রিকোয়েস্টগুলো বেছে নিতে পারেন, ফলে সেশন শেষে দুই পক্ষই সন্তুষ্ট থাকার সম্ভাবনা বেড়ে যায়।
মেন্টরিং কিউ ও ফেভারিট
নতুন মেন্টরিং কিউয়ে মেন্টররা শিক্ষার্থীর মেন্টরিং ইতিহাসের পরিসংখ্যান দেখতে পারেন। তাঁরা দেখতে পারেন কোন শিক্ষার্থী আগে কখনও মেন্টরিং পায়নি এবং হয়তো আরও যত্নসহকারে পর্যালোচনা দরকার, আর কোন শিক্ষার্থী অনেকবার মেন্টরিং করিয়ে এর কাজ বুঝে গেছে।
মেন্টররা অবশেষে তাঁদের আগে মেন্টরিং করা শিক্ষার্থীদের খুঁজে পেতে পারেন এবং তাঁদের সাথে সম্পর্ক গড়ে তুলতে পারেন। মেন্টররা চাইলে শিক্ষার্থীদের ফেভারিটে যোগ করতে পারেন এবং যাদের সাথে আগে ভালো অভিজ্ঞতা হয়েছে, তাঁদের মেন্টরিংকে অগ্রাধিকার দিতে এটি কাজে লাগাতে পারেন।
ব্লক লিস্ট
প্রতিটি মেন্টরিং সেশনের পর শিক্ষার্থী ও মেন্টর দুজনেই চাইলে অন্যজনকে ব্লক করার সুযোগ পান। দুটি ব্লক লিস্ট আছে, ব্লক করা শিক্ষার্থী আর ব্লক করা মেন্টর। আমি যদি একজন মেন্টর হিসেবে আপনাকে শিক্ষার্থী হিসেবে ব্লক করি, আপনি পরে তবুও আমাকে মেন্টরিং করতে পারেন। অন্যজন অবশ্যই জানতে পারবে না যে তাঁকে ব্লক করা হয়েছে, তাই সে আপনার বিরুদ্ধে পাল্টা কিছু করতে পারবে না।
আপনি যেকোনো কারণে কাউকে ব্লক করতে পারেন, তবে যদি সে কোড অফ কন্ডাক্ট ভঙ্গ করে, তবে অন্য ইউজারদের রক্ষা করতে অনুগ্রহ করে স্পষ্টভাবে রিপোর্টও করবেন।
দীর্ঘ অপেক্ষার নেতিবাচক পরিণতি কমানো
সবশেষে, দীর্ঘ অপেক্ষার সমস্যা মোকাবিলার শেষ ধাপ হলো নিশ্চিত করা যে মাঝে মাঝে অপেক্ষা করতে হলেও তার নেতিবাচক পরিণতি যেন ন্যূনতম হয়। v3-এ মেন্টরিংয়ের জন্য অপেক্ষা করা আপনাকে অন্য অনুশীলনী সমাধান করা থেকে আটকায় না। আপনি তবুও ট্র্যাকে এগিয়ে যেতে পারেন।
মেন্টরিং সেশন দুই পক্ষের যেকোনো একজন শেষ করতে পারেন। আপনি যদি শিক্ষার্থী হন আর কোনো নির্দিষ্ট মেন্টর আপনার সাথে যে পদ্ধতিতে এগোচ্ছেন তা ভালো না লাগে, তবে সবসময় ভিন্ন পদ্ধতি চাইতে পারেন, বা সেশনটি ছেড়ে দিতে পারেন। মেন্টরিং সেশন যেভাবেই শেষ হোক, শিক্ষার্থী একই সলিউশনের জন্য অন্য একজন মেন্টরের সাথে নতুন একটি মেন্টরিং সেশন চাইতে পারেন।
মেন্টরিং স্লট
প্রতিটি ট্র্যাকে আপনার ১ থেকে ৪টি পর্যন্ত মেন্টরিং স্লট থাকতে পারে। একাধিক মেন্টরিং স্লট থাকলে সুবিধা হয় যখন আপনি এমন একটি কঠিন অনুশীলনীর জন্য মেন্টরিং চান যা দ্রুত মেন্টরিং পাওয়ার সম্ভাবনা কম, আবার একই সাথে অন্য অনুশীলনীতেও মেন্টরিং পেতে পারেন।
রেপুটেশন অর্জন করে মেন্টরিং স্লট আনলক করা যায়। সবার দেখার জন্য আপনার সলিউশন প্রকাশ করা, শিক্ষার্থীদের মেন্টরিং করা, আর Exercism-এর যেকোনো রিপোজিটরিতে কন্ট্রিবিউট করার জন্য রেপুটেশন দেওয়া হয়। এর মানে হলো, যারা প্ল্যাটফর্মে বেশি কন্ট্রিবিউট করে, তারা বেশি মেন্টরিং পেতে পারে।
সারসংক্ষেপ
এগুলো হলো ২০২১ সালের ১ সেপ্টেম্বর Exercism যে বড় বড় উপায়ে বদলে গেল তার কয়েকটি।
আমরা যোগ করেছি লার্নিং অনুশীলনী, যাতে প্ল্যাটফর্ম ছাড়াই শিখতে পারেন, একটি ওয়েব এডিটর, যাতে কিছু ইনস্টল না করেই কোড করতে পারেন, আর অ্যানালাইজার ও রিপ্রেজেন্টার, যাতে সঙ্গে সঙ্গে অটোমেটেড ফিডব্যাক পেতে পারেন। মেন্টরিং প্রক্রিয়া থেকে আমরা অনেক হতাশাজনক বাধাও সরিয়ে দিয়েছি।
আরও ঘেঁটে দেখার মতো আরও কত কী যে নতুন আছে: আমাদের কন্ট্রিবিউটিং সেকশন, ব্যাজ, নতুন প্রোফাইল, আপনার পুরো Exercism ইতিহাসসহ একটি জার্নি পেজ, আরও অনেক কিছু।
exercism.org-এ চলে আসুন আর একবার চেষ্টা করে দেখুন।
ধন্যবাদ।