Проблема в том, что пулл-реквесты одобряются без комментариев?

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

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

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

Обратите внимание, что запросы на вытягивание от других команд содержат множество комментариев, хороших комментариев, а не придирок.

Не совсем уверен, что делать здесь.

Вы уверены, что они не проверяют его хотя бы бегло, прежде чем одобрить? Например, вы добавили код, который, очевидно, не должен был входить, и они все равно одобрили?
Вы можете попробовать внести очевидную (но безобидную) ошибку в свой код, чтобы увидеть, действительно ли они просматривают код.
Я уверен, что они не рассматривают его. Однажды я внес изменения в 10 файлов с более чем 509 строками кода, и мне потребовалось 20 секунд, чтобы утвердить их. Я не шучу, 20 секунд.
Я действительно не хочу вводить какие-либо ошибки. Я лучше пойду другим путем.
@mkki Если в коде есть ошибка, и она восходит к этому слиянию, то тот, кто отвечает за систему, может вернуться в этот момент и спросить, действительно ли выполнялся процесс слияния, и получить объяснение.
@Underverse, к сожалению, мы еще не выпустили какие-либо функции для широкой публики. Таким образом, мне придется подождать еще несколько недель, чтобы хотя бы найти ошибку, которая может быть связана с плохим обзором.
@mkki К тому времени возможно, что кто-то еще проверит ваш код, внесет изменения, протестирует и объединит его обратно. Если это так, их тестирование может выявить все, что пропустили ваши модульные / интеграционные тесты. SDLC, Agile или что бы вы ни использовали, это всегда работает одинаково. Прикройте себя, убедитесь, что вы сделали все возможное, сообщите об этом руководству и двигайтесь дальше.
Частая проблема для компаний, занимающихся проверками кода, состоит в том, что они неправильно понимают свою цель и думают, что пожилым людям они не нужны. Я бы обсудил это с вашими товарищами по команде.
Этот вопрос нужно было задать на Software Engineering SE.
@Chris Я думаю, что есть много совпадений. Если бы это было просто задано как «мой коллега должен проверить мою работу, прежде чем подписать ее, но просто подписывает ее, не проверяя» и не упоминая разработку программного обеспечения, это было бы хорошо.
Делаете ли вы ретроспективы, чтобы обсудить, что вы могли бы сделать лучше? Не то чтобы у меня были проблемы с разговором о проверке кода в любое время, но ретроспектива может быть хорошей возможностью поднять такие вещи.
@JollyJoker действительно, это буквально то, для чего они нужны!
@mkki полностью понимает, что вы не хотите намеренно создавать ошибку. Как насчет комментария, в котором говорится: «Если вы заметите этот комментарий во время проверки кода, покажите его mkki, и он даст вам 5 долларов»? Скоро узнаем, внимательно ли они смотрят на это или нет...
@mkki Хотя это абсолютно не извиняет пропуск обзора, 509 LOC в 10 файлах довольно сомнительны.
Мне кажется, проблема в том, что они одобряют так быстро, что явно ничего не проверяли. Отсутствие комментариев на самом деле не проблема. Я предлагаю изменить заголовок, чтобы он лучше отражал суть вопроса. (Это не «движущиеся цели» вопроса, поскольку ваш вопрос тот же, вы просто даете лучшее резюме.)
Каков ваш процесс организации работы? Вы в Agile? У вас есть спринты и ретроспективы в конце спринтов? Есть ли у вас какие-либо другие запланированные церемонии, на которых вы можете поднять/остановить/продолжить что-то, где эта тема была бы весьма актуальной?
Рекомендую добавить к тексту вопроса комментарий «Я также самый старший разработчик в команде».
Вопрос по поводу комментария «Я также самый старший разработчик в команде» — я предполагаю, что вы старший по годам, но вы также являетесь старшим по должности или в какой-то официальной форме? Если хотя бы один из этих ответов «да», это коренным образом меняет то, что вы можете сделать, чтобы изменить культуру компании, помимо принятого в настоящее время ответа «просто попросите комментарии».
Типичный типичный типичный в моей компании. Люди не говорят: «Вы можете проверить мой PR?», они говорят: «Вы можете одобрить мой PR?». Мне повезло, что я работаю в небольшой команде, которая заботится о стандартах качества кода — мы на самом деле делаем обзор, и наши PR обычно нужно обновлять 1-3 раза перед слиянием.
Делают ли они то же самое с чужими PR? Вы сами делаете пиар-комментарии? Если да, то как тогда реагируют авторы?
Какова официальная политика компании? Ожидается ли, что они просмотрят ваш код? Или просто «вы не можете одобрить собственный запрос на включение»?

