Ви посилаєтесь на технічну заборгованість .
Всі ми накопичуємо технічну заборгованість у продуктах, які ми розробляємо з часом; рефакторинг - це один із найпоширеніших та ефективних способів зменшення цього технічного боргу, хоча багато компаній ніколи не погашають свою технічну заборгованість. Ці компанії, як правило, знаходять своє програмне забезпечення вкрай нестабільні роки в дорозі, і технічний борг стає настільки жахливим, що ви не можете його поступово сплачувати, тому що платити за це потрібно буде занадто багато часу.
Технічний борг має цей термін, тому що він відповідає тій же поведінці боргу. Ви отримуєте борг, і поки ви продовжуєте витрачати гроші (створюючи функції) і не сплачуючи цей борг, він лише зростатиме. Так само, як заборгованість, коли вона стає занадто великою, ви потрапляєте в пункти, де, можливо, хочете повністю її пролити за допомогою таких небезпечних завдань, як перезаписи. Також як реальна заборгованість, оскільки вона накопичується до певного моменту, вона взагалі перешкоджає вашій здатності витрачати (створюючи функції).
Просто, щоб кинути ще один термін у суміш, згуртованість означає те, наскільки добре поєднується система, мікро на рівні лінії чи макро на рівні системи. Високо згуртована система дозволить всім її частинам добре поєднуватися між собою і виглядати так, як один інженер це написав. Ваша посилання вище на те, що хтось просто приклеює свій код до кінця, порушує згуртованість цієї системи.
Управління технічним боргом
Існує маса способів управління технічною заборгованістю, хоча, як і реальна заборгованість, найкращим підходом є її погашення часто. На жаль, як реальна заборгованість, іноді краща ідея накопичити більше за короткий період, коли, наприклад, час на ринок тієї чи іншої функції може удвічі або втричі перевищити ваш дохід. Складна частина зважує ці конкуруючі пріоритети, а також визначає, коли рентабельність боргів не стоїть за цю особливість порівняно, коли вона є.
Тому іноді варто нараховувати борг за короткий період, але так рідко буває, і як з усіма боргами, чим коротший період, тим краще. Тому в кінцевому підсумку (бажано швидко ) після накопичення технічної заборгованості вам доведеться сплатити її, це загальні підходи:
- Рефакторинг
- Це дозволяє взяти біти коду, які були лише зрозуміли, що вони були заміщені частково через або після завершення реалізації, і помістити їх у правильне місце (або більш правильне все одно).
- Перепишіть
- Це як банкрутство. Це витирає шифер чистим, але ви починаєте з нічого і маєте всі можливості зробити ті самі помилки, а то й більші. Підхід із високим ризиком із високою винагородою до технічної заборгованості, але іноді це ваш єдиний варіант. Хоча це так рідше, ніж багато хто скаже вам.
- Огляд архітектури
- Це скоріше активний підхід до погашення технічної заборгованості. Це робиться, якщо хтось має повноваження щодо технічних деталей, щоб зупинити реалізацію, незалежно від планів та графіків проекту, щоб забезпечити накопичення менше технічного боргу.
- Код заморозки
- Замороження коду змін може дозволити дихати кімнатою, де ваш борг не збільшується чи зменшується. Це дає вам час спланувати свій підхід до зменшення технічної заборгованості, сподіваючись на найвищу рентабельність інвестицій на ваш підхід.
- Модуляризація
- Це як підхід рівня 2, який доступний лише тоді, коли ви використовуєте або «Огляд архітектури», щоб вже була модульна система, або «Рефакторинг» для переходу до неї. Якщо у вас є модульна система, ви можете виплачувати борг цілими шматками системи ізольовано. Це дозволяє робити часткові перезаписи, часткове рефакторинг, а також мінімізувати нарахування технічної заборгованості, оскільки ізоляція зберігає заборгованість лише в тих областях, де функції ввійшли, на відміну від поширення по всій системі.
- Автоматизовані тести
- Автоматизоване тестування може допомогти в управлінні вашою технічною заборгованістю, оскільки вони можуть допомогти вам визначити проблеми в системі, сподіваємось, до того, як борг у цих областях набув великого зросту, але навіть після того, як вони все-таки можуть інформувати інженерів про ті небезпечні області, які вони можливо, ще не зрозумів. Крім того, щойно ви отримаєте автоматизовані тести, ви можете вільніше відновлювати речі, не піклуючись про те, щоб занадто сильно зламати. Не тому, що розробники не розбиватимуть справи, а тому, що вони дізнаються, коли вони порушують речі , покладаючись на ручні тестери в сильно заборгованих системах, як правило, мають поганий досвід пошуку проблем.