Должен ли программист исправить чью-то неудачную сборку? [закрыто]

45

Один программист посвятил некоторую работу хранилищу SVN, а затем пошел домой. После того, как он ушел, автоматическая сборка Hudson не удалась. Другой программист увидел это и, просмотрев изменения кода, обнаружил, что проблема заключается в отсутствии одной библиотеки. Он добавил эту библиотеку в SVN, и следующая сборка была успешно завершена.

Второй программист поступил правильно, или он должен был просто подождать, пока первый программист не исправит проблему?

нахаб
источник
31
Вопрос: Один из программистов задал вопрос. Другой участник прочитал вопрос и увидел некоторые синтаксические и грамматические ошибки, поэтому он решил отредактировать вопрос и исправить его, чтобы немного облегчить чтение вопроса. Правильно ли поступил редактор или он просто дождался, пока постер исправит ошибки?
Яннис
2
Каковы правила вашей команды в этой ситуации?
4
@nahab О, не волнуйся, я не говорю, что это проблема :). Просто в сообществе, как и в команде, следует поощрять членов, помогающих друг другу. Также я не думаю, что разработчик, ломающий сборку, непрофессиональн, даже если из-за незначительной ошибки такие вещи случаются с лучшими из нас.
Яннис
11
Вся идея иметь Хадсона в первую очередь в том, что люди - это люди, и время от времени они ломают сборку. Вы просто хотите поймать это рано. Можно утверждать, что рассматриваемый программист должен был проверить, что сборка собрана, прежде чем идти домой.
14
Это гораздо легче понять, если учесть обратное: если сборка не работает, это замедляет работу всей команды (даже дома, в нерабочее время), и вы можете это исправить, но сделать осознанный выбор не из-за какой-то процедуры Вам следует оставить работу?
Билл К

Ответы:

87

В какой-то степени это зависит от того, как обычно работает ваша команда, но я бы сказал, что это нормально. Сохранение сборки экономит время всех остальных.

Второй программист вежливо отправляет первому электронному письму, чтобы объяснить, что он сделал, на тот случай, если нужна конкретная версия библиотеки или возникли другие сложности. Это также немного более тонкий способ указать, что они сломали сборку.

Люк Грэм
источник
101
Это также вежливо для первого разработчика, который купил пончики, чтобы наверстать упущенное при сборке
jk.
17
Я бы хотел пиво, а не пончики.
Мартин Йорк,
2
Пончики могут быть оскорбительными для непереносимости глютена. Подарочные карты на $ 5 для Best Buy, с другой стороны ...
Кристофер Махан
1
@ChristopherMahan может привести к драке между всеми членами команды за то, кто ее получил; или если данный член команды, такой как неявное распространение из ящика для пончиков в комнате отдыха, является гораздо более дорогим предложением. В любом случае, подарочная карта Best Buy может быть оскорбительной для всех, кто работал в Circuit City или CompUSA. :)
Дэн Нили
1
Что вы можете получить в Best Buy менее чем за 5 долларов?
Кевин Клайн
12

По-разному.

  • Является ли ошибка настолько очевидной, что добавление библиотеки - это способ ее исправить? Иногда необходимо найти обходной путь, чтобы не нуждаться в этой библиотеке.

  • Находится ли проект на этапе, когда все изменения должны быть связаны с существующим тикетом? Если так, вы подали билет? Этот билет был назначен вам?

Во всяком случае, сосредоточиться на исправлении ошибки, а не обвинять ответственных.

mouviciel
источник
9
«... не обвинять виновных». Если это не обычное явление.
Шон Д.
11

Да, все в порядке. Тем не менее, оригинальный программист непрофессионален, прежде чем тестировать, будет ли компилироваться сборка.

Ваша репутация на 100% под вашим контролем. Подобные вещи бросают тень на вашу репутацию, и попытка отравить запятнанную репутацию очень сложно.

Майкл Райли - AKA Gunny
источник
2
+1 за возложение ответственности на первого разработчика, который протестировал сборку. Второй абзац действительно не соответствует действительности. Другие люди могут нанести вред вашей репутации, преднамеренно или нет, даже если ваше поведение полностью за борт.
Калеб
6
Вполне возможно, что у исходного программиста была библиотека на его компьютере, но машина, выполняющая автоматическую сборку, этого не сделала. Да, библиотека должна быть в SVN, но это может быть очень тонкой проблемой, которую даже не заметить.
mpdonadio
7

сообщаться

Для этого сценария нет строгих правил (помимо правил вашей команды).

Dev2 должен быть в состоянии сказать dev1, что он может исправить свою ошибку, ни один из них не должен бояться чего-то в результате этого обмена, они являются частью команды.

xsace
источник
5

Почему нет? Если ваш продукт важнее, чем исправление вины, то все в порядке. Несмотря на то, что сборка не удалась из-за изменения библиотеки, она довольно слабая, и вам нужно сделать выговор разработчику, чтобы он не тестировался.

DPD
источник
3

Сбои сборки случаются. Если важно, чтобы происходила ежедневная сборка, я бы исправил ее и затем попросил разработчика, который проверил исправленный код, проверить исправление на следующий день и убедиться, что код сейчас такой, каким должен быть.

Как уже было сказано, парень, который это исправил, должен, вероятно, отправить электронное письмо парню, который его сломал, и подробно описать, что это было за исправление.

оборота AndyC
источник
2

Мой девиз: не связывайтесь с SVN после 3 часов дня, чтобы вы всегда могли исправить свои ошибки сборки.

Если вы не исправите ошибку его / ее сборки, то сборка всех остальных также будет неудачной. Я бы исправил это, чтобы сэкономить время в долгосрочной перспективе, но убедитесь, что они знают, что вы должны были это исправить.