Ответы (14)

Короткий ответ - нет

Работа человека, выполняющего слияние, заключается в обеспечении соблюдения процесса. Вы сделали свою работу, теперь они должны делать свою.

Вы можете связаться с ними и спросить, почему нет комментариев или отзывов по вашим запросам на вытягивание, если вы считаете, что они должны быть. Это культурный вопрос - как у вас нормально работает офис? Делают ли люди настоящую проверку кода? Как выглядят чужие пиарщики?

У пиарщиков из других команд масса комментариев, хороших комментариев, а не придирок.
Ладно, есть проблема, но это не твоя проблема. У вас нет контроля над тем, что делают другие, и каждый человек должен выполнять свою работу. Я предлагаю добавить эту информацию к исходному вопросу - что ваши запросы отличаются от других.
@mkki Под «другими командами» вы подразумеваете людей, не входящих в вашу команду, которые делают PR? Если это так, имеет смысл, что члены вне вашего ядра находятся под более пристальным вниманием.
Это также может быть не проблема лица, делающего утверждение. Когда вы ограничены в ресурсах, иногда вам приходится выбирать передовые практики по их рискам, чтобы убедиться, что команда работает. Точно так же вам может быть отказано в посещении продолжительного соответствующего учебного семинара для улучшения вашего кода незадолго до крайнего срока. Это ничем не отличается на самом деле.
Здесь мы видим стандартную схему вопросов и ответов на рабочем месте: кто-то говорит: «Что-то не так в моей компании, что мне делать?» и появляется ответ: «Просто ничего не делайте, если этого не требуют ваши служебные обязанности». Неужели никого здесь не волнует успех организаций, в которых они работают? Разве здесь никто не делает ничего, что на самом деле повлияло бы на мир, так что что-то, что идет не так, имеет хоть какое-то значение , даже если не в буквальном смысле «люди умрут»? Я никогда не куплюсь на эту идею о том, что нужно игнорировать дисфункцию, потому что это не их работа — исправлять ее.
@MarkAmery хорошо сказано! Не всегда возможно сделать мир лучше, но это то, к чему мы должны стремиться.
@MarkAmery Это благородное отношение, но через несколько десятилетий, увидев результаты десятков благонамеренных людей, которые думают , что знают, как лучше выполнять работу других, это часто бесполезно . Если вы действительно хотите привести компанию в порядок, сначала повысьте себя до уровня, на котором у вас будет право делать то, что вы хотите, и навязывать это другим людям.
@alephzero Конечно, впадать в истерику по поводу каждого решения и процесса, с которыми вы не согласны, и отказываться от них, пока вы не добьетесь своего, еще хуже; некоторый уровень готовности уступать другим необходим для бесперебойной работы любой организации. Но из этого не следует, что правильный ответ заключается в том, за что он выступает: вообще не пытаться влиять на вещи, которые идут не так, как надо, даже если они находятся внутри вашей собственной небольшой команды, прямо в вашей собственной области знаний и влияют на вас. результат собственной работы. Правильный подход лежит где-то между этими двумя крайностями.
@MarkAmery Чего вы не видите, так это того, что если вы так хорошо исправляете дисфункцию в своей организации (вы сказали, что не будете игнорировать дисфункцию, даже если это не входит в ваши должностные обязанности), то почему бы не поделиться своим опытом о том, как вы остановил указанную дисфункцию вместо того, чтобы добавить еще один голос? Будет интересно посмотреть, как коллега, у которого нет никаких полномочий, кроме того, что он является членом команды, нанятой для определенной цели, сможет изменить организацию к лучшему?
@Dan «Будет интересно посмотреть, как коллега, у которого нет полномочий, кроме того, что он является членом команды, нанятой для определенной цели, сможет изменить организацию к лучшему?» - как шаг 1, предлагая людям делать что-то так, как, по вашему мнению, они должны делать, и объясняя им, почему. Это достаточно часто.
@MarkAmery Неясно, говорите ли вы из опыта или пытаетесь изложить благородную мысль о том, как все должно быть. Я не верю, что вы говорите исходя из своего опыта, поскольку вы ничего не сказали. Убеждать людей трудно, а еще труднее, когда у вас нет на это полномочий.
@ Дэн, я говорю из большого опыта. Честно говоря, я нахожу это сбивающим с толку. Должен ли я сделать вывод, что вы никогда не указывали кому-либо на проблему, которую они затем решали, или не вносили предложения, которое они затем реализовывали, не имея предварительно формальной власти над ними? Что каждая идея, которую вы когда-либо выдвигали в своей карьере, была отвергнута, если только человек, которому вы ее высказывали, официально не был вашим подчиненным? Предлагать коллегам и менеджерам способы улучшения работы было чем-то, что люди делали в каждой компании, в которой я работал, и это ничем не примечательно.
@MarkAmery «Предложение способов улучшения работы коллегам и менеджерам было чем-то, что люди делали в каждой компании, в которой я работал, и это ничем не примечательно». - Отлично... так что этот ваш опыт будет очень полезен, чтобы поделиться им в качестве ответа на этот вопрос. Поскольку это кажется тривиальной проблемой (непримечательной, как вы это называете, поскольку это происходит ежедневно), почему бы не создать свой собственный ответ и не поделиться опытом, когда вам удалось убедить многих людей прокомментировать ваш PR? Похоже, вы очень поможете ОП.
Этот ответ является ярким примером того, почему вы должны публиковать вопросы по разработке программного обеспечения на сайте SE по разработке программного обеспечения. Никто из тех, кто разбирается в гибкой разработке программного обеспечения, не скажет вам, что это не ваша работа и не ваша ответственность. Вы и ваша команда несете ответственность за свой процесс и за его улучшение.
Будучи «парнем», который просматривает и утверждает запросы на вытягивание, я в основном говорил своей команде: «Слушайте, я собираюсь убедиться, что нет никаких конфликтов, и что если я перетащу код в целевую ветку, он не не выдавать ошибки компилятора. Я просматриваю код, если он не слишком сложный, и убеждаюсь, что он выглядит так, как будто вы делаете что-то хорошо, но по большей части я не обязательно знаю, что это такое вы пытаетесь достичь. Я здесь только для того, чтобы поддерживать стабильность хозяина». Есть другие рецензенты (но я единственный, кто сливает) и вторичный процесс рецензирования, так что отсутствие комментариев (по PR) - это хорошо.
@Draco18s Draco18s Там, где есть автоматизированный процесс качества кода, модульные и интеграционные тесты, а также четкое отображение изменений с различиями, конечно. Мой ответ здесь исходит из прямого опыта многолетней работы с людьми, у которых есть работа, но они ее не делают. Многое из того, что есть в этих комментариях, правда, и это должно быть на SE.SO по технической части. На рабочем месте знание того, как работать в команде и быть частью этой команды, не менее важно.
@MarkAmery: согласен на 100%, для этой проблемы больше, чем для большинства, нет ничего плохого в том, чтобы спросить или упомянуть об этом остальной части вашей команды. Вы можете поднять это как тему для обсуждения, например: «Эй, ребята, что вы обычно делаете для проверки кода перед слиянием запроса на включение? Мне интересно, смогу ли я получить вторую пару глазных яблок на мой код». В отличие от некоторых вопросов Work.SE, в которых бездействие имеет какое-то оправдание, здесь нет проблемы совать свой нос в дела других людей. Это о том, как они относятся к вам . По крайней мере, этот ответ предлагает поговорить с людьми.
@Underverse И все команды разные. Я знаю, что хотел бы использовать юнит-тесты (но их крайне сложно сделать в Unity 3D: о, он может их сделать, но 80% ваших юнит-тестов будут включать взаимодействие с UnityEngine, что можно сделать только как «модульный тест времени выполнения», с которым не так быстро и ужасно работать) и что-то вроде Jenkins, но я не знаю, как настроить и запустить Jenkins. Помимо меня, есть только один старший разработчик, так что я в основном работаю как Дженкинс. В любом случае, на самом деле я не комментировал комментарии, а скорее высказывал свою точку зрения.
@MarkAmery: Предположим на мгновение, что вы не знаете, правильно ли вы поступаете или нет. Но у вас есть выбор быть активным или нет. Если вы активны и правы, отлично! Но если вы ошибаетесь, проактивность только усугубляет ситуацию. «Фанатик» — слово с негативной коннотацией, хотя оно строго не относится к правильному или неправильному, а скорее к страстному или активному подходу. Короче говоря, отсутствие чрезмерной активности защищает вас от возможности ошибиться и будет считаться чрезмерно усердным и создающим проблемы (даже если с благими намерениями).
@MarkAmery: Я согласен с тем, что проактивность — лучший способ добиться наилучшего результата. Но неактивность защищает вас от худшего исхода. Особенно, когда в ситуации, когда вас могут разжевать на основе ваших результатов (а не ваших намерений), безопаснее ошибиться в сторону неактивности. Мне это не нравится, но есть много рабочих мест, где коллективный дух отсутствует, и люди едва могут прикрыть свои задницы. Ваше намерение благородно, но без групповой поддержки вы просто станете мишенью для любого, кто захочет использовать вашу добрую волю.

