از بازآفرینی ساختارهای پایه دست بردارید: توسعه وب مدرن یعنی هماهنگسازی
بسیاری از توسعهدهندگان عادت دارند همه چیز را از صفر بسازند.
آنها پنلهای مدیریت سفارشی میسازند. سیستمهای احراز هویت سفارشی مینویسند. اسکریپتهای استقرار (deployment) سفارشی ایجاد میکنند. و سیستمهای ثبت وقایع (logging) سفارشی میسازند.
این کار حس مهندسی بودن و کنترل داشتن را منتقل میکند.
اما این رویکرد مشکلاتی ایجاد میکند.
وقتی خودتان ساختارهای پایه (boilerplate) را مینویسید، نسخه اول عالی به نظر میرسد. شش ماه بعد، هیچکس یادش نمیآید چرا آن را به آن شکل طراحی کردهاید. یک سال بعد، پروژه با موارد خاصی (edge cases) روبرو میشود که هیچکس نمیخواهد به آنها دست بزند. سه سال بعد، سیستم به یک سیستم قدیمی (legacy) تبدیل میشود و تغییر دادن آن دشوار میگردد.
توسعه وب مدرن به معنای نوشتن تکتک بخشها از صفر نیست؛ بلکه به معنای انتخاب و ترکیب سیستمهای موجود است.
• از ارائهدهندگان معتبر برای احراز هویت استفاده کنید. • برای پرداختها از Stripe یا Paddle استفاده کنید. • ارسال ایمیل و تحلیل دادهها (analytics) را به سرویسهای دیگر بسپارید. • از ابزارهای موجود برای جستجو، ذخیرهسازی فایل و ردیابی خطا استفاده کنید.
شغل شما در حال تغییر است. شما دیگر فقط کد نمینویسید، بلکه در حال انجام کارهای زیر هستید:
- انتخاب کامپوننتهای مناسب.
- درک موازنهها (trade-offs).
- طراحی مرزهای شفاف.
- حفظ قابلیت جایگزینپذیری سیستم.
- مستندسازی تصمیمات.
هر خط کدی که مالک آن هستید، خطی است که باید آن را عیبیابی (debug)، تست، ایمنسازی و توضیح دهید. کد اضافی هزینهبر است. استفاده از یک راهکار خارجیِ بالغ به تیم شما اجازه میدهد به جای زیرساختهای عمومی، بر روی مشکلات خاص کسبوکار خود تمرکز کنید.
البته ریسکهایی هم وجود دارد. وابستگیها (dependencies) باعث وابستگی به فروشنده (vendor lock-in)، تغییر قیمتها و مسائل امنیتی میشوند.
هدف این است که آگاهانه عمل کنید. همه چیز را به صورت پیشفرض نسازید. همه چیز را به صورت پیشفرض نصب نکنید. از خود بپرسید: آیا این کد بخشی از مزیت واقعی ماست، یا فقط داریم زیرساختهای موجود را دوباره میسازیم؟
وقتِ بررسی انسانی را صرف فرمتبندی یا فاصلهگذاریها (indents) نکنید. از linterها و بررسیهای خودکار CI استفاده کنید. توجه انسان را برای سوالات سطح بالا ذخیره کنید:
- آیا این طراحی قابل نگهداری است؟
- آیا مرزها شفاف هستند؟
- آیا این سیستم مقیاسپذیر خواهد بود؟
- آیا توسعهدهنده دیگری میتواند این را شش ماه دیگر درک کند؟
گاهی اوقات بهترین کد، کدی است که تصمیم میگیرید ننویسید.
ارزشمندترین توسعهدهنده کسی نیست که بیشترین کدهای تکراری (boilerplate) را مینویسد؛ بلکه کسی است که میداند چه چیزی باید در کدبیس وجود داشته باشد و چه چیزی نباید.
نرمافزار نه به خاطر نسخه اول، بلکه به دلیل نگهداری طولانیمدت آن هزینهبر است.
از بازآفرینی کدهای تکراری (Boilerplate) دست بردارید: توسعه مدرن وب درباره هماهنگسازی است
آیا تا به حال احساس کردهاید که بخش بزرگی از زمان شما در توسعه وب، صرف انجام کارهای تکراری و تنظیمات اولیه میشود؟ تنظیم کردن ابزارها، راهاندازی ساختارهای اولیه پروژه، پیکربندی دیتابیس و... اینها همه بخشی از آن چیزی است که ما به آن "Boilerplate" میگوییم.
اما حقیقت این است: توسعه مدرن وب دیگر درباره نوشتن هر خط کد از صفر نیست؛ بلکه درباره هماهنگسازی (Orchestration) است.
تلهی کدهای تکراری
بسیاری از توسعهدهندگان تمایل دارند هر چیزی را از ابتدا بسازند. این حس «کنترل کامل» ممکن است وسوسهانگیز باشد، اما در دنیای امروز، این یک اشتباه استراتژیک است. وقتی شما وقت خود را صرف نوشتن کدهای زیرساختی میکنید که قبلاً توسط هزاران نفر نوشته و تست شدهاند، در واقع دارید چرخ را از نو اختراع میکنید.
پیادهسازی در مقابل هماهنگسازی
تفاوت اصلی در اینجاست:
- پیادهسازی (Implementation): نوشتن منطق اصلی یک سیستم، مثلاً نحوه ذخیرهسازی دادهها در دیتابیس یا نحوه مدیریت نشستها (Sessions).
- هماهنگسازی (Orchestration): انتخاب یک دیتابیس، یک سیستم مدیریت نشست و یک سرویس ذخیرهسازی، و سپس متصل کردن آنها به یکدیگر برای رسیدن به هدف نهایی.
در دنیای مدرن، ما دیگر نیازی نداریم که خودمان پروتکلهای ارتباطی را بنویسیم یا سیستمهای مدیریت فایل را از صفر طراحی کنیم. ما از ابزارهایی استفاده میکنیم که این کارها را به بهترین شکل انجام میدهند.
تغییر نقش توسعهدهنده
وظیفه شما اکنون این است که:
- بهترین ابزارها و کتابخانهها را انتخاب کنید.
- آنها را به یکدیگر متصل کنید.
- جریان داده بین آنها را مدیریت کنید.
- اطمینان حاصل کنید که همه چیز با هم هماهنگ است.
این یعنی شما از یک «سازنده تکتک قطعات» به یک «ارکستراتور» یا هماهنگکننده تبدیل شدهاید.
چرا هماهنگسازی برنده است؟
- سرعت (Velocity): وقتی از قطعات آماده استفاده میکنید، زمان رسیدن به بازار (Time-to-market) به شدت کاهش مییابد.
- قابلیت اطمینان (Reliability): ابزارهای محبوب و استاندارد، باگهای کمتری نسبت به کدهای نوشته شده در لحظه دارند.
- تمرکز بر ارزش (Focus on Value): شما میتوانید انرژی خود را روی حل مشکلات واقعی کاربران بگذارید، نه روی تنظیمات تکراری.
نتیجهگیری
توسعه وب مدرن یعنی هوشمندانه کار کردن، نه سخت کار کردن. به جای غرق شدن در کدهای تکراری، یاد بگیرید چگونه سیستمهای مختلف را با هم ترکیب کنید تا چیزی بزرگتر و قدرتمندتر بسازید.