JavaRush /وبلاگ جاوا /Random-FA /کارمای بد در برنامه نویسی بدهی فنی چیست و چگونه می توان آ...

کارمای بد در برنامه نویسی بدهی فنی چیست و چگونه می توان آن را رفع کرد

در گروه منتشر شد
کارمای بد در برنامه نویسی  بدهی فنی چیست و چگونه می توان آن را حذف کرد - 1بدهی فنی اکثر برنامه نویسانی که به طور فعال در تخصص خود کار می کنند باید با این اصطلاح سر و کار داشته باشند. برای بسیاری، ذکر آن حتی می تواند باعث سردرد و همچنین ناراحتی در سایر قسمت های بدن شود که هر زمان که با بدهی فنی در حین کار بر روی یک پروژه برخورد می کنید ظاهر می شود. کارمای بد در برنامه نویسی  بدهی فنی چیست و چگونه می توان آن را حذف کرد - 2بنابراین، امروز در مورد بدهی فنی (TD) صحبت خواهیم کرد: چیست، چگونه ظاهر می شود، چه نوع بدهی فنی وجود دارد، و چگونه می توان آن را به طور موثر مدیریت کرد.

بدهی فنی چیست؟

با این حال، ابتدا اجازه دهید اصطلاحات را درک کنیم. بدهی فنی یک استعاره مهندسی نرم افزار برای مشکلات انباشته شده در کد نرم افزار یا معماری به دلیل بی توجهی به کیفیت در توسعه نرم افزار و ایجاد هزینه های اضافی نیروی کار در آینده است. این تعریفی است که ویکی پدیا از بدهی فنی ارائه کرده است . به بیان ساده، بدهی فنی نتیجه به کارگیری راه حل های ساده و کوتاه مدت در توسعه است که بعداً منجر به افزایش روزافزون (مگر اینکه بدهی «بازپرداخت» نشود) هزینه های پول و زمان برای پالایش بعدی، بازنویسی کد یا نگهداری محصول به شکل موجود. در دنیای برنامه نویسان عادی، بدهی فنی یکی از انواع کارمای منفی، بی انگیزه و منبع غم و اندوه است که به عنوان تلافی کد بد، استفاده از عصا و راه حل های "موقت" (اما نه خیلی زیاد) است. کمک به حل مشکلات کوتاه مدت و سرعت بخشیدن به توسعه "به صورت اعتباری"، یعنی به قیمت افزایش مشکلات در آینده. در صنعت IT، بدهی فنی یک مشکل نسبتا جدی است. بر اساس یک مطالعه اخیر ، شرکت ها در سراسر جهان سالانه بیش از 85 میلیارد دلار در سال صرف رفع کدهای بد می کنند. در مجموع، حدود 300 میلیارد دلار در سال برای پروژه های مربوط به پشتیبانی از سیستم های قدیمی و نرم افزارهای "بد" هزینه می شود. اینها اعداد قابل توجهی هستند. محققان تخمین می‌زنند که اگر تلاش‌های همه توسعه‌دهندگانی که با بدهی‌های فنی و پیامدهای آن کار می‌کنند دوباره بر توسعه «درست» متمرکز شود، در طول دهه جاری حدود 3 تریلیون دلار به تولید ناخالص داخلی جهانی اضافه خواهد شد.

دلایل ظاهر شدن

