প্রোগ্রামিং ক্যারিয়ারের একটা পর্যায়ে এসে ফ্রেমওয়ার্ক শেখার জন্য প্রথম যে কারণটা থাকে সেটা হলো টাইম সেভিংস/প্রোডাকশন বাড়ানো।
এরপরে আরেকটা ইমপর্টেন্ট কারণ আছে, কোডের কোয়ালিটির উন্নতি! এই কারণটার জন্য মিনিমাম একটা ফ্রেমওয়ার্ক শেখা খুবই, খুবই, খুবই জরুরী। প্রত্যেকটা বেস্টপ্র্যাকটিস, প্রত্যেকটা ডিজাইন প্যাটার্ন একটা একটা করে ধরে ধরে শেখা খুবই কঠিন (অসম্ভব বলতেছিনা) একটা কাজ। আর একটা ফ্রেমওয়ার্কে এই জিনিসগুলা একটা প্যাকেজ হিসেবে আসে। এমনিতেই জিনিসগুলা আয়ত্বে এসে যায়। নিয়ম মেনে কোড লেখলে কোড দেখতে এমনিই অনেক সুন্দর লাগে তখন!
আমি খুব বেশি থিওরি নিয়ে কথা বলবো না, তারচেয়ে নিজের এক্সপেরিয়েন্সটা শেয়ার করি।
আমি লারাভেল শেখার আগে ওয়ার্ডপ্রেসের জন্য কোড লিখতাম। তখনো আমি মোটামুটি কমেন্ট করে, ইন্ডেন্ট করে কোড লেখার চেষ্টা করতাম। কোড যাতে একটু সুন্দর দেখা যায়, রিডেবল থাকে সেজন্যই প্রচেষ্টা।
তো লারাভেল শেখার কিছুদিন পরে এক ভাই বললো তার একটা প্লাগইন বানাতে হবে, ওয়ার্ডপ্রেসের। কাজ শিম্পল, একটা ফর্ম থাকবে, স্ট্রাইপ দিয়ে পেমেন্ট প্রসেস হবে। আর পেমেন্টের পরে একটা থ্যাংকিউ পেজ সম্ভবত। সিম্পল কাজ, সিম্পলি বানিয়ে ফেললাম। কাজ শেষে একটা জিনিস আবিষ্কার করে নিজেই আবিভূত হয়ে গেলাম। এই ফর্মটা আমি PHP এর ভিতরে এমবেড করি নাই। বরঞ্চ একটা HTML ফাইলে পিউর HTML ফর্মটা রেখে, file_get_contents
এবং str_replace
এর মত দুয়েকটা ফাংশন দিয়ে ৪-৫ লাইনে নিজেই একটা ছোট টেমপ্লেটিং ল্যাংগুয়েজের মত বানিয়ে ফেলেছি। এত ছোট কাজে টুইগ ব্যবহার করার কোন মর্ম নাই, আবার HTML আর PHP একসাথেও লিখতে চাই নি।
এরপরে আমার মনে হয় না, আমি HTML আর PHP একসাথে কোথাও মিক্স করেছি!
এরপর পানি অনেকদূর গড়িয়েছে, অনেক কিছুই ঘটেছে। হঠাত করে আজকে যে কারণে এই পোস্টের অবতারণা। লারাভেল শেখার আরও কয়েকমাস আগে একটা প্লাগইন লিখেছিলাম, Guest Posts Pro নামে। আজকে একজন নক দিয়েছে একটা জিনিস জানার জন্য। এতদিনে আমি নিজেই ভুলে গিয়েছি, কোনটা কিভাবে কাজ করে। কোড খুলে বসলাম।
কোড দেখে পুরা হা হয়ে গেছি, এই কোড আমি এমনে স্ট্রাকচার করছিলাম? সিরিয়াসলি!!!!!?
প্রথমে যেটা চোখে পড়েছে, if else
(টার্নারী না) এক লাইনে লিখছি। এইটা সম্ভবত কোড একটু কম + ক্লিন রাখার জন্য লিখেছিলাম। একটু পরে খেয়াল করে দেখি আমি বামপাশে গাটারে ১০০০ পার হয়ে গেছে। হাজার লাইনের উপরে কোড এক ফাইলে!! ড্যাম ইউ বাবর!
পুরা প্লাগইনই একটা ফাইলে কোড করে ফেলেছিলাম। সকল প্রকার HTML, লজিক, পেপালের IPN সব এক ফাইলে! এই জিনিসগুলা এখন আমি এইভাবে চিন্তাই করতে পারি না। এত মেস কিভাবে সম্ভব! এই কোড ক্যামনে মেইনটেইন করবে মানুষ!
এমন না যে আমি তখন যেনতেন কোড লিখেছিলাম। পুরা প্লাগইনটাই অনেক যত্ন করে লেখা, ডকস থেকে শুরু করে কোড, সব। কমেন্ট, স্পেসিং, ইন্ডেন্টেশন, নেমিং কনভেনশন সবই মোটামুটি কনসিস্টেন্ট। এবং সবকিছু ঠিকঠাক মত কাজও করতেছে।
তারপরও সেই দেড় বছর আগের আমি কে দেড়বছর পরে নিজেই পছন্দ হচ্ছে না। এখন এই পুরো দায়টাই আমি লারাভেলের উপর চাপিয়ে দিবো। লারাভেলে আসার পরে আমি MVC শিখেছি, Single Responsibility শিখেছি, লিনিয়ার কোড স্ট্রাকচার করা শিখেছি, আরও অনেক কিছু!
এরপরে রুবি শিখলাম। রুবিতে যে জিনিসটা সবচেয়ে ভালো লাগে সেটা হলো, কোড লিখে আর পড়ে শান্তি। কোড পুরো ঝকঝক করে। এই কারণেই নিজের ভিতরে রুবিতে অনেক বেশি প্রোডাক্টিভ ফীল পাই। এখনো বসের কাছে ঝাড়ি খাই, এই if else
টা এমনে ক্যান লেখছি। ওইখানে মাল্টিপল রিটার্ণ ক্লজ কেনো লিখছি! এই জিনিসগুলা আমি খুবই এঞ্জয় করি। আবার হয়তো বছরখানেক পরে গিয়ে বর্তমানের এই আমি কে নিজেরই পছন্দ হবে না! :P
যাইহোক, মোটের উপর পরামর্শ হলো, raw কোড লিখে নিজেই একটা ওয়ার্ডপ্রেস, একটা জুমলা বানিয়ে ফেলার মত যোগ্যতা অর্জন করে ফেলেছেন, খুবই ভালো কথা। কনগ্র্যাটস ম্যান! তারপরও বলবো, প্লীজ প্লীজ প্লীজ যে কোন একটা ফ্রেমওয়ার্ক পিক করে শিখে ফেলেন। নিজের কোডের উন্নতি দেখে নিজেই আভিভূত হয়ে যাবেন। ম্যান্ডেটরী না যে সেই কোড ওই ফ্রেমওয়ার্কেই হতে হবে। আপনার raw কোডেও পরিবর্তন আসবে। ওভারঅল আপনার কোডিং এক্সপেরিয়েন্সই বদলে যাবে!
What's on your mind?
14 Comments
সি ল্যাংগুয়েজে একটা প্রোগ্রাম লিখেছিলাম, সেই ২০১২ তে, সিক্লিনার টাইপের কিছু। তখন তো আর অতো কিছু জানতাম না, তো ১২০০ লাইনের মত হইছিল কোড, আর তখন অত ইন্ডেনটেশন ও মেইনটেইন করতাম না।
তবে, এখন ইন্ডেনটেসন এর ক্ষেত্রে আমি যথারীতি কোনো ছাড় দেই না। আর কোডে কোনো কমেন্ট থাকে না। কোড বড় হয়, বড় কোডের প্রতি আমার অ্যালার্জি। :(
আর, কোড যত সম্ভব ভাগ করে কাজ করার চেষ্টা করি এখন। অইগুলাকেই মড্যুল/মডিউল বলে নাকি জানি না :p
:P
True indeed
অতি সুন্দর ভ্রাতা :D
থ্যাংকস ভাই। :)
আমি নিশ্চিত ১ বছর পর আপনি আজকের কোড দেখেও এমন অনুভূতিই পেস করবেন।
সেই সন্দেহ তো আমার নিজেরই আছে! :P