Що затримує розробку та як?
Куди йде час, який можна було б витратити на нові фічі?
🐢 довге узгодження - питання або завдання сформульовані так, що люди підсвідомо їх ігнорують, уникають прямої відповіді, або не відповідають на повідомлення, не приходять на дзвінки; процес ухвалення рішень затягується.
🔗 високе зачеплення — частини програми дуже тісно пов'язані: багато звернень до чужих пропертів та методів, через що зміни в одному місці ламають інше, і модулі неможливо виправляти незалежно.
🤯 недооцінка складності - завдання здається простим, але в процесі реалізації з'ясовується, що є приховані залежності, те саме зачеплення, оновлення залежностей, винятки та додаткові умови.
🔥 гасіння пожежі - замість планомірної роботи, нової функціональності, доводиться терміново лагодити критичні баги або вирішувати кризові ситуації, у користувачів робота встала, втрачаємо клієнтів, руйнуються дані.
🧩 немає типових рішень - схожі завдання є завжди, але для них не завжди підготовлені типові рішення, щоразу розробник виділяє рішення зі старого коду, немає єдиного підходу, що перевикористовується.
📦 погана декомпозиція - код розділений на модулі не за змістом і не за зачепленням, а за незрозумілою ознакою, занадто крупно чи нелогічно; "вісь змін" проходить через декілька класів або модулів.
🙈 незрозумілий код - складно читається, не підходяща гранулярність (занадто дрібні або великі частини); найменування навіть не натякає на щось відоме; Оверінжиніринг: використані зайві абстракції, патерни, шари (layers).
⚖️ суперечливі вимоги — різні керівники та представники замовника надсилають різні суперечливі вимоги чи команди хочуть різного, вимоги конфліктують між собою чи навіть суперечливі всередині.
🛑 ручні процеси - відсутність автоматизації: нема або замало тестів, ручний деплой, відтворення багів робиться вручну, не дотримується semver і не відстежуються версії залежностей, що викликають проблеми.
🌀 зміна пріоритетів – завдання та цілі постійно «стрибають», фокус команди розсіюється, людей смикають на дзвони, на яких політика знову змінюється і нічого не доводиться до кінця, відповідальних не знайти.
Технічний обов'язок — старі та успішно замасковані проблеми нікуди не зникли, милиці та тимчасові рішення, колись введені для прискорення результату, уповільнюють розвиток нових можливостей.
🔒 блокери від зовнішніх команд - виконання завдання впирається у зовнішню залежність і всіх чекають (наприклад, API іншої команди, рішення суміжного відділу, партнерів, безпеки), і прогрес стоїть на місці.
Увечері спробуємо проголосувати, щоб зібрати статистику, як у вас на проєктах. Накидайте, що вас затримує.
1.8K ·