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


71

Один з моїх товаришів по команді є прихильником усіх торгів у нашому ІТ-магазині, і я поважаю його розуміння.

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

В інший час він вніс непотрібні вдосконалення в частині мого коду, якому вже 3 місяці.

Це мене дратує з кількох причин:

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

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

Я боюся, що я можу зійти як агресивний, коли попрошу його пояснити мені свої зміни.

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

Додано уточнення:

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

20
Чи використовуєте ви git, CVS або TFS для repo коду? Просто відкатуйте його. Він отримає це зрештою :)

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

13
Чому у спільній гілці у вас є незакінчені зміни? Це погана ідея, і не лише з тієї причини, з якою ви стикалися.
hyde

15
Звичайно, це залежить від того, який VCS ви використовуєте, але це може бути щось, що слід вивчити, починаючи більше використовувати гілки. З особистим відділенням, це IMO чудово, коли ви можете виконувати (і натискати за допомогою DVCS), коли вам здається, що це не турбується, і зливатися лише тоді, коли це зроблено з частиною, або зливатися лише частково при необхідності (хороший DVCS робить це досить просто). Також чудово працює з переглядом коду, вміючи це природно робити і виправляти проблеми перед об'єднанням.
Гайд

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

Відповіді:


81

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

Для мене уникнення конфлікту в цій ситуації зводиться до двох речей:

  1. Люб'язно . Розмова з ким-небудь про його / її код дозволяє розробнику знати, що ти зацікавлений, і ти можеш обговорити це як дорослі професіонали.

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

Пам'ятайте, що команда володіє кодом велика, і вона скорочує обидва способи. Якщо ви побачите щось, що не має сенсу в чужому коді, тоді виправте це. Бути надмірно настійливим і недостатньо комунікативним - надійний спосіб створити отруйне середовище розвитку.


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

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

7
@ Джеслін, Якщо він це робить тобі, швидше за все, він робить це для всіх. Я сумніваюся, що хтось порахує це проти вас. (Якщо він робить це не всім, у вас може виникнути інша проблема)
user606723

3
@tgkprog: (1) Звичайно, отримання зворотного зв’язку від інших дуже важливо, і я дізнався кілька речей з перегляду коду інших, але (2) якщо ви хочете дізнатися один у одного, вам слід запропонувати зміни та обговорити їх разом . Просто змінюйте випадкові речі, оскільки ви вважаєте, що код краще після зміни - це не правильний підхід. Існують кращі підходи, такі як огляд коду з використанням інструментів огляду.
Джорджіо

2
так, я думав про часи, коли я виправляв інший код перед мертвою лінією об 11 годині вечора, але вже тоді надсилав би лист команді, щоб вони також могли перевірити його, включаючи наш QA ....
tgkprog

86

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

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

Крім того, ви згадуєте, що ваш колега вносить зміни відразу. Це теж неправильно, але ви, звичайно, це вже знаєте; Ви б не ставили цього питання, якби його підхід до гун-хо не був проблемою. Однак я думаю, що ви шукаєте рішення в неправильному місці. Якщо чесно сказати, ваш колега трохи нагадує мені ... мене, і те, що працювало для мене в подібних ситуаціях, було чітко визначеним і ґрунтовним процесом огляду та набором дивовижних інструментів. Ви насправді не хочете зупиняти колегу від перегляду вашого коду, і просите його зупинитися і поговорити з вами до того, як кожна маленька зміна насправді не спрацює. Можливо, на деякий час, але незабаром він досягне того моменту, коли це стане занадто дратує, і ви повернетесь туди, де ви почали, або ще гірше: він просто перестане переглядати ваш код.

Ключовим рішенням тут може бути інструмент перевірки коду експертного коду. Зазвичай я уникаю рекомендацій щодо продуктів, але для кодових оглядів Atlassian's Crucibleнасправді рятувальник життя. Те, що це робиться, може здатися дуже простим, і воно є, але це не означає, що це не надзвичайно дивовижно. Він підключається до вашого сховища і надає вам можливість переглянути окремі набори змін, файли або групи файлів. Ви не можете змінити жодний код, натомість коментуєте все, що не дуже добре. І якщо ви абсолютно повинні змінити чужий код, ви можете просто залишити коментар із набором змін, що пояснює ваші зміни. Вступне відео на сторінці продукту Crucible варто переглянути, якщо ви хочете отримати більше деталей. Ціни на тиглі не для всіх, але є численні вільно доступні інструменти експертної оцінки. Один, з яким я працював і мені подобається, - це Board Board, і я впевнений, що ви знайдете багато інших за допомогою простого пошуку в Google.

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

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

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

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

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


