در حال حاضر کسب و کارها با کمک افراد حرفهای و توانمند سعی میکنند، مسیر پیشرفت و موفقیتشان را هموارتر کنند. در این بین مهندسان دواپس (DevOps) وظیفه بسیار مهمی دارند؛ آنها تعاملی اصولی را بین ۲ تیم توسعه و عملیات ایجاد میکنند. با تعامل بین تیمهای عملیات و توسعه، سرعت انجام پروژهها تا حد قابل قبولی بالاتر میرود و موجب پیشرفت کسب و کار خواهد شد. همچنین یکی از موضوعاتی که مورد بحث کارشناسان دواپس است، بدهی فنی (Technical Debt) است. بدهی فنی در برخی مواقع میتواند روند پیشرفت پروژهها را به خوبی پیش ببرد و در برخی مواقع، مشکلساز خواهد شد. در این مقاله از بلاگ آسا قصد داریم در رابطه با بدهی فنی صحبت کنیم و اشارهای به کارکردهای اصلی بدهی فنی در دواپس خواهیم داشت. برای آشنایی بیشتر با بدهی فنی، مطالعه این مقاله را در اولویت قرار دهید.
بدهی فنی؛ اکنون بسازید و در آینده اصلاح کنید!
بدهی فنی در دنیای دواپس و توسعه نرمافزار زیاد به کار میرود. فرض کنید در حال اجرای پروژهای هستید که باید با جزئیات زیادی کار را پیش ببرید و زمان اندکی برای اتمام پروژه پیش روی شما قرار گرفته است. در این حالت باید چندین روز به تقویم پروژه اضافه کنید، که در این صورت متحمل هزینههایی خواهید شد. راهحل جایگزین است که پروژه را در سریعترین زمان ممکن با کدهایی ساده به پایان برسانید و بعد از اتمام آن، بررسیهای لازم را برای اصلاحات کدها انجام دهید. در این حالت یک Technical Debt برای تیم ایجاد میشود.
در اصل در بدهی فنی راهحلی آسان و فوری برای مسئله در نظر گرفته میشود و برنامهنویسان و توسعهدهندگان، متعهد میشوند بعد از پایان پروژه راهکاری اصولیتر برای حل قسمتهای مختلف پروژه به کار بگیرند. در حقیقت بدهی فنی مانند دریافت وام است که بعد از پایان تمام مراحل، اقساط آن شروع میشود و افراد حاضر در تیم باید قسمتهای مختلف را مجدد بررسی کنند یا و تغییرات لازم را روی آن ایجاد کنند.
نظریه مخالفان Technical Debt؛ نگرانی بابت تکمیل نکردن پروژه
بدهی فنی از دید برخی از مدیران پروژه و توسعهدهندگان روش نادرستی است. برخی از برنامهنویسان و توسعهدهندگان اعتقاد دارند با بدهی فنی، تیمهای مختلف رشد خوبی را تجربه نمیکنند و تمرکزشان فقط روی اتمام پروژه گذاشته خواهد شد و خلاقیت در چنین پروسهای کاهش پیدا میکند. آنها عنوان میکنند که مشکلات Technical Debt مانند یک واکنش زنجیرهای میتواند روی عملکرد سایر بخشها تاثیرگذار باشد و روند کلی پروژه را درگیر خواهید کرد.
همچنین برنامهنویسان اذعان دارند، بدهی فنی مساوی است با ضررهای مالی و ممکن است چنین عملکردی به کسب و کارها آسیب وارد کند، اما برای حل مشکل در رابطه با کیفیت کار، تیمها باید تصمیمات درست و هوشمندانهای برای پروژه در نظر بگیرند. تصمیمات درست بر این مبنا است که تعادلی درست و اصولی بین سرعت و کیفیت کار در نظر بگیرند. همچنین به سرعت بعد از پایان پروژه تغییرات و اصلاحات لازم را انجام دهند؛ بنابراین Technical Debt را میتوان به اصولیترین شکل ممکن اجرا و پیادهسازی کرد.
دلایلی که پروژه را به سمت فرایند بدهی فنی هدایت میکند!
اغلب برنامهنویسان و توسعهدهندگان سعی میکنند، پروژه را در مدت زمان مشخص شده پیش ببرند، اما برخی اتفاقات مانع از چنین کاری میشود که آنها مجبور میشوند از Technical Debt استفاده کنند.دلایل استفاده از پروسه بدهی فنی به شرح زیر است:
- مشخص نبودن نیازهای پروژه به صورت شفاف: برخی مواقع تیمهای مختلف نیازهایشان را در پروژه به صورت شفاف بیان نمیکنند یا اینکه در روند پروژه تغییراتی را اعمال میکنند. برنامهنویسان در این حالت باید برخی از قسمتهای طراحیشده را بازنگری کنند و انجام این کار مستلزم در نظر گرفتن زمان بیشتر برای پروژه است.
- کدنویسی نامناسب: کدنویسی نامناسب و غیر ماژولار نیز یکی از دلایلی است که برخی از پروژهها را به سمت بدهی فنی میکشاند.
- ضعف آگاهی برنامهنویسان و توسعهدهندگان: در برخی مواقع افرادی که با پروژه سروکار دارند، اطلاعات فنی بالایی ندارند که همین موضوع موجب تاخیرهایی در روند کدنویسی خواهد شد.
- از دست رفتن کدهای نوشتهشده: معمولا بیشتر برنامهنویسان کدهای طراحی شده را به صورت مستند ثبت میکنند. اما در برخی مواقع مستند نکردن کدها، موجب میشود تا پروژه از زمان ارائهشده عقب بماند.
- تست نادرست محصول یا نرمافزار: تست ناقص یا تست نامناسب محصول باعث بروز خطاهایی نامشخص میشود که در چنین حالتی باید پروسه کدنویسی مجدد تکرار شود و این موضوع در زمان تحویل پروژه بسیار اثرگذار است.
در این قسمت مهمترین دلایل ایجاد بدهی فنی در فرایند پروژه و توسعه محصول عنوان کردیم. دلایل بسیار مختلفی برای استفاده از Technical Debt وجود دارد و تمام این علتها برای پایان رساندن موفق پروژه یا محصول در موعد مقرر انجام میشود.
تفاوت بدهی فنی برنامهریزی شده و خارج از برنامه
در حال حاضر ۲ حالت Technical Debt وجود دارد که با نامهای برنامهریزی شده و خارج از برنامه شناخته میشود. ۲ حالت بدهی فنی به شرح زیر است:
- بدهی فنی برنامهریزی شده: در این مدل برنامهریزی شده، اعضای درگیر در پروژه طبق اولویتهای انتشار یا بازاریابی محصول، تصمیم میگیرند برخی از قسمتهای پروژه را سریعتر پیش ببرند. با انجام چنین کاری، کسب و کارشان ضرر نمیبیند و ممکن است، سوددهی بیشتری نیز داشته باشد؛ بنابراین گاهی اوقات برای پیشرفت پروژه باید از Technical Debtاستفاده کنیم. نکته مهم این است که این بدهی، باید به صورت درست مدیریت شود.
- بدهی فنی خارج از برنامه: معمولا در مدل خارج از برنامه زمانی رخ میهد که به مشکلات کوچک اهمیت داده نمیشود و افراد حاضر در تیم، برای این مشکلات برنامهریزی خاصی انجام نمیدهند. در این موقعیت بهرهوری کاهش پیدا میکند و ممکن است حتی با در نظر گرفتن عملیات Technical Deb، پروژه به درستی مسیر را طی نکند و کسب و کار دچار ضررهای مالی و غیرمالی شود.
برای اینکه گرفتار عواقب سخت نشوید، توصیه میکنیم با برنامهریزی دقیق و درست پروسه Technical Debt را پیش ببرید.
بدهی فنی؛ راهکاری مناسب برای پیشرفت کسب و کارهای مختلف
در این مقاله از بلاگ آسا در رابطه با بدهی فنی صحبت کردیم و اشارهای به کاربردهای آن در کسب و کارها و پروژههای مختلف داشتیم. در حالت کلی Technical Debt به عنوان راهکاری برای پیشرفت کسب و کار شناخته میشود. مهمترین نکتهای که باید در نظر گرفت، تعهد تکمیل پروژه بعد از انتشار اولیه است.
اعضای تیم باید در زمان پایان پروژه، تغییرات لازم را روی آن اعمال کنند تا کسب و کار یا سازمان دچار ضرر مالی نشود. توصیه میکنیم در رابطه با موضوعات مرتبط با دواپس و توسعهنرم افزار، سایر مقالات منتشر شده در بلاگ آسا را مطالعه کنید.
منبع:
دیدگاهتان را بنویسید