Як змусити розробників своєчасно робити огляди коду


12

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

(Ми використовуємо git-svn, щоб ми могли продовжувати кодування, очікуючи на огляд. Однак, мені все ще стає неприємно, коли мені доведеться довго чекати, перш ніж я можу зробити свій код.)

Відповіді:


12

Подивіться, як це робить Facebook зі своїм додатком, який називається phabricator: http://phabricator.org/

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

Я думаю, це робить це веселіше.

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

Хоча, можливо, ваші товариші по команді не вірять у цю рецензію.

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

Зазвичай я видаляв деякі незначні частини, як, наприклад, блоки / функції області дужок, позначення видимості, іноді навіть типи, і показував це менеджерам, експертам домену, товаришам, хто б не запитував код: "це те, що ти хочеш?"

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

Або, якщо вам недобре з командою, або вони з вами не добре, знаєте, "якщо ви можете" змінити компанію, змінити компанію "...


9

Я буду базувати це на кількох припущеннях:

  1. Здається, всі хочуть написати код (якщо ні, у вас є люди, яким потрібно їхати.).
  2. Кожен хоче, щоб власний код був зареєстрований.

Дозволити лише тим, хто заповнив свої відгуки, перевірити свій код.

Можливо, певний проміжок часу може бути присвячений оглядам коду з надією уникнути проблеми з переплутуванням.

Метою має бути перевірка коду якості. Ви не хочете карати / примушувати відгуки до того моменту, коли всі просто надають йому «штамп».

Якщо у вас різні рівні (молодші, сер. Тощо), просування та збереження титулу повинно залежати від виконання вашої роботи.


1

У пари попередніх роботодавців ми обмінялися тим, хто щодня відвідував Code Review. Зазвичай 3 люди поділяли день СР, і кожен КР повинен був підписатись двома рецензентами. Це гарантувало, що коли настав ваш день, ви знали, що від вас очікують CR, незалежно від інших ваших проектів. Отже, кожні п’ять днів або так, настала ваша черга, і ви могли відповідно скоригувати свої завдання з розвитку.

Наразі у нас командний керівник робить короткий КР за кодом своєї команди. Залежно від того, яка область додатку була оновлена, після завершення роботи з програмою CR вона може стикатися з командою глобального огляду, де ми перевіряємо наявність речей, що мають глобальний вплив на додатки, замість речей, які є пов'язані з однією особливістю. Коли потрібно зробити великий огляд, ми зазвичай розбиваємо його між кількома людьми, тому жодна людина не має справу з змінами через смішну кількість файлів.

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

Нарешті, ми погоджуємось угод про домовленості про те, як швидко розгортаються відгуки. Навряд чи щось у черзі більше 48 годин, а більшість оглядів робляться менше ніж за 24 години.


1

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

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

  • Ідея, що стоїть перед вашою вимогою компанії, звучить розумно на поверхні (100% переглянутого коду), але засоби, які вони вирішили використати, є контрпродуктивними - адже, як ви зазначаєте, це призводить до того, що розробники зриваються.

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

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


1
"Якщо компанія знає краще, ніж програмісти, чому вони самі не пишуть код?": Дуже хороший коментар! Але я би сподівався, що менеджери з розвитку - самі колишні розробники.
Джорджіо

3
На моєму досвіді страшенно шкодить якості вашого коду. Програмісти лінуються, і вони відчують, що вони готові, якщо це можна зробити: "Так, ну, це не ідеально, але кого дбає ф.к., що ідеально в житті? Це робить робота, чи не так?" " Єдина хороша відповідь "НІ", і, можливо, менеджери мають більш реалістичний образ програмістів, ніж вони про себе, тому вони вимагають попереднього (або принаймні попереднього об'єднання) огляду коду.
Aadaam

@Aadaam ваш досвід, безумовно, відрізняється від мого - не тільки щодо пост-комітетів, але також (і особливо) wrt частини "Програмісти ліниві ..." Що стосується менеджерів, які мають більш реалістичний імідж, я погоджуюся, що, як правило, це було у мої команди; це лише не привело менеджерів, з якими я працював, до безглуздих уявлень про те, який вид перегляду змусити
gnat

Ну, я працював в аутсорсингу. В аутсорсингу більшість програмістів не в тому, що програмування - це весело, вони в тому, що програмування має найкраще співвідношення "робота / оплата" зі ставками, набагато вищими за будь-яке інше ... вони ненавидять це як будь-яку іншу роботу .. і вони спробуйте зробити все, щоб далі "оптимізувати" це співвідношення, якщо ви знаєте, що я маю на увазі ...
Aadaam

1

У вас є ряд питань, з якими потрібно вирішити - ви повинні завоювати серця і розум, і вам потрібно забезпечити час для перегляду коду.

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

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

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

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


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

І рішення складне, але IME вам потрібно знайти достатньо «місця», щоб запровадити нову робочу практику, яка забирає багато часу, але варта. Для цього потрібне передбачення, щоб визначити нестабільний час, готовність дозволити простроченню строків, як ціна внесення вартісних змін, або обох. TANSTAAFL. Як ви говорите, після того, як всі вирішаться у шаблоні, вони можуть робити винятки. Сподіваємось, вони роблять це на основі належної оцінки цінності загальної структури.
Стів Джессоп

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

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

1

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


0

Подумайте про використання такого інструменту, як Board Board . Це дуже корисно, особливо для тривалих оглядів.

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


0

Ще кілька моментів, які слід додати, яких немає в інших відповідях.

Код, який потрібно переглянути, має бути зареєстрований

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

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

Складніші питання - коли і як добре робити огляди коду.

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

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