তুমি কিছু রেইলস টিউটোরিয়াল শেষ করেছ। হয়তো এক-दুই ক্লাস করেছ বা স্ক্রিনকাস্ট দেখেছ। টিউটোরিয়াল অ্যাপগুলো কপি করে বানালেও থাকতে পারে। এখন স্পষ্ট যে তোমার রেইলস ডেভেলপমেন্টকে পরবর্তী লেভেলে নিয়ে যাওয়ার সময় এসে গেছে।
তবুও, কোনো কারণে আপনি আটকে গিয়েছেন। নতুনদের জন্য হাজার হাজার বই, ক্লাস এবং ভিডিও আছে। কিন্তু মধ্যবর্তী রেইলস ডেভেলপারদের জন্য টিউটোরিয়ালগুলো কোথায়?
পূর্বের মতো নয় এখন
রেইলস ডেভেলপার হিসেবে নতুনয়ের, "বেসলাইন নলেজ তৈরি" стадия পার করার পর রিসোর্সগুলো শুকনো হয়ে যায়। কেন?
মধ্যবর্তী রেইলস ডেভেলপার হয়া নতুনয়ের মতো কোনো ভাবে নয়। এতে লাগতে পারে কিছু জটিল বিষয় শেখার মতো, কিন্তু মধ্যবর্তী লেভেল পার করা সম্পূর্ণ ভিন্ন একটি প্রক্রিয়া।
এভাবে চিন্তা করবেন না: "নতুনয়ের এই জিনিসগুলো জানে। মধ্যবর্তী ডেভেলপার সেগুলো একটু ভালো জানে, পাশাপাশি কিছু এক্সট্রা জিনিসও জানে।" মধ্যবর্তী ডেভেলপারের জন্য শেখা আরও ফোকাসড। অনেক বিষয়ে কম জানার বদলে, কিছু বিষয়ে গভীরে যেতে হয়।
কয়েকটি ফোকাস এরিয়া খুঁজুন। টেস্টিং এবং TDD-র বিস্তারিত শিখুন। রেইলস যেসব ডিজাইন প্যাটার্ন প্রোত্সাহন করে, সেগুলো গভীরে শিখুন। কিভাবে চমৎকার ডেটা মডেল ডিজাইন করতে হয় সেটা শিখুন। কিন্তু সব একসাথে শিখবেন না। একটা একটা করে শিখুন, আর খুব ভালোভাবে শিখুন।
রেইলস বেসিক বুঝলে API ডকুমেন্টেশন পড়তে পারবেন, সেটা পুরো বুঝা না গেলেও। TDD-র সেরা বইগুলো পড়তে পারবেন, সেগুলো রেইলস-স্পেসিফিক না হলেও। যতক্ষণ যথেষ্ট রুবি কোড দেখবেন, রেইলসের সোর্স কোডে ডুবে (source-diving) যাতে পারবেন অনেকে যা বুঝতে পারেন না সেটা বুঝতে পারবেন।
যখন একটা জিনিস ভালোভাবে শিখতে ফোকাস করবেন, তখন শেখার জন্য অনেক বেশি রিসোর্স পাবেন। আর প্রতিটি জিনিস শিখলে বাকি জিনিসগুলো শিখতেও সহজ হয়।
(কারণে লোকেরা তৃতীয় বা চতুর্থ ল্যাঙ্গুয়েজ সহজে শিখে ফেলে। কোর কনসেপ্টগুলো একই থাকে, তাই নতুন ল্যাঙ্গুয়েজে মধ্যবর্তী স্টেজ পার করতে অনেক কম শিখতে হয়)।
পরবর্তী কী শিখবেন সেটা কীভাবে বাছাবেন?
যদি একটা একটা করে শিখতে চান, তাহলে প্রথমে কীতে ফোকাস করবেন সেটা বাছাতে হবে। কিন্তু এত কিছু শিখতে থাকলে কীভাবে বাছাবেন?
আপনার ইন্টারেস্টের জিনিস শিখতে সবসময় সহজ লাগে না? আমার কাছে তো লাগে। তাহলে নতুন কিছু শিখতে ইন্টারেস্ট তৈরি করতে বাধ্য করার সেরা উপায় কী?
নিজের অ্যাপ বানান! অনেক অনেক অ্যাপ। অ্যাপ বানান, মডিফাই করুন, এক্সিস্টিং অ্যাপে ফিচার যোগ করুন।
যখন অ্যাপ লিখবেন, আপনি আটকে যাবেন। বারবার আটকে যাবেন। কিন্তু এটা খুব ভালো খবর! আটকে যাওয়াকেই ভালোবাসতে শিখুন, কারণ এটা মানে আপনি কিছু নতুন শিখবেন। আটকে যাওয়া দারুণ, আর যত বেশি এটা উপভোগ করতে পারবেন, এপילו খুঁজে বের করতে পারবেন, তত দ্রুত এক্সপার্ট হবেন।
রিসার্চ করে, শিখে, সমাধান লিখে ফেললে, আবার অন্য অ্যাপে সেটা করতে চেষ্টা করুন। ডকুমেন্টেশন না দেখে লিখতে চেষ্টা করুন। আসলে শিখুন। তারপর অ্যাপ বানাতে থাকুন, আর নেক্সট আটকে যাওয়ার জায়গা খুঁজুন।
এইভাবে শিখতে আমি খুব পছন্দ করি, কারণ যা সবচেয়ে বেশি সমস্যা হবে সেটাই শিখবেন। দ্রুত শিখবেন, কারণ শুধু পড়তে পড়বেন না। সমস্যা সমাধান করার চেষ্টা করবেন। আর সফটওয়্যার ডেভেলপমেন্টে আসার মূল কারণও তো সমস্যা সমাধান করাই ছিল?
সব কিছু এইভাবে পাওয়া যায় না
রেইলস বেসিক বুঝলে আপনি সেরেনডিপিটাসলি (serendipitously) শিখতে পারবেন। মধ্যবর্তী ও এক্সপার্ট রেইলস ডেভেলপাররা কী বলে সেটা বুঝলে, আপনি অचानক যেসব কথাবার্তায় পড়ে যাবেন সেগুলো আপনার অধ্যয়নকে খুব আকর্ষণীয় পথে নিয়ে যাবে।
তাই যখন নতুন কিছু শিখার টিউটোরিয়াল স্টেজ পার করি, আমি অনেক ব্লগ সাবস্ক্রাইব করি। কমিউনিটি লিডারদের টুইটারে ফলো করি। যেই ল্যাঙ্গুয়েজের জন্য Weekly নিউজলেটার আছে (RubyWeekly, iOS Dev Weekly, JavaScriptWeekly ইত্যাদি) সেগুলো সাবস্ক্রাইব করি।
সব পড়তে হবে না। পড়তে উচিতও না। কিন্তু ভালো কন্টেন্ট আপনার রাডারে আসতে দিন, আর যেগুলো আকর্ষণীয় লাগে সেগুলো পড়ুন এবং ফলো করুন। এভাবে আমি কিছু দারুণ টিপস শিখেছি, আর সেগুলো আমাকে যেসব উপযোগী টপিকে নিয়ে গিয়েছে সেগুলো হয়তো অনেক পরে পেতাম।
তাহলে আপনি পরের কী শিখবেন?
যদি ভালো মধ্যবর্তী রিসোর্স না পাওয়ায় আটকে থাকেন, তাহলে নিজের শিখার প্রক্রিয়া নিজে নিয়ন্ত্রণ করুন। অ্যাপ বানানো শুরু করুন, এবং কীভাবে বানাচ্ছেন সেটা লক্ষ্য করুন। যেটা আধা নিশ্চিত কাজ করবে সেটা ট্রাই করুন, আর আটকে যাওয়ার জায়গা খুঁজুন। সেই আটকে যাওয়া ব্যবহার করুন, এবং সে ছোট অংশের জন্য API ডক, গাইড বা টিউটোরিয়াল খুঁজুন। সোর্স ডাইভিং করুন যদি লাগে। (প্রথমে অদ্ভুত লাগতে পারে, কিন্তু যত বেশি রেইলস কোড দেখবেন, তত আরামদায়ক লাগবে)।
একটা ছোট অংশ ভালোভাবে বুঝুন, সেটায় এক্সপার্ট হোন। তারপর পরবর্তী জিনিসে যান।