В то время как другие ответы хороши, вы упомянули что-то новое и актуальное в комментарии , что может вызывать определенное поведение ваших товарищей по команде в вашем случае. Вы сказали :

Я также самый старший разработчик в команде

Вот это может быть важно. В этом случае я легко могу представить, что к вам относятся с особым почтением/уважением, и может применяться сочетание следующего (я видел это лично):

  • другие члены команды не хотят, чтобы вы видели, что они бросают вызов качеству вашего кода; и/или

  • другие члены команды предполагают, что то, что вы пишете, будет лучше, чем то, что они пишут, и поэтому они (ошибочно) предполагают, что это означает, что вы не будете делать ошибок, которые они могли бы найти, даже если бы они просмотрели ваш код;

    и поэтому:

  • они просто «штампуют» ваши запросы на вытягивание — что вы и видите.

Это особенно верно, поскольку у вас есть:

недавно присоединился к новой компании

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

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

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

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

Возможно, стоит собрать всех вместе и спросить: «Проводим ли мы проверки кода, и если да, то каков процесс» или «Кажется, мы не проводим проверки кода, стоит ли нам начинать?». Но, возможно, они вообще не видят в них необходимости (эй, Agile делает то, что работает для команды!) и имеют другие процессы для качества кода после события (я не делаю суждений о том, хорошо это или плохо, это не задан вопрос).
@gbjbaanb - « Возможно, стоит собрать всех вместе » Лично я намеренно не стал бы начинать со всех вместе. Давление со стороны сверстников может привести к странным результатам, например, люди, которые не согласны с самыми громкими говорящими, могут не говорить в их присутствии. Это также может помешать любому объяснению того, почему проверки кода (по крайней мере, проверки кода ОП) в настоящее время не проводятся в этой команде, особенно если причины смущающие / личные / и т. д. Вот почему я предложил начать с тихого, частные встречи один на один, чтобы избежать давления со стороны сверстников и облегчить им открытость. Как всегда YMMV.
Если OP является признанным «самым старшим разработчиком», часть его полномочий может заключаться в обучении команды и повышении качества работы там. Знание хороших практик проверки кода — это то, чем можно поделиться. Я чувствую, что, возможно, стоит подчеркнуть это как часть вашего ответа, который в противном случае охватывает все, что я мог бы сказать.
Хороший простой способ проверить это — добавить кучу мусора в запрос на включение и посмотреть, какова будет реакция. Если это будет одобрено, у вас есть что-то, что вы можете представить, чего, как вы знаете, не должно быть.
Отводить кого-то в сторону, чтобы поговорить об этом, вероятно, покажется этому человеку странным, независимо от того, как вы это сделаете. Вероятно, было бы лучше дождаться более естественного разговора один на один, например, пойти пообедать или выпить кофе, а затем обсудить это как непринужденную беседу.
@UKMonkey он уже сделал это эффективно. Если PR утверждается сразу после выпуска, это означает, что не имеет значения, что было в PR, мусор или нет.
Я бы предложил сказать им, что вам нужна конструктивная обратная связь по вашим PR, чтобы помочь вам стать лучше, а не спрашивать их, почему они штампуют. Последнее может показаться обвинительным, а первое подчеркивает, что речь идет о самосовершенствовании.

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

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

