বয়েলারপ্লেট (Boilerplate) পুনরায় তৈরি করা বন্ধ করুন: আধুনিক ওয়েব ডেভেলপমেন্ট হলো অর্কেস্ট্রেশন (Orchestration)-এর বিষয়
অনেক ডেভেলপারের সবকিছু শুরু থেকে (from scratch) তৈরি করার একটি অভ্যাস থাকে।
তারা কাস্টম অ্যাডমিন প্যানেল তৈরি করে। তারা কাস্টম অথেন্টিকেশন (authentication) লেখে। তারা কাস্টম ডিপ্লয়মেন্ট স্ক্রিপ্ট তৈরি করে। তারা কাস্টম লগিং (logging) তৈরি করে।
এটি প্রকৌশল বা ইঞ্জিনিয়ারিং মনে হয়। এটি নিয়ন্ত্রণের অনুভূতি দেয়।
কিন্তু এই পদ্ধতি সমস্যা তৈরি করে।
যখন আপনি নিজের বয়েলারপ্লেট (boilerplate) লেখেন, প্রথম ভার্সনটি দেখতে ভালো লাগে। ছয় মাস পরে, কেউ মনে রাখতে পারে না কেন আপনি এটি এভাবে ডিজাইন করেছিলেন। এক বছর পরে, প্রজেক্টে এমন কিছু এজ কেস (edge cases) তৈরি হয় যা কেউ স্পর্শ করতে চায় না। তিন বছর পরে, সিস্টেমটি লেগাসি (legacy) হয়ে যায়। এটি পরিবর্তন করা কঠিন হয়ে পড়ে।
আধুনিক ওয়েব ডেভেলপমেন্ট মানে প্রতিটি অংশ শুরু থেকে লেখা নয়। এটি হলো বিদ্যমান সিস্টেমগুলো বেছে নেওয়া এবং সেগুলোকে সমন্বয় করা।
• অথেন্টিকেশনের জন্য পরিপক্ক (mature) প্রোভাইডার ব্যবহার করুন। • পেমেন্টের জন্য Stripe বা Paddle ব্যবহার করুন। • ইমেল ডেলিভারি এবং অ্যানালিটিক্স (analytics) অন্য কিছুর ওপর ছেড়ে দিন। • সার্চ, ফাইল স্টোরেজ এবং এরর ট্র্যাকিংয়ের জন্য বিদ্যমান টুল ব্যবহার করুন।
আপনার কাজ পরিবর্তিত হচ্ছে। আপনি এখন আর কেবল কোড লিখছেন না। আপনি এখন:
- সঠিক কম্পোনেন্ট বেছে নেওয়া।
- ট্রেড-অফ (trade-offs) বোঝা।
- পরিষ্কার বাউন্ডারি (boundaries) ডিজাইন করা।
- সিস্টেমটিকে পরিবর্তনযোগ্য রাখা।
- সিদ্ধান্তগুলো ডকুমেন্ট করা।
আপনার লেখা কোডের প্রতিটি লাইন আপনাকে ডিবাগ (debug), টেস্ট, সুরক্ষিত এবং ব্যাখ্যা করতে হবে। অপ্রয়োজনীয় কোড ব্যয়বহুল। একটি পরিপক্ক বাহ্যিক সমাধান ব্যবহার করলে আপনার টিম সাধারণ ইনফ্রাস্ট্রাকচারের পরিবর্তে আপনার নির্দিষ্ট ব্যবসায়িক সমস্যাগুলোর দিকে মনোযোগ দিতে পারে।
অবশ্যই, কিছু ঝুঁকি আছে। ডিপেন্ডেন্সি (dependencies) ভেন্ডর লক-ইন (vendor lock-in), দামের পরিবর্তন এবং নিরাপত্তার সমস্যা নিয়ে আসতে পারে।
লক্ষ্য হলো উদ্দেশ্যপ্রণোদিত হওয়া। ডিফল্টভাবে সবকিছু তৈরি করবেন না। ডিফল্টভাবে সবকিছু ইনস্টল করবেন না। নিজেকে প্রশ্ন করুন: এই কোডটি কি আমাদের প্রকৃত সুবিধার অংশ, নাকি আমরা কেবল বিদ্যমান ইনফ্রাস্ট্রাকচার পুনরায় তৈরি করছি?
ফরম্যাটিং বা ইনডেন্টেশনের (indents) জন্য মানুষের রিভিউ করার সময় নষ্ট করা বন্ধ করুন। লিন্টার (linters) এবং স্বয়ংক্রিয় CI চেক ব্যবহার করুন। উচ্চ-স্তরের প্রশ্নগুলোর জন্য মানুষের মনোযোগ বাঁচিয়ে রাখুন:
- এই ডিজাইনটি কি রক্ষণাবেক্ষণযোগ্য (maintainable)?
- বাউন্ডারি কি পরিষ্কার?
- এটি কি স্কেল (scale) করতে পারবে?
- অন্য একজন ডেভেলপার কি ছয় মাস পরে এটি বুঝতে পারবে?
সেরা কোড হলো মাঝে মাঝে সেই কোড, যা আপনি না লেখার সিদ্ধান্ত নেন।
সবচেয়ে মূল্যবান ডেভেলপার তিনি নন যিনি সবচেয়ে বেশি বয়েলারপ্লেট লেখেন। বরং তিনি, যিনি জানেন কোডবেসে কী থাকা উচিত এবং কী থাকা উচিত নয়।
সফটওয়্যার ব্যয়বহুল হয় প্রথম ভার্সনের জন্য নয়, বরং দীর্ঘমেয়াদী রক্ষণাবেক্ষণের (maintenance) জন্য।