7
+1 і більше, якщо я міг. Прекрасна відповідь, що стосується кращих способів поліпшити такий процес.
Уолдфі

2
Так, ОП потребує інструменту перегляду коду, таким чином ви можете переглянути код разом, це не просто хтось міняє код, тому що їм це подобається. Ми щойно почали використовувати smartbear.com/products/software-development/code-review на роботі
Хуан Мендес

19

Що це стосується процесу, який змушує вас взяти на себе відповідальність за "свій код"? Ви несете єдину відповідальність за підтримку роботи певних функцій? Чи сказав ведучий "Майкл, я хочу, щоб ти взяв на себе відповідальність за ..."? Або ваша відповідальність неявна, якщо керівництво та решта команди дивляться на вас щоразу, коли певні функції порушуються?

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


5
+1 Для зазначення важливого факту: або є власність команди, і (1) всі несуть відповідальність (2) кожен може змінити код, або є індивідуальне право власності, і (1) власник модуля відповідає (2) за кожну зміну необхідно має бути схвалено власником модуля. Часто плутанина виникає, коли очікується, що член команди відповідає за модуль, але старший член відчуває право вносити випадкові зміни в код. Іншими словами, треба уникати ситуації "відповідальності без повноважень".
Джорджіо

4

Не те, що це вирішить всю ситуацію, але ви можете спробувати додати більше коментарів до вихідного коду.

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

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

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


3
Хлопчик, який міг заплутатися. Уявіть собі - додайте коментар із зазначенням "Цей код не повний", а потім забувши його видалити, як тільки ви заповнили код.
riwalk

1
@ Stargazer712, Більш заплутаний, ніж неповний код у філії?
user606723

Саме для цього призначені набори полиць. Не перевіряйте неповний код.
riwalk

2
Ні. Якщо ви зареєструєте неповний код, який потребує коментаря, щоб позначити його як такий, то ви вже в пеклі. Коментарі просто переносять вас в інший кут пекла.
riwalk

1
Їх називають TODO, вони постійно залишаються в робочому коді
Хуан Мендес

4

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

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

Хороший співробітник буде підтримувати зв'язок з вами і вказати на проблеми з вашим кодом для вас - і нехай вам виправити / змінити його, або реагувати відповідним чином . Я дуже вдячний, що навіть коли я був новонародженим, мої наставники завжди вказували мені, що я роблю не так, пояснювали, чому і дозволили (або зробили ) мені це виправити. Це зробило мене кращим програмістом, і всі отримали користь. І це я завжди робив, переглядаючи роботу інших. Тоді ви (або хто хтось) насправді дізнається щось із вашого «джека всіх торгів», і код і команда все покращуються, включаючи вашого вчителя: Навчання допомагає зрозуміти.

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


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

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

1
@ Джеслін - Я вважаю, що мене зняли з посади через мою заяву "Кожен неявно" має власний код "". Це філософське питання, а не політичне питання. :-)
Вектор

1
@Mikey: "Кожен неявно" має власний код "" Звичайно, це може бути предметом дискусій. Програмісти, які не є самозайнятими, зазвичай підписують договір, який говорить, що вони не володіють вихідним кодом. Крім цього, я думаю, що автор коду - це той, хто найкраще розуміє код, і якщо хтось інший змінить код, то ні автор, ні другий розробник насправді не розуміють код на 100%.
Джорджіо

1
@Mikey: Спільне володіння кодом намагається забезпечити достатню кількість членів команди, які розуміють код досить добре (в той час як ніхто насправді не розуміє його дуже добре). Це краще для індивідуального володіння кодом, де кожен модуль (принаймні в принципі) повністю розуміється одним програмістом, але існує ризик втрати цих знань, якщо той програміст припинить.
Джорджіо

1

Якщо ви пишете код, то я повинен його переглянути.

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

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


0

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

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

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

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