На вашем месте я бы задал ожидания вежливым и скромным толчком, например: «Я собираюсь отправить вам запрос на включение [Функции X]. Я немного не уверен в том, как я исправил [Проблему Y]. Не могли бы вы пожалуйста, взгляните и дайте мне знать, если обнаружите какую-либо проблему? Кроме того, есть ли у вас какие-либо советы о том, как я могу провести рефакторинг [Раздел Z]? Я думаю, что это может быть трудно понять и поддерживать в будущем, но я не вижу элегантное решение».

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

Имейте в виду, что человек, одобряющий ваш запрос на вытягивание, пытается «выполнить свою работу» — и, по-видимому, по его мнению, «их работа» не включает в себя длительный обзор вашего кода. Но в том-то и проблема: их нельзя заставить изменить свое мнение о том, в чем состоит их работа.

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

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

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

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

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

Я боролся с этой самой проблемой в своей команде, и моим решением было довериться рецензентам. Вы должны защитить репозиторий от привычных «приятелей-утверждающих». По моему опыту, если вы не можете этого сделать, вы, вероятно, не сможете выиграть битву за качество кода. Лучшее, что вы сможете сделать в этом случае, это прикрыть свой зад и ждать неизбежной катастрофы, которая вызовет проблему. Не будьте тем, кто держит сумку, когда это происходит. Не ставьте под угрозу собственную дисциплину проверки кода; может быть, что-то из этого будет даже стираться на них. Не объединяйте свои собственные запросы на вытягивание, пока у вас не будет больше необходимого количества утверждений. И убедитесь, что вы пишете более качественные и полные модульные тесты, чем следующий парень.

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

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

