ویرگول
ورودثبت نام
Ali Fazeli
Ali Fazeliمهندس نرم افزار
Ali Fazeli
Ali Fazeli
خواندن ۴ دقیقه·۷ ماه پیش

توسعه مبتنی بر مشکل: راهکاری ساده برای ترسیم نقشه راه فنی


یکی از چالش‌های بزرگ در نقش‌های ارشد فنی، تعیین مسیر و اهداف فنی تیم است. مهندسان ارشد و مدیران مهندسی اغلب در تنظیم نقشه راه فنی دچار سردرگمی می‌شوند؛ زیرا آموزش محدودی در این زمینه وجود دارد، رقابت با مدیران محصول آموزش‌دیده مشکل است و برخی سازمان‌ها مسئولیت تعیین اولویت‌ها را به‌طور کامل به مدیر محصول محول می‌کنند. اما حقیقت این است که داشتن چشم‌انداز فنی قوی لزوماً یک استعداد ذاتی نیست، بلکه حاصل بررسی ساده و مداوم مشکلات واقعی است.

چالش‌های متداول در تدوین نقشه راه فنی

اکثر مدیران مهندسی و مهندسان ارشد در نخستین تلاش‌های خود برای تدوین نقشه راه، تیم را به پرسش از ایده‌ها و راهکارهای پیشنهادی دعوت می‌کنند. این رویکرد معمولاً به نتایجی ناکارآمد ختم می‌شود به دلایل زیر:

  • نبود فرصت کافی برای فکر کردن منجر به پاسخ‌های سطحی می‌شود.
  • افراد بیش از حد به نظرات افراد صاحب‌ منصب تکیه می‌کنند، حتی وقتی آن نظر بر اساس درک عمیق نباشد.
  • تمرکز بر راهکارها به جای شناخت مشکلات واقعی است.

در نتیجه فهرستی مانند موارد زیر شکل می‌گیرد:

  • ارتقاء نسخه کتابخانه به نسخه جدیدتر
  • بازسازی کلاس X برای بهبود ساختار و تمیزی کد
  • آزمایش ابزار جدید SaaS

اما غالباً دلیل اصلی انجام این راهکارها که حل یک مشکل مشخص است، فراموش می‌شود و بعد از چند چرخه کاری، بحث‌ها حول راهکارها بدون یادآوری مشکل اولیه ادامه می‌یابد.

نقطه ضعف بزرگ این روش، ناتوانی در شناسایی و اولویت‌بندی مشکلات اصلی است. وقتی فقط راه‌حل‌ها را اولویت‌بندی می‌کنید، اجرای آن‌ها ممکن است بدون رفع مشکلات اساسی صورت گیرد. اما با اولویت دادن به مشکلات واقعی، مجبورید به اصلاح مسائل بنیادین بپردازید؛ کاری که نمی‌توان بی‌پایان به تأخیر انداخت.

هر اقدامی باید به حل یک مشکل خاص ختم شود. تیم را حول بزرگ‌ترین مشکلات هماهنگ کنید و نقشه راه فنی خود را بر اساس حل آن‌ها ترسیم نمایید. بازبینی دوره‌ای فهرست مشکلات برای حفظ اعتبار آن ضروری است.

توسعه مبتنی بر مشکل: شناسایی مشکلات واقعی

برای حل مشکلات، اول باید بدانید مشکلات در کجا وجود دارند. در اکثر تیم‌های نرم‌افزاری مشکلات در این حوزه‌ها قابل ردیابی است:

  • هشدارهای سیستم مانیتورینگ
  • نقض اهداف سطح سرویس (SLO)
  • اتلاف وقت در پروژه‌ها یا تسک‌ها
  • کندی در فرایندهای توسعه مانند (CD/CI)
  • هزینه‌ها
  • شکست‌های ناشی از انتشار (Deployment Failure)

این منبع‌های شکست قابل بررسی و قابل اندازه‌گیری هستند و می‌توان بر اساس آن‌ها فهرستی از مشکلات اولویت‌بندی شده را ساخت؛ مثلاً:

  • تعداد زیادی هشدار دریافت می‌کنیم که ۸۰٪ آن‌ها مربوط به سرویس WizBang است؛ باید آن را به صفر برسانیم.
  • ۱۲٪ از وقت ما صرف کارهای دستی می‌شود که قابل کاهش ۵۰٪ با یک ماه کار هست.
  • اهداف سطح سرویس (SLO) در وضعیت قابل قبول هستند؛ نیازی به کار نیست.

