Що робити, як нова команда веде проект над проблемами ремонту?


19

Мені щойно відповідали за проект коду з проблемами ремонту. Що я можу зробити, щоб проект стабільно працював?

Я опиняюся в місці, де ми працюємо з дуже великою багаторівневою системою .NET, в якій не вистачає багатьох важливих речей, таких як тести одиниць, IOC, MEF, занадто багато статичних класів, чисті набори даних тощо. лише 24, але я тут майже три роки (ця програма розробляється вже 5), і в основному через часові обмеження ми лише додавали ще більше лайна, щоб підходити до іншого лайна. Зробивши ряд проектів у вільний час, я почав розуміти, наскільки важливі всі ці концепції. Крім того, через зміну співробітників я вважаю, що зараз я буду керівником команди в цьому проекті, і мені дуже хочеться придумати кілька розумних способів покращити цю програму. Шляхи, коли цінність можна пояснити керівництву. У мене є ідеї, що я хотів би зробити, але всі вони здаються такими непосидючими без особливих переваг. Будь-які історії про те, як люди чи мали справу з цим, були б дуже цікавими для читання. Спасибі.


Я б запропонував інвестувати значні кошти в такі засоби покриття коду, як Re # і StyleCop (безкоштовно) і т. Д. Набагато дешевше мати проблеми з програмним забезпеченням для виявлення проблем у вихідному коді, принаймні для першого проходу.
Робота

Відповіді:


14

Бюджетний час для нападу на технічну заборгованість. Ви просто повинні це зробити. З яких частин ви нападаєте спочатку, залежить від того, де ваші розробники витрачають найбільше часу, але важливіше, щоб ви почали потім починати з ідеальних речей. Якщо ви використовуєте Scrum, покладіть конкретні фрагменти технічної заборгованості на ваш відсталий та поводьтеся з ними, як з функціями, поки не отримаєте рішення.

Ефективна робота зі застарілим кодексом настійно рекомендується, і, ймовірно, буде корисною. Я не читав його, але, схоже, є багато інформації про те, як отримати тести одиниць у застарілий код, щоб ви могли їх змінити та безпечно оновити.

Використовуйте аналогію кредитної картки з управлінням - ви "сплачуєте відсотки" за все, що ви робите, тому що так важко здійснити що-небудь. Якщо ви погасите свій технічний борг, ви звільнить ці ресурси та зможете швидше розвивати нові функції. Якщо цього не зробити, ваші "виплати відсотків" (сплачені за час розробки) продовжуватимуть накопичуватися, і ваша команда буде виробляти нові функціональні можливості повільніше.

Можливо, почніть оцінювати кількість часу, який ви витрачаєте кожен цикл, бореться проти технічної заборгованості, щоб дати їм уявлення про те, скільки вже накопичилося. Опишіть, як виглядатиме виправлення чи зміна функції у ремонтопридатній системі, як вона виглядає у фактичній системі та які зміни потребуватимуть або можуть бути хорошими першими кроками, щоб дійти до неї.


1
Я прочитав WEWLC, і це дійсно добре. Напевно, найцінніше, що надає книга, - це знання про те, що існують способи поводження з дурними речами, які ви зустрічаєте у застарілих проектах, і ви МОЖЕТЕ змінити процес гниття програмного забезпечення.
Джейсон Світт

4

Складіть технічну заборгованість у виправлення помилок та додаткову функцію.

Я знайшов ітеративний підхід до вдосконалення і дає найкращі результати. Мантра в моїй роботі полягає в поліпшенні якості коду кожного разу, коли ви торкаєтесь його. Кожен твір, будь то виправлення помилок чи функція, починається з аналізу того, що можна виправити / відремонтувати / очистити. Ми намагаємось зробити рефактор нарівні (за масштабом) до тієї роботи, яку нам доведеться виконати.

Створіть упорядкований список проблем у кодовій базі. Переконайтесь, що всі знають про перелік та порядок пріоритетності. Щоразу, коли вони отримують роботу, вони повинні шукати проблему зі списку, який прив’язаний до коду, над яким ви будете працювати.

Це не все виправить. Є деякі рефактори або виправлення, для яких потрібен великий час і ресурси. Я, як правило, намагаюся прив’язати їх до інших великих робіт, які принесуть користь.


1

Я можу просто констатувати очевидне, але ей.