(И этот вопрос, вероятно, относится к Software Engineering SE.)

Если вы не можете доверять своим (платным) разработчикам делать хорошие обзоры (с обучением, объяснением ожиданий, что они делают обзоры и т. д.), просто уволите их и наймите лучших. В противном случае у вас есть Салли, Боб, Том и Джейн, которые проводят весь день, делая забавные вещи с кодом, и бедные усердные Джим и Джоан, которые проводят весь день, просто делая обзоры кода, которые занимают весь день, потому что они усердны, а затем объясняют в каждое утро вставать, что они целый день проводили обзоры кода и не добились никакого прогресса в своих фактических поставленных задачах...... нет, я не огорчен (сильно).
Да, это. Цель состоит в том, чтобы не иметь комментариев. Но чтобы не было комментариев, потому что код хорош, а не потому, что рецензенты не удосужились его просмотреть.
@user3067860 user3067860 С упомянутой вами проблемой можно бороться с помощью учета задач. Если ваш scrum-инструмент поддерживает разбивку задач на истории по часам, просто убедитесь, что проверка кода является отдельной отдельной задачей в каждой истории, и что проверка кода является частью определения «Готово», и серьезно отнеситесь к точному протоколированию времени задачи. Затем Джим и Джоан вложат все свои силы в задачи проверки кода по историям, а остальные будут разоблачены как несерьезные рецензенты. Если руководство спросит, почему Джим и Джоан «слишком долго» проводят проверку кода, это идеальное начало для обсуждения.
@wberry Но я бы предпочел уволиться и найти лучшую работу с лучшими коллегами, чем продолжать быть единственным, кто делает все экспертные оценки, в то время как мои коллеги занимаются действительно интересными вещами. Кроме того, я бы предпочел уволиться и найти работу получше, чем записывать «время, потраченное по часам», и если причина, по которой я должен записывать время, потраченное в часах, заключается в том, что мои коллеги — несовершеннолетние, которые не могут выполнять свою долю не- весёлая работа......