Наличие какого-либо сценария «укажи пальцем на вину» - это хороший способ сделать это, или заставить человека, который сломал сборку, купить пончики !!

luketorjussen
источник
2
Наш инструмент CI на самом деле имеет возможность отправлять электронную почту разработчику, который сломал сборку (в дополнение к остальной части команды).
TMN
2

Кто-то должен это исправить, и первый программист не должен был идти домой, не убедившись, что он не сломал сборку. Однако, для такой легко решаемой проблемы, перезвонить ему, чтобы исправить это самому, было бы чрезвычайным.

Я согласен с предложением Люка Грэма об отправке пояснительного электронного письма, хотя я бы сказал, что это более чем вежливо - это основное общение.

Алекс Далзил
источник
Поскольку сборка интеграции иногда занимает час или более, в зависимости от сложности вашей системы, вам придется ежедневно выполнять «отсечение коммитов», чтобы гарантировать, что последняя сборка дня будет происходить, пока все еще рядом. Даже тогда люди посещают приемы у врача, занимаются детским футболом и т. Д. И должны немедленно уйти, независимо от статуса телосложения. Agile говорит, что работа должна быть устойчивой и не должна приводить к потере трудоспособности. Хранение их там до 8:00, чтобы наблюдать успешную сборку, противоречит этому.
KeithS
@KeithS: правда. Но я обнаружил, что, вне зависимости от того, когда я ухожу, наиболее вероятное время, чтобы сломать здание, - это когда я спешу: прямо перед обедом, прямо перед встречей, прямо до конца дня. Поэтому я считаю, что это «личная лучшая практика» - ничего не совершать, когда не хватает времени посмотреть и исправить сборку после этого.
Даниэль Приден
2

Да да да! Это способствует коллективному владению кодом и создает своего рода здоровое давление со стороны коллег, чтобы поддерживать высокий стандарт и не допустить развития сценария «разбитого окна». Немного общения, чтобы сообщить другому разработчику хорошая идея.

Питер Келли
источник
2

Я думаю, что все в порядке, чтобы исправить очевидные вещи - например, если вы на 100% уверены, что парень, чей код вы исправляете, сделает то же самое - или, по существу, то же самое - исправит. Если исправление является более сложным, обычно вежливо поговорить с человеком, чей код вы исправляете - возможно, вы неправильно поняли намерение, или причина сбоя не в том, о чем вы думали, или, возможно, он намеревался другое исправление но по какой-то причине еще не смог совершить это (жизнь случается, вы знаете :).

Как правило, правило таково: вы нарушаете сборку - вы исправляете сборку, но есть исключения, особенно если исправление очевидно и / или ответственное лицо недоступно.

Конечно, если у вас есть случай прерывателя последовательной сборки - особенно с шаблоном «зарегистрирован, ушел домой, сборка сломалась на несколько дней» - ответственному человеку нужно поговорить о том, почему существуют системы и тесты CI и как следует проверить перед проверкой :)

StasM
источник
1

Всякое случается. Невозможность добавить новый файл кода (исходный или скомпилированный) в Subversion, вероятно, является наиболее распространенной причиной неработающих сборок, если предположить, что это сработало на компьютере разработчика. На моей последней работе в среде КИ даже самые старшие ребята иногда забывали.

Я думаю, если другой человек смог починить сборку и, таким образом, поддерживать напор команды, это нормально. Я думаю, что программисту, пришедшему домой, нужно по крайней мере дружеское электронное письмо с изложением того, что произошло, и чтобы напомнить ему, что необходимо убедиться, что новый код добавлен до фиксации. Если это случается часто, возможно, сделайте это незначительное преступление наказуемым «танцем стыда», чтобы помочь уменьшить количество случаев (и поднять настроение).

Keiths
источник
1

Это зависит от динамики Команды, но в идеальном мире каждый в Команде будет «владеть» всем проектом, всем кодом и, следовательно, всеми ошибками совместно. Поэтому, если вы обнаружите проблему, вы исправите ее и будете общаться с создателем ошибки только в том случае, если в этом есть какая-то дополнительная ценность для кода.

Дейв
источник
0

Это нормально, если это не обычное явление, в этом случае я бы попросил, чтобы босс позвонил ему и заставил его вернуться и исправить это сам.

HLGEM
источник
0

Это зависит, это зависит ...

Как программисты, наша работа состоит в том, чтобы заставить вещи работать, а не судить людей. Поэтому я бы сказал, что лучшее, что вы можете сделать, это исправить это, или, если это не очевидно, просто откатить изменения и сообщить первому программисту, чтобы он мог исправить это позже.

В любом случае, чтобы в следующий раз уделить больше внимания, достаточно иметь последнего парня, который сломал сборку, чтобы носить странную шляпу ^ _ ^

Фортран
источник
0

В некоторых условиях это очень грубо и по уважительным причинам. В других средах это ожидаемо и по уважительным причинам.

В других условиях это очень грубо или ожидаемо по очень плохим причинам.

Это в значительной степени зависит от того, насколько критична сломанная сборка по сравнению с тем, насколько критична проверенная правильная сборка. И в какой-то степени это зависит от того, насколько очевидно, что это было правильное и единственное необходимое.

Дэвид Шварц
источник
0

Во-первых, «пошел домой» - это анахронизм. Программисты больше не идут домой - они просто онлайн или офлайн. Вы могли бы пинговать и ждать.

Более серьезно, на самом деле есть две части вопроса. «просматривать изменения кода» - это нормально; отдых не может быть правильным. Что если его суждение о пропавшей библиотеке было неверным?

Kris
источник