Напишіть невеликий одиничний тест, який здійснює фрагмент коду, який має проблеми, а потім рефактор сказав фрагмент, переконуючись, що тест все-таки проходить. Перейдіть до іншого фрагмента коду, того, до якого ви найлегше дістатися із тієї крихітної частини твердої землі, яку ви тільки що побудували. Натріть, промийте, повторіть.

Це також допоможе вам трохи ознайомитись із базою даних коду.

Після того, як ви це зробите деякий час, ви зрозумієте, що настав час зробити ще кілька розширених рефакторингу. З'ясування дублюваного коду, порушення принципу DRY ... ви знаєте, звичайні речі. До цього часу у вас буде напевно пристойне покриття коду, що дозволить вам переміщувати методи навколо, витягувати інтерфейси та всі ці зручності.

Завжди залишайте кодову базу трохи краще, ніж це було до того, як ви почали зламати свій шлях до неї. Я впевнений, що це невелика інвестиція, яка окупиться навіть у не надто довгому періоді.


1

Ви можете спробувати пояснити технічну заборгованість цього проекту для однієї ідеї, з чого почати. Ви також можете спробувати переконатися, що через зміну співробітників потрібно витратити деякий час на швидкість роботи коду, а це означає введення деяких тестів, щоб забезпечити кращу подальшу розробку, оскільки тести можуть запобігти помилкам і полегшити роботу можливі нові люди для роботи над проектом.


1

У таких випадках мені подобається максимально впорядкувати проект. Дізнайтеся, які функції абсолютно необхідні для того, щоб рухатись вперед. Будь-яка система, яка існує довгий час, напевно, має дуже тривалий відставання. Дуже багато цих предметів будуть критичними, а багато - просто "дзвіночками".

Що стосується тестування, то одиничні тести, безумовно, будуть корисні, але ви можете попросити когось із нетехнологічного персоналу взяти участь у тестуванні та подати помилки членам вашої команди.

Удачі.


1

Один із варіантів - зняти пил з резюме і почати полювання на роботу.

Хороше запитання, щоб задати собі питання, чи є цей погано запущений проект свідченням того, як працює вся компанія. Якщо відповідь "так", то запитайте, чи отримуєте ви плату, щоб залишитися в погано керованій компанії.


Так, кілька запитань: Чи вручило вам керівництво покинутим судном? Що сталося з тими іншими людьми, які працювали над базою коду? Чи рухалися вони далі, кинувши рушник у кільце? Можливо, проект вже буде поетапно припинений, не повідомляючи вас про нього? Чи є щось виправити, то є врятувати?
Джоппе

0

Багато разів ви можете натиснути рефакторинг вищим керівництвом, якщо ви зможете сказати їм, що це буде підвищення продуктивності або виправлення якоїсь існуючої помилки. Не переосмислюйте лише те, щоб щось змінити на те, що ви робили, особливо якщо це працює. Час виправлення помилок також може бути хорошим способом вписатись у деякий рефакторинг, оскільки ви вже там є. Будьте напористими і не дивіться на це як на те, що ви молодші за своїх колег-кодерів. Почніть з чогось невеликого, як, наприклад, потрапляння на тестування блоку та роботу звідти, ви можете виявити деякі помилки, які можуть отримати управління, щоб дати вам цикли для інших речей.


0

Зараз я читаю розробку додатків Brownfield в .NET, яка, в основному, стосується того, як вирішити проблеми, які у вас є. Поки мені найбільше подобається те, що написано (не зовсім все - але це така книга, яка допоможе вам подумати над своїми проблемами, а не та, яка має бути повністю наказовою). Це може допомогти двома способами - це показує, що ви не самотні; сподіваємось, вам дадуть підказки щодо вирішення деяких питань.

Я принципово погоджуюся з більшістю підходів - ви не можете виправити всю річ протягом ночі, але ви можете покращити її поступово дуже маленькими кроками. І так - технічний борг - метафора, яку потрібно використовувати.


0

Це в кінцевому підсумку залежить від того, наскільки хороші ваші люди в проекті. Якщо той самий екіпаж створив безлад, то у вас мало шансів зробити це краще з тією ж групою. Проаналізуйте свій персонал, з’ясуйте своїх найслабших членів та замініть їх (якщо у вас є можливість це зробити).

"Ви не можете зробити шовковий гаманець із вуха свиноматки".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.