Делайте то же, что и я: прямо спросите старшего разработчика, могут ли они взглянуть на предложенный вами набор изменений и посмотреть, довольны ли они им. Спросите об обратной связи. У меня еще не было отрицательного опыта с этим подходом.

Если у них нет времени взглянуть на ваш код, они дадут вам знать об этом.

Возможно, мне придется выйти за пределы моей команды, чтобы получить это.
@mkki ваши товарищи по команде лучше всего знакомы с модулями и стандартами кодирования проекта, над которым вы работаете.
это проблема, хотя. Мои товарищи по команде не комментируют мои PR. Я также самый старший разработчик в команде, поэтому мне придется обратиться за пределами нашей команды.
@mkki а, понятно. Ну, как самый старший разработчик, вы должны задавать тон. Поговорите со своими коллегами, объясните им, что вас беспокоит, и напомните им о цели запросов на включение и проверки кода. Проблема вполне может заключаться в том, что, поскольку вы являетесь самым старшим разработчиком, другие считают, что ваш код в порядке, или они могут опасаться указывать на ошибки. Вы говорите, что у вас нет прямого управляющего, но ведь кто-то должен указывать вам, что делать, верно? Вы не действуете в вакууме.

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

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

Вообще говоря, это плохая жизненная философия. Что касается программного обеспечения, мы знаем, что код, который был протестирован и признан достойным производства, всегда содержит ошибки. У меня был профессор в колледже, который утверждал, что в большинстве программ примерно 1 ошибка на 100 строк кода, но я не могу найти источник для этого прямо сейчас. Кроме того, ошибки стоят дорого: некоторые утверждают, что ошибка стоит 10 тысяч долларов, если она обнаружена в продакшене .

Стоит потратить некоторое время на просмотр кода и, по крайней мере, задать вопросы о нем.

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

  1. Проверяйте код так, как, по вашему мнению, следует проверять код. В последующих беседах объясните людям, почему вы делаете это именно так, и дайте им понять, что вы хотели бы, чтобы они просматривали ваш код таким же образом.
  2. Обсудите эту проблему с другими влиятельными людьми среди инженеров. В некоторых компаниях такими людьми могут быть архитекторы или другие старшие разработчики, но как бы ни называлась эта должность, вам нужны технические лидеры, которых уважают другие инженеры в вашей команде. Обсудите, что происходит с этим человеком (этими людьми), и попытайтесь заставить их помочь.
  3. Когда вы наймете непосредственного менеджера, обсудите это с менеджером и убедите его, что это то, что нужно изменить.