باید درک کرد که بدهی فنی همیشه چیز بدی نیست، همانطور که به عنوان مثال، اگر برای توسعه یک کسب و کار (یا راه اندازی یک استارتاپ ) وام بگیرید، دریافت بدهی مالی می تواند مثبت باشد . در مورد TD، این برای شرکت‌هایی که به سرعت در حال رشد هستند، قابل قبول است که به‌منظور ارزیابی موفقیت خود و مطالعه نیازهای بازار، یا به‌عنوان مثال به‌سرعت به دست آوردن جایگاه‌های جدید، به سرعت و اغلب به عرضه محصولات یا خدمات جدید نیاز دارند. اما، مانند بدهی های مالی، باید مراقب بدهی های فنی باشید و بدانید که چگونه آن را مدیریت کنید، در غیر این صورت ممکن است مشکلات جدی ایجاد شود. هر چه بدهی فنی بیشتر در طول توسعه یک محصول نرم افزاری انباشته شود، می تواند شرکت را تحت تأثیر قرار دهد، انتشار نسخه های جدید را کندتر کند، روحیه کدنویسان عادی را که مسئول "نگهداری" چنین بدهی هستند کاهش دهد و هزینه ها را افزایش دهد. ، که در نهایت حتی می تواند شرکت را نابود کند. دلایل بروز بدهی فنی، علاوه بر تمایل نجیب برای تکمیل محصول در اسرع وقت یا جلب رضایت کاربران با نسخه جدید، اغلب مدیریت ضعیف محصول، مهلت‌های غیرواقعی یا محدودیت منابع و البته تنبلی کدنویس است. همراه با صلاحیت های پایین و عدم درک اصول کلیدی توسعه، اغلب به رشد بدهی کمک می کند. اغلب اتفاق می افتد که خود توسعه دهندگان به خوبی از وجود و رشد مداوم بدهی فنی آگاه هستند، اما قدرت کافی برای تغییر آن را ندارند یا نمی توانند اطلاعاتی را در مورد وجود چنین مشکلی و اهمیت حل آن به مدیریت منتقل کنند. کارمای بد در برنامه نویسی  بدهی فنی چیست و چگونه می توان آن را حذف کرد - 3

طبقه بندی

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

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

    "گاهی اوقات ما عمدا بدهی فنی می گیریم تا زمان توسعه را کاهش دهیم. اگر تصمیم به رفتن به این مسیر دارید، نه تنها زمانی را که در طول توسعه صرفه جویی می کنید، بلکه زمانی را که باید بعداً برای "پرداخت" چنین بدهی صرف کنید، در نظر بگیرید. همچنین، اطمینان حاصل کنید که ذینفعان [مدیریت ارشد شرکت] آگاه هستند که چنین تصمیمی به طور اجتناب ناپذیر راه اندازی سایر عملکردها را در آینده کند می کند.

    رویکردی برای حل این نوع بدهی های فنی

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

  2. بدهی فنی که تصادفی است یا از معماری قدیمی پروژه ناشی می شود.

    همچنین بدهی فنی اغلب در طول زمان به دلیل خطاها و کاستی ها در مرحله ایجاد معماری پروژه ایجاد می شود. با تکامل سیستم ها و تغییر نیازهای نرم افزاری، خطاهای طراحی آشکارتر می شوند و افزودن ویژگی های جدید مستلزم زمان و تلاش بیشتری است. کیفیت معماری پروژه اولیه در اینجا نقش مهمی ایفا می کند - باید هم ساده و هم کاربردی باشد، سپس سازگاری با تغییرات آسان تر خواهد بود.

    رویکردی برای حل این نوع بدهی های فنی

    برای جلوگیری از انباشت این نوع بدهی فنی و فراتر از سطوح بحرانی، Dag Llodden توصیه می‌کند که به طور منظم - تقریباً هر دو سال یک‌بار، در دوره‌هایی که سیستم در وضعیت پایداری قرار دارد، دوباره‌سازی شود. رهبران تیم و مدیران محصول باید زمانی را برای "پرداخت" این نوع بدهی فنی که به دلیل معماری و الزامات مکرر تغییر برای پروژه ایجاد می شود، اختصاص دهند.

  3. بدهی فنی که در طول زمان ایجاد می شود.

    این کارشناس چنین بدهی فنی را "پوسیدگی طولانی" می نامد. به مرور زمان جمع می شود زیرا یک جزء یا سیستم به تدریج پیچیده تر می شود زیرا تغییرات زیادی دائماً اضافه می شود. اگر افراد مختلف در مراحل مختلف روی سیستم کار کنند و معماری اصلی را به طور کامل درک نکنند، اغلب بدتر می شود.

    رویکردی برای حل این نوع بدهی های فنی

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