سپس می‌توانید راه‌حل‌هایی برای حل این مشکلات طراحی کنید. گرچه ساده به نظر می‌رسد، اما روشی قدرتمند برای تعیین مسیر فعالیت‌هاست.

توسعه مبتنی بر مشکل: مواجهه با بدهی فنی

اولویت‌بندی بدهی فنی در صنعت بسیار پیچیده و بحث‌برانگیز است. بخشی از مشکل این است که مهندسان اغلب در بیان دلایل اهمیت بدهی فنی ضعیف عمل می‌کنند و مدیران محصول نیز برای رقابت با کارهای محصول به اجرای تحقیقات مفصل اولویت‌سازی نیاز دارند که منصفانه نیست. در نتیجه تیم‌ها معمولا به توافقات درصدی برای اختصاص زمان به بدهی فنی تن می‌دهند تا از دعوا پرهیز کنند.

مهندسان باید بهتر به دلایل منطقی بدهی فنی توجه کنند، به‌عنوان مثال:

  • مشکل در یک کلاس: چه مشکلاتی ایجاد می‌کند؟
  • سختی کدنویسی: به‌خاطر ساختار نامناسب این کلاس چقدر است؟
  • میزان اتلاف وقت: چقدر است؟
  • تناوب تغییر: آیا این قسمت هر چند وقت یکبار تغییر می‌کند؟
  • هزینه-فایده: آیا بازسازی این کد ارزش صرف یک ماه زمان را دارد؟
  • اولویت نسبی: ممکن است بخشی دیگر از کد با همان مشکل، اما با تغییرات بیشتر و نرخ شکست بالاتر وجود داشته باشد که رفع آن اولویت داشته باشد.

در نهایت با چارچوب‌بندی مسائل به‌صورت مشکلات واقعی، می‌توان درباره اولویت‌ها تصمیم‌گیری معقولی داشت.

در حالت ایده‌آل، بدهی فنی باید در حین انجام کارهای دیگر در آن بخش کد برطرف شود، اما اگر قصد دارید زمان مستقلی برای آن اختصاص دهید، حداقل داده‌های کمی برای پشتیبانی ادعای خود داشته باشید. گاهی اوقات باور قوی به رفع یک بدهی فنی تنها پس از تحقیقات و تحلیل این داده‌ها اثبات می‌شود.

خلاصه

توسعه مبتنی بر مشکل، رویکردی ساده و بدیهی است که متأسفانه بسیاری از مهندسان و مدیران مهندسی از آن فاصله گرفته‌اند . این روش به تیم های توسعه کمک می‌کند هنگام تدوین نقشه راه فنی، مشکلات واقعی تیم را شناسایی کرده، بر بزرگ‌ترین آن‌ها تمرکز کنید و برنامه‌ای برای حلشان ایجاد نمایید. بعلاوه، این رویکرد قابلیتی را فراهم می‌آورد تا به‌راحتی راه‌حل‌های غیرفرضی را رد کنید و تیم خود را بر اساس چرایی کارها متحد نگاه دارید.

پیشنهاداتی برای اقدام:

  • اگر در موضع تعیین نقشه راه هستید، مشکلات را شناسایی، بزرگ‌ترین آن‌ها را اولویت‌بندی و برنامه‌ریزی برای حل آن‌ها را انجام دهید.
  • اگر مهندس جوانی هستید که می‌خواهید قدرت تأثیرگذاری و دید فنی خود را افزایش دهید، به دنبال مکان‌هایی باشید که مشکلات تیم در آن‌ها نمود پیدا می‌کند، نه فقط به یکی از کلاس‌های کد تمرکز کنید.
  • اگر مدیر مهندسی هستید، مشکلات تیم را به طور شفاف بیان و آموزش دهید تا اعضا دید جامع‌تری از مسائل داشته باشند و از فعالیت صرفاً اجرایی فاصله بگیرند.
  • همیشه دلیل انجام کارها را به تیم خود یادآوری کنید، چرا که از دست دادن تمرکز بر روی مشکل، به معنای از دست رفتن راه‌حل خواهد بود.
برنامه ریزی
۳
۱
Ali Fazeli
Ali Fazeli
مهندس نرم افزار
شاید از این پست‌ها خوشتان بیاید