Признание подобных проблем и попытка их решения является основным отличием среди инженеров.

Я не верю вашему ответу, потому что «в течение нескольких секунд»
@ Джошуа, я не уверен, о чем ты говоришь?
Они не смогли бы просмотреть запрос на включение за меньшее время, чем требуется для его чтения.
Я не понимаю, какую часть моего ответа вы имеете в виду.

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

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

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

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

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

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

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

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

Это не означает, что вы не должны заставить его проверить ваш код должным образом.

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

Несколько вещей из личного опыта, которые могут помочь с вашей проблемой:

  • Держите PR маленькими и простыми. Просмотр небольшого PR, который решает одну четко определенную проблему, намного проще, чем внесение множества различных изменений в несколько файлов. Чем больше PR, тем больше вероятность того, что ваши коллеги просмотрят его и пропустят важные изменения.
  • Если есть конкретные изменения, о которых вы хотите получить отзыв, прокомментируйте их и объясните, что вас беспокоит. Это привлечет внимание людей к изменению и побудит их поделиться своим мнением.
  • Отметьте больше людей в своих PR и потребуйте как минимум 2 или 3 одобрения перед слиянием.

Мой работодатель назначит двух ведущих инженеров для каждого проекта. Одним из них является одноименный «Ведущий инженер», который отвечает за постановку задач над проектом и отвечает непосредственно за производство и контроль качества, и, по сути, является парнем «Доллар останавливается здесь». Другой - «главный инженер», чья должностная роль по сути состоит в том, чтобы «быть парнем, который знает все».

Главные инженеры часто устанавливают архитектурные рекомендации для проекта, предписывают использовать (или не использовать) определенные технологии и внедряют лучшие практики в кодовую базу. В какой-то степени эта кодовая база является их детищем, и они не должны допускать пятен на панцире любой из ее многочисленных черепах. С этой целью директор должен сам просматривать приличную долю поступающих PR или, по крайней мере, просматривать отзывы .

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

Здесь много хороших ответов, но я не заметил никого, кто предложил бы это в вашем PR:

  • Отметьте, что вы исправили
  • Упомяните, как вы это тестировали
  • Попросите их посмотреть на/на конкретные вещи

Еще одна вещь, которую вы могли бы сделать, и я делаю это со своими собственными PR, — это после того, как вы сами отправите обзор PR .

Это означает снять шляпу «Я написал это» и надеть шляпу «Это написал кто-то другой».

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

Несколько раз при просмотре собственного кода я обнаруживал вещи, которые забыл исправить/отладить код, который забыл удалить.

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

Поскольку это Workplace.SE, а не Software Engineering SE, я отвечу на этот вопрос с общей точки зрения «найма новых инженеров».

Вы на новой работе в небольшой команде. Таким образом, вам нужно руководство о том, как все делается в этой компании и в проекте, над которым вы работаете. Но как небольшой команде, которой, вероятно, приходилось сталкиваться с нехваткой рук, пока вас не наняли, у них, вероятно, есть невыполненная работа, которую необходимо выполнить. Вы спрашивали об этом?

У нас в компании появился новый сотрудник (инженер, а не программист). Сначала ему поручили только один проект — один из моих проектов — и он был явно разочарован тем, что не получил должного контроля. Но у меня были срочные дела (поскольку у нас не хватало рук в течение нескольких месяцев), и я мог помочь ему только с теми вещами, которые нужно было сделать совершенно прямо СЕЙЧАС (т. е. с теми, которые выходили за пределы компании к клиенту и поставщикам). Он активно взял на себя подготовку списка материалов для внутреннего использования компанией для проекта (не в форме компании, поскольку ему не показали, где она находится). Его формат оказался значительно лучше формы компании, поэтому Я сказал ему придерживаться этого, но внести некоторые коррективы в содержание. Теперь у него есть несколько проектов, над которыми нужно работать, так что проблема решена - на самом деле всего пару недель спустя,

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