کارمای بد در برنامه نویسی  بدهی فنی چیست و چگونه می توان آن را حذف کرد - 4

راه حل های فنی مدیریت بدهی

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

    نکته ای که در مورد بدهی فنی وجود دارد این است که هرگز زمانی برای حذف آن وجود ندارد (زیرا همیشه وظایف با اولویت بالاتری وجود دارد) مگر اینکه آن را هدفمند انجام دهید. بنابراین، یک راه حل خوب تخصیص درصد مشخصی از زمان کار برای این اهداف - حدود 20-25٪ است.

    این را می توان به روش های مختلف انجام داد.

  2. 1 روز در هفته روی بدهی فنی کار کنید

    Если выделять на работу над устранением ТД всей командой один день в неделю, это How раз будет около 20% от общего рабочего времени. Для некоторых команд такой подход работает просто отлично и, говорят, даже повышает мораль, ведь в этот конкретный день недели вся команда занимается решением проблем, которые достают их все остальное время разработки.

  3. Посвящать работе над ТД каждую четвертую задачу

    Такая система подходит тем командам, которые склонны разделять работу над проектом на примерно равномерные по времени и усorям для их выполнения задачи. Если один из каждых четырех тасков посвящать “выплате” ТД, это будет занимать около четверти всего времени разработки. А введение такого подхода в качестве правила позволит убедиться, что codeеры не будут откладывать технический долг “на потом”.

  4. Переходящая роль

    Еще одним подходом к проблеме устранения технического долга будет назначать на данную задачу разных членов команды поочередно, чтобы равномерно распределить эту порой далеко не самую приятную работу среди членов коллектива. Количество разработчиков, назначенных заниматься “разгребанием” ТД, может быть разным — для команды из 4-5 человек будет достаточно одного, тогда How коллективы побольше могут назначать двух-трех. Но суть остается прежней — на работу над ТД должно уходить около 20-25% всех ресурсов и человеко-часов.

  5. Правило бойскаутов.

    Правило бойскаутов состоит в том, чтобы всегда оставлять туристический лагерь (стоянку для палаток) в лучшем состоянии, чем он был до их прихода, то есть убирать даже тот мусор, который был оставлен не ими. Этот принцип, How выяснor заокеанские codeеры, отлично подходит и для управления техническим долгом. Согласно данному правилу, все члены команды должны заниматься исправлением ТД каждый раз, когда сталкиваются с ним в том or ином виде. Конечно, это правило нужно применять разумно, чтобы время, которое уходит на исправление ТД, не превышало “разумные” 25-30% от общих временных ресурсов.

  6. Приоритизация “дорогого” технического долга

    Также эксперты в массе своей рекомендуют не забывать о том, что технический долг может различаться в том числе и по важности. Далеко не каждый тип ТД требует немедленного устранения, поэтому важно работать над классификацией разных видов технического долга и приоритезацией работы с ними соответственно. Проще говоря, прежде всего закрывать надо те долги, которые оказывают прямое влияние на speed разработки продукта, будучи частью его базовой архитектуры. Такие долги являются самыми опасными, потому что ведут к появлению новых долгов, которые могут расти How снежный ком.

Заключение

در نهایت، من می خواهم یک بار دیگر تأکید کنم که بدون بدهی فنی در توسعه نرم افزار غیرممکن است، زیرا آنها بخشی جدایی ناپذیر از توسعه هستند. با این حال، علیرغم ماهیت فنی آن، TD هنوز یک مشکل ناشی از عامل انسانی در توسعه است. و اگرچه نمی توانید بدون آن به طور کامل انجام دهید، اما اگر کد "تمیز" بنویسید و تا حد امکان مسئولانه و حرفه ای به روند توسعه نزدیک شوید، مقدار بدهی فنی را می توان تا حد امکان کاهش داد. این چیزی است که ما برای همه آرزو می کنیم!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION