Как бороться с непрофессиональным поведением стажеров?

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

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

Я помогаю им в разработке на ежедневной основе (быстрые встречи для решения проблем, которые они не могут решить самостоятельно) и делаю обзор кода. Одна из основных проблем, с которыми они сталкиваются, заключается в том, что они не следуют соглашениям об именах и создают плохие и короткие имена для методов (например, convert). Конечно, я объяснил им, что правильное название очень важно, что им не следует бояться использовать более длинные описательные имена методов (например convertGallonsToMilliliters). К сожалению, некоторые из них (и я знаю, кто, потому что они используют систему контроля версий) видимо решили немного поразвлечься (или поиздеваться надо мной) и начали придумывать глупые названия методов типа convertToMillilitersBecauseIAmUsingSuchCleanCode- не одно вхождение, а несколько.

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

Должен ли я реагировать на

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

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


РЕДАКТИРОВАТЬ: Спасибо за ваши отличные ответы. Я обсудил этот вопрос с моим менеджером и поговорил со стажерами. Я написал название метода на доске и спросил, считают ли они, что это хорошее название. Я также еще раз кратко обсудил с ними цель проверки кода. Я сказал им, что в реальных проектах у нас есть сторонние компании, которые проводят проверки кода — такая шутка может действительно навлечь на них неприятности позже. Так что на самом деле им лучше усвоить этот урок во время стажировки.

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

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .
Один потенциально забавный вариант: запустить обфускатер над их кодом и сказать им, что это за короткие имена переменных, когда они пересматривают код, написанный 6 месяцев назад.
Вы когда-нибудь видели код ядра Linux? Взгляните, например, на это внимательно . Удивительно, но это работает, и работает настолько хорошо, что используется во всем мире. Я не знаю подробностей проекта, над которым они работали, но, вообще говоря, верблюжий регистр — не единственный допустимый стиль именования, и я могу понять их разочарование, если вы пытались навязать свои личные предпочтения в стиле кодирования без объяснения причин. почему стиль, который вы предлагаете, будет объективно лучше для их проекта.
Небольшое предостережение: вот почему вы не нанимаете новых сотрудников для написания нового кода. Вы заставляете их поддерживать код, и именно здесь они действительно узнают, почему вы серьезно относитесь к стандартам кодирования.
Подумайте о том, что вы, по крайней мере, так же неправы, как и ваши стажеры, и что попытка втиснуть информацию, которая должна быть в комментариях, в полуторные имена переменных может быть столь же вредной для удобочитаемости.
Что бы это ни стоило, я действительно нашел ваш пример довольно забавным. Если они такие, я думаю, если вы сообщите им, что вам понравился юмор, это может смягчить удар, сказав им, что это непрофессионально и что им нужно избегать этого в будущем. Это также принесет вам несколько очков хладнокровия/хладнокровия, которые, вероятно, помогут заставить их действительно слушать вас. (Тем не менее, дайте понять, что вам больше не понравится такой юмор.)
Не по теме, но кое-что заметил: «Некоторые стажеры будут приняты на работу в компанию в будущем на основании их результатов». Нет, вы дадите некоторым стажерам предложение работать в компании. Вы не должны предполагать, что они примут ваше предложение.
Оффтоп ... но я единственный, кто считает, что convertэто НАМНОГО более чистое имя для такого метода, чем convertGallonsToMilliliters(конечно, с учетом правильного класса и контекста).
@jamesqf Единственная информация, которая должна быть в комментариях, это почему , а не что . Если ваш код не показывает четко, что он делает, это плохой код, а плохой код нельзя исправить, добавляя к нему комментарии, тем более что вероятность обновления комментариев даже меньше, чем для кода.
@PriiduNeemre Если в вашем коде плавают десятки convertметодов (и да, у вас никогда не было ... когда вы начинаете, но скоро у вас будет), будет трудно сразу увидеть, какой это. Четко называя его или используя другие способы сделать это понятным, вы можете уменьшить сложность чтения. Конечно, что-то подобное Gallons.of( x ).convertTo( Unit.Milliliters)тоже возможно. Только если вы на 110% уверены, что это будет единственное преобразование, когда-либо выполненное в вашем коде... Но даже тогда, просто если контекст вокруг него дает понять, о чем это преобразование.
@PriiduNeemre: Я полагаю, что люди, пишущие программное обеспечение для Mars Climate Orbiter , также предполагали, что они пишут чистый код в четко определенном контексте.
Добавьте в проект новый метод для демонстрации. FireEmployee(string employeeName, string Reason) и добавьте модульный тест, вызывающий метод с именем проблемного сотрудника и причиной, объясняющей, что он сделал не так. Покажите, что этот тест пройден и готов к запуску ;)
@FlorianSchaetz: Действительно, я имел в виду что-то вроде вашего второго примера. ИМХО важно иметь описательные имена не только на уровне методов, но и на уровне класса и переменных ( например , . DtoAssembler.assemble(customer), вместо CustomerHelper.assembleCustomerToCustomerDto(entity), хотя это, возможно, не лучший пример). Если вы чувствуете, что вам нужно раздуть простой код convertдо таких размеров, возможно, он находится не в том месте. В любом случае, это, вероятно, слишком далеко уходит от первоначального вопроса :).
@undercat Что я должен увидеть в исходниках Linux?
@undercat делает здесь важное замечание. В исходном коде скрыта давняя традиция непочтительного юмора; утверждение, что это непрофессионально, является локальным стандартом, а не универсальным.
Я не согласен с Мехрдадом. Мы говорим о профессионализме? Зачем вам тратить время на то, чтобы добиться уважения стажеров, чтобы они слушались вас? Это полигон для испытаний, они должны заслужить ваше уважение. Я понимаю, что быть приверженцем может определенно испортить общение, но я думаю, что давать указания это не применимо. Если они не следуют вашим указаниям, если они не отвечают на код-ревью, это непрофессионально. Юмор не имел бы такого значения, если бы не был снисходительным.
Кроме того, вы не должны мотивировать их учиться. Их амбиции - их ответственность. Если ты чего-то хочешь, иди и возьми это. То, что вы поступили в какой-то университет, получили степень, прошли стажировку, не имеет значения, когда дело доходит до вашей карьеры, если только вы не проявите собственную инициативу. Вы не должны беспокоиться о своем статусе среди них, вы должны просто дать понять, что они сами выбирают свою судьбу.
@CodeSeeker, вероятно, комментарий к строке 9
Это не вопрос «Должны ли методы иметь длинные или короткие имена?». Это «Что мне делать, если коллеги вставляют глупые шутки в исходный код?»
Это действительно хороший пример? Только глагол convert, должен быть именем функции, а подробности являются частью типов аргументов. Может быть auto result= convert<mililiters>(original); where , original` имеет тип gallons. Единицы IAC должны быть строгого типа, а операции должны выполняться для базовой абстрактной величины *, а не для конкретных единиц.
Откуда вы знаете, что они сделали это из-за грубости? Возможно, стажер сделал это, чтобы явно показать вам, что он слушал то, что вы говорили, и понимал, почему вы это сказали.
Я разработчик с более чем десятилетним профессиональным опытом. Когда мне нужно пошутить в коде, я делаю это в данных для модульных тестов. Я даю заказчикам юнит-тестов остроумные названия улиц и фамилий, для тестов выбираю продукты вне домена, например бензопилы или ракеты-носители. Мой последний стажер выбрал персонажей мужского пола Marvel и DC в качестве пользователей модульного тестирования для своего проекта, в комплекте с адресами электронной почты и паролями — именами их подруг. Он прошел через эту схему. Я думал, что это было умно и весело, и я поощрял это. Есть место для веселья, но не так, как в вопросе
Простой ответ: запланируйте проверку кода. Часть нормального цикла разработки программного обеспечения в большинстве магазинов программного обеспечения.
Измените convertToMillilitersBecauseIAmUsingSuchCleanCodeна convertToMillilitersBecauseImUsingSuchCleanCodeи дождитесь NoMethodError.
Принятый ответ с корректировкой @inСоответствующийCode, сделанной в комментарии к этому ответу, - это правильный путь. Кроме того, не нанимайте стажеров, которые так себя ведут.
Групповое собрание, а потом слова: «Послушайте, сопливые, это уже не колледж, это реальный мир. А в реальном мире за такую ​​чушь людей увольняют.
@Florian Schaetz: Если ваш код ясно показывает, что он делает, вы не работаете над очень сложными проблемами :-) Попробуйте реализовать, скажем, решатель уравнения эйконала, который вы можете понять из кода. Использование очень длинных имен переменных не поможет. Действительно, будет больно, когда вы будете ссылаться на уравнения в оригинальной статье.
@jamesqf Напишите решатель уравнения эйконала, где документация может хорошо вписаться в код. Это не будет. В этом случае вам просто придется сослаться на оригинальную бумагу в любом случае. Но что вы можете сделать, так это обернуть весь решатель так, чтобы было ясно, что он делает, даже если «как» просто отвечает «математикой» через сам код.
Отклоните PR с краткой заметкой, объясняющей, почему. Не принимайте будущие PR, которые содержат такие проблемы.
Проще говоря, это те, кого вы не наймете. Конец истории.
Не знаю, лично мне это показалось забавным. Не вижу ничего плохого в дерзком чувстве юмора. Все, что это показывает, это то, что они на самом деле не понимают преимущества соответствующих имен функций/переменных - и, будучи стажерами, это ожидаемо. Я думаю, что принимать это на свой счет и не нанимать их на основе этого показывает недальновидность.
Если это худшее, что есть в их коде, то у вас есть действительно крутые стажеры ;) .
они, вероятно, не видят смысла в использовании имен собственных. Это обычно приходит намного позже и с опытом. Если этот проект бессмысленен, пусть развлекаются. Если проект действительно важен, пригласите людей, вовлеченных в проект, и поговорите о том, как члены команды будут поддерживать этот код в будущем.
@PriiduNeemre Вы не единственный, кто основываясь на плюсах к вашему комментарию, но я полностью с вами не согласен. Лучшее именование — один из самых важных способов сделать код более читабельным. Если имя класса не GallonsToMillilitersConverter, Convertэто ужасное имя метода.
@EdmundReed Я полностью согласен с тем, чтобы не принимать вещи на свой счет. Не нужно. Смотрите мой ответ на этой странице и комментарии.
@CodeSeeker: ты вообще читал мой другой комментарий (и тот, что написал @FlorianSchaetz)?
@PriiduNeemre Я читал это раньше, но не во время комментирования. Я понимаю вашу точку зрения, правда, понимаю, но в некоторых случаях программное обеспечение не должно быть слишком сложным. Иногда вам просто нужно ConvertGallonsToMilliliters, и нет места для создания целого контекста, в котором преобразование может быть повышено до надлежащей проблемы на уровне домена. Я хочу сказать, что неправильно просто называть такое имя неправильным. Это может быть правильным для определенного контекста.
@CodeSeeker: Хорошая аргументация, я могу с этим смириться :). Честно говоря, я в любом случае не пытался делать опрометчивые заявления... Хотя, думаю, получилось немного провокационно.
Я не понимаю, почему стажеры «узнают друг друга» вообще являются фактором. Они здесь не для того, чтобы познакомиться с другими детьми студенческого возраста без связей и без опыта; они там, чтобы «познакомиться» с профессиональными разработчиками. Точно так же, если над проектом в основном или полностью работают стажеры, это означает, что вместо изучения (хорошего, плохого и уродливого) реального кода они учатся друг у друга, слепые ведут слепых. Гораздо разумнее, если у вас несколько команд, назначать одного или двух стажеров в каждую команду или наставников-добровольцев.
Я серьезно думаю, что этот вопрос не относится сюда. Он принадлежит обмену стеком «программистов». ОП - инженер, и он пытается управлять людьми из стажеров, и он усвоил урок, так и будет!
@FlorianSchaetz Если ваш код не показывает четко, что он делает, это плохой код - зависит от языка: -/
Скажите ему, что это никогда не пройдет код-ревью, потому что convertToMillilitersBecauseIAmUsingSuchCleanCode неоднозначен. Следует преобразовать галлоны в миллилитры, потому что IAmUsingSuchCleanCode

Ответы (22)

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

Я бы порекомендовал вам быть с ним/ней твердыми и сказать что-то вроде:

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

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

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

После просмотра этого видео я вижу, что работники желают 3 вещей:

  1. Автономия
  2. Мастерство
  3. Цель

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

Исправьте задание, и рабочие последуют за ним.

Некоторые примеры:

  1. Вот этот проект, работайте вместе и сделайте его до ____, дайте мне знать, если вы застряли.

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

Согласовано. Они знают, что работают над чем-то совершенно бессмысленным, что может расстраивать. Юмор — хороший способ выпустить пар.
Мне очень нравится этот ответ, потому что он разделяет вину за непрофессиональное поведение стажера с руководством. Как человек, который до недавнего времени застрял, выполняя второстепенные задачи в подчиненной роли, я понимаю негативное влияние микроуправления и отсутствия автономии на мою собственную продуктивность. Хотя дисциплина может привести к краткосрочному решению проблемы, она не решает основной проблемы.
Я видел видео, и мне нравятся эти моменты. Тем не менее, это явно подрывной и неуважительно. Вопрос в том, почему. Приступить к работе над игрушкой до того, как ее бросят в глубокую часть бассейна, — это не микроменеджмент. Хотя стажеры могут этого не понимать. Лучший способ отреагировать на это — спросить, почему. Они издеваются над упражнениями, стандартами, управлением, или они просто слишком много времени проводили за клавиатурой и недостаточно держали пистолет Nerf?
Не вчитывайтесь в него вообще, пока не разберетесь с ним. Это даже не дело руководства. Это проблема проверки кода. Причина, по которой вы этого не делаете, не в том, что руководство вас уволит. Это потому, что ваши коллеги знают, где вы держите свою кофейную кружку.
Согласовано. Это дети, которые раньше не работали в профессиональной среде, и одной из целей является научить их работать в профессиональной среде. Увольнять их за непрофессионализм, похоже, не стоит.
@JaguarWong «Это дети, которые раньше не работали в профессиональной среде в роли, одной из целей которой является научить их работать в профессиональной среде». Им, вероятно, 20 с лишним лет, и очень скоро им нужно будет сделать это или продолжать заставлять маму и папу платить за них. Откровенно говоря, «не издевайтесь над своим наставником» — это то, что они уже должны знать.
@CandiedOrange о «подрывном / неуважительном»: не обязательно верно. У нас есть только отчет менеджера об этом. Насколько нам известно convertToMillilitersBecauseIAmUsingSuchCleanCode, это «преувеличенный» пример. Может быть, вместо того, чтобы «издеваться», стажеры сделали это «для связи», а менеджер не уверен в себе и пошел на самое худшее из возможных объяснений. Может быть, стажер с гордостью поместил это туда, показав, что они не только слушали, но и получали удовольствие, и им удавалось немного повеселиться. Менеджер предполагает, что он «хитро догадался, кто», тогда как стажер, вероятно, не скрывался и просто пытался поднять настроение.

TL;DR : я возражаю против названия метода, потому что оно (на мой взгляд!) выражает презрение к боссу и/или «правилам» (здесь: рекомендации по стилю). На рабочем месте я ожидаю, что люди будут соблюдать правило «люби это, измени это или оставь это». В этом случае стажер, который, кажется, считает, что руководство не нужно, должен либо просто принять его в любом случае; или продолжайте дискуссию об этом; или прекратить делать то, что он делает. Не помещайте в эквивалент некоторого размазывания в туалете. У меня не было бы никаких возражений против действительно забавного, креативного названия метода. Если вы (ОП) находите название метода просто забавным, а не «плохим», как я, то проигнорируйте этот ответ, пожалуйста.


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

Я хотел бы знать, как справиться с такой ситуацией правильно.

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

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

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

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

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

Попробуйте найти первопричину. Если вы обнаружите, что либо...

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

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

Или я должен сказать им что-то в этом роде, чтобы мотивировать их действительно чему-то научиться?

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

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

Прежде всего, забудьте об условностях кодирования. Проблема не связана с компьютерами или программированием. Это действительно хороший момент!
Извините, но -1, так как я нахожу ваш ответ слишком резким и чрезмерным. Я считаю, что такие фразы, как «это так далеко от приемлемого», «они уже продемонстрировали, что они не заинтересованы в этом» и «сводят их шансы на адаптацию позже к нулю», не применимы к этой ситуации. Они просто выбирают какие-то глупые имена для нерелевантного фрагмента кода, действие, которое можно исправить за несколько секунд (кстати, использование глупых имен довольно распространено во многих серьезных приложениях). Они не убивали своего босса!
Не нужно извиняться, @dirkk, твое мнение такое же правильное, как и все остальные. Я думаю, было бы полезно узнать, какой возраст и/или какой опыт у этих парней и каков контекст их стажировки.
«потому что это действительно не до смеха». Это название метода, а не неотложная медицинская помощь. Да, он должен быть идеальным, стерильным и серым, но если вы действительно выбираете людей на основе этих критериев, будьте готовы к тому, что в ближайшем будущем ваш идеальный, стерильный и серый магазин будет захвачен скриптами и ИИ. Все люди совершают ошибки, и если их единственная ошибка — найти соответствующее правилу, но забавное название метода, то я бы определенно использовал их.
@nvoigt Вполне возможно написать хороший код с талантом программирования без дошкольной глупости. (И нет, это не соответствует правилам.) Их ошибка заключается в том, что они видят в ОП просто еще одного учителя в ситуации «мы и они», а не коллегу, пытающегося им помочь. Если они придерживаются такого детского отношения, зачем вам их нанимать? Если стажеров много, а постоянной работы мало, они должны дать вам причину, чтобы они работали с вами, иначе вам лучше пойти с кем-то другим.
@Graham, судя по тому, что вы пишете, ваша страна, кажется, переполнена идеальными людьми CS, просящими работу. Мой нет, я возьму кого-нибудь, чей самый большой недостаток - найти забавное имя метода в правилах в любой день.
@nvoigt, проблема (для меня) не в том, что они использовали забавное название метода. Например, один из наших разработчиков назвал пакет «I», что привело к таким именам методов, как «I.run()» и т. д. Это нормально, это забавно и т. д. Имя метода, которое выбрал парень в этом вопросе, примерно переводится как « мой БоссОтстой, но я делаю то, что он говорит, потому что он так говорит". Да, конечно , это только мое мнение, но мы в Workplace.SE, и здесь должно быть разрешено немного мнений, тем более что об этом позаботится механизм голосования.
@nvoigt: добавил TL; DR, чтобы лучше объяснить суть моего ответа.
@dirkk Как упоминает AnoE, это не «просто глупое имя». По сути, это записанный сарказм, задуманный как пренебрежение к ОП, и это просто недопустимо на рабочем месте. Это относительно мягко и, вероятно, просто неуместная попытка пошутить, но если бы это не было о стажерах, я бы использовал такие термины, как пассивно-агрессивное поведение, злонамеренное согласие, ущерб репутации и ограничение карьеры. Но ожидается, что стажеры, плохо знакомые с офисной культурой, облажаются, и это должно стать обучающим моментом. Если не относиться к этому серьезно, это окажет этим стажерам медвежью услугу.
@AnoE Я слежу за вашим мнением по этому поводу, но если я могу предложить некоторую (надеюсь, конструктивную) критику, я считаю, что ваш ответ немного неструктурирован и бессвязен. Я думаю, это помогло бы резюмировать основную проблему с поведением (непрофессиональное, неуместное на рабочем месте) и что должен делать ОП (объяснить, почему это неуместно для новичков на рабочем месте = управлять его стажерами). Я также не уверен в вашем разделе о первопричине. Я бы не стал автоматически предполагать, что они не были мотивированы этим конкретным случаем неверных суждений.
@Lilienthal: спасибо за этот отзыв, кажется, это обычно проблема для меня (переходя к сути), иногда. Я постараюсь над этим поработать. ;)
@AnoE Мне знакомо это чувство, мои комментарии контролируются только ограничением в 600 символов. :) Отправьте мне сообщение в чате Workplace , если хотите ответить, я не хочу продолжать добавлять комментарии в эту ветку комментариев. Идите вперед и пометьте мой комментарий выше как устаревший, если вы хотите очистить эту часть.
«Проблема не связана с программированием». Это фантастический момент, и он доходит до сути вопроса. Я думаю, что большинство других ответов как бы подразумевали это, но спасибо за явное изложение этого.

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

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

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

Если они продолжат вести себя по-детски, то, думаю, вы пришли к следующему выводу:

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

Проблема здесь в том, что они следовали соглашениям об именах.
@ДжоС как? convertToMillilitersBecauseIAmUsingSuchCleanCodeне следует инструкциям should not be afraid to use longer, descriptive method names. Оно длинное, но не описательное.
@Чешир, они играли в игру «точные слова». Это не то, что можно решить грубой силой.
@JoeS Нет, не знали. Очевидно, что их поведение было пассивно-агрессивным, а длинное имя они выбрали лишь для того, чтобы поиздеваться над надсмотрщиком. Мне было бы интересно, чтобы полноценный работающий профессионал вел себя так же и не получал строгих выговоров (если не хуже). Нет никакого оправдания для выбора имен длиннее, чем они должны быть, они не играют в игру «лучшее злоупотребление лазейкой», и даже если с правилом что-то не так, они должны поднять это конструктивно, а не вести себя вызывающе. PS: Я искренне надеюсь, что вы пошутили.
Если их ответ не имеет значения, то зачем вам созывать собрание, чтобы задать вопрос? Первое предупреждение должно быть реальным предупреждением, а не риторическим вопросом.
@mwbl Потому что цель постановки этого вопроса в том, чтобы поставить их в неудобное положение, когда они должны подумать об этом и дать какой -то ответ на месте. Он уже рассказал им о соглашениях об именах, и они не «поняли». Если вы скажете им: «Вы не должны использовать глупые имена в своем коде», они ответят: «Да, да, о таком чистом коде мы говорим». Стажеры должны понимать разницу между колледжем и профессиональной средой.
— Не могли бы вы объяснить, почему было выбрано именно это имя? довольно пассивно-агрессивное поведение, когда вы ясно видите, что это шутка. Надеюсь, ваша цель — улучшить правила кодирования, а не хвастаться своим авторитетом.
@Boat Хотя я не могу говорить за MaskedMan, цель здесь, безусловно, не в том, чтобы научить лучшим соглашениям о коде: это случайно. Цель этой встречи должна заключаться в том, чтобы дать понять этим стажерам, что на рабочем месте действуют другие правила, чем на курсах программирования, и что пассивно-агрессивное поведение, подобное этому, очень не нормально и часто ограничивает карьеру, и что для обычных сотрудников такие фразы, как «последнее предупреждение» или «пожалуйста, собирайте вещи». Настоящая ценность стажировок заключается в обучении навыкам межличностного общения и адаптации к офисной культуре, а не в технических навыках.
@Lilienthal, Ну, тогда вы можете просто сказать, например, «неуместно шутить с соглашениями об именах». Если вы притворяетесь, что не понимаете, вы просто говорите: «Я босс, и вы должны знать свое место». Дело не в социальных ролях, не в вашем эго, а в рабочих условностях, и начальник должен уметь донести это конструктивным образом. То, что стажер вел себя по-детски, не означает, что вы должны поступать так же.
@Lilienthal Я собирался ответить на эти строки, когда нашел время, но вы, безусловно, выразили это намного лучше, чем я бы сказал!
@Boat Что здесь ребяческого в том, чтобы просить стажеров объяснить, почему они не соблюдали правила? Стажеры не в детском саду, вы не должны позволять им создавать впечатление, что они будут баловаться в профессиональном мире. Начальник уже сказал им однажды следовать соглашениям об именах. С его стороны нет такого обязательства «дать пошутить в первый раз и объяснить правила еще раз, пока они не перестанут шутить». Нет ничего неконструктивного в том, что начальник говорит своим подчиненным выполнять свою работу, ему не нужно присматривать за ними, чтобы выполнить работу.
@MaskedMan-仮面の男 Указание на то, что шутить нехорошо, совершенно нормально. Но просить объяснения, делая вид, будто вас интересует ответ, — это не нормально, потому что на самом деле вы просто хотите, чтобы они ответили «потому что я тупой». Это то же самое, что требовать объяснения для каждой письменной ошибки: вы знаете, что этого не должно быть, потому что они думают, что это правильно, но вы делаете вид, что это не так. Просто скажите им, что шутить или писать об ошибках нехорошо, и выгнать их, если они не изменят свое поведение, но не притворяйтесь.
@Boat Хм, вероятно, это просто связано с разницей в культуре работы. В знакомой мне рабочей культуре то, что делали стажеры, называется неподчинением. Я даю им много слабины, потому что они стажеры, и предлагаю попросить их объяснить именно потому, что они должны подумать об этом, а не просто сделать вывод: «Мы не должны ослушаться босса, потому что так сказал босс». Дело здесь не в том, что они «шутили» сами по себе, а в том, что они проявили полное игнорирование указаний своего начальника.
@boat "Я босс, и ты должен знать свое место". Я на самом деле думаю, что это один из уроков, которые стажеры должны усвоить в этом вопросе.

О, куча отвертки, а?

Возьмите какой-нибудь рабочий код и сделайте что-нибудь, чтобы намеренно его сломать. Затем пропустите его через обфускатор, который изменит все имена классов, переменных и методов на такие вещи, как «a___1318798_» и «xy23_7a963»; или, что еще хуже, имена переменных с большим количеством букв O, букв I, цифр 0 и цифр 1 в них. Поручите им документировать, что делает код, и исправьте это.

Это избавит от шуток.

не уверен, почему этот ответ получил отрицательные голоса. Я почти уверен, что это «задание» ставит вопрос о соглашениях об именах с ног на голову. Профессионализм, однако... жаль, что нет отката на тему "Я был придурком по отношению к тому, кто влияет на то, возьмут меня на работу или нет"
@TBear Это было бы пустой тратой времени, чем уже было потрачено впустую, вероятно, без очень полезного урока, или, в лучшем случае, урока, который можно было бы преподать легче с быстрым объяснением. Хотя я лично не отрицал это, я считаю, что это сделали другие.
Я думал то же самое, но разместил это как комментарий, так как это, вероятно, не очень хорошее решение проблемы. Сильно зависит от культуры команды разработчиков и от того, обращаетесь ли вы к своим стажерам «Личинка» в стиле Major Pain.
Это почти наверняка получило кучу отрицательных голосов (не от меня, я обещаю), потому что это только увеличивает восприятие стажерами упражнения как несерьезного.
При наличии контроля версий это исправляется за 30 секунд одним откатом.
@DmitryGrigoryev, вам не нужно давать им это через git;)
@BlackThorn Принятие на себя ответственности, извинение и явное стремление к лучшему могут сработать как откат к этому.

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

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

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

Надеюсь, вы следите за их производительностью и можете заметить, как часто это происходит.

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

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

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

Если он говорит, что хочет учиться, скажите что-то вроде этого:

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

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

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

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

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

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

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

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .

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

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

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

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

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

Я чувствую, что это предложение является очень хорошим советом: «Единственный способ повысить свой авторитет — это заполучить их в ситуации, когда они докажут сами себе, что то, что вы утверждаете, правда». Если они не следуют соглашению, это потому, что они не понимают его ценности. Предоставление им возможности самим увидеть значение, скорее всего, поможет им использовать соглашение.
Вы не можете сделать им выговор, конечно. Но если вы делаете код-ревью, то вы можете отправить его обратно, и отправить обратно, и снова отправить. И если это будет продолжаться, обострить его. У вашего начальника, безусловно , должно быть мнение о читабельности и повторном использовании кода, поскольку это напрямую влияет на временные рамки его команды в будущем. И если они не могут следовать стандарту кодирования, избавьтесь от них. Дети, только что закончившие школу, стоят десять пенни, и если они не будут учиться, вы можете уволить их и найти того, кто может.
@Graham Если рынок труда такой же, как в США или западной части ЕС, легче заменить «дефектных». Там, где я живу, трудно найти квалифицированную рабочую силу, поэтому у вас не так много вариантов. Если станет известно, что вы слишком круты, люди будут искать другие варианты.
«Программисты, как правило, умные люди, и «потому что я так сказал» редко бывает достаточно веской причиной». Теоретически это может быть правдой, но на практике мы имеем прямо противоположное, когда программисты практикуют глупый фанатизм вроде «Emacs против Vim», «Chrome против Firefox». ", "C++ против Java", "Windows против Linux" и т. д. Во многих случаях разумно изучить как можно больше инструментов и выбрать правильный для работы, но программисты настаивают на том, чтобы делать все с их «предпочитаемый» инструмент, даже если его можно сделать лучше с помощью другого инструмента, и они это знают .
@ user27051 опять же, другие придут, если узнают, что вы придерживаетесь надлежащих стандартов и избавляетесь от людей, которые больше мешают, чем помогают ...

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

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

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

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

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

Похоже, здесь есть две основные проблемы: 1) они непочтительны и 2) название функции все еще отстой, хотя теперь оно длиннее.

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

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

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

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

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

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

  1. Это прививает личную ответственность за результат проекта
  2. Обеспечивает немедленную профессиональную обратную связь
  3. Дайте разработчику ощущение срочности завершения проекта

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

Это первое предложение, похоже, ничего не добавляет к остальной части вашего сообщения. Я что-то упускаю?

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

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

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

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

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

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

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

Попросите их исправить код или (если вы хотите проявить авторитет) просто откатите их изменения в системе контроля версий.

Это не должно быть «один размер подходит всем».
Все размеры подходят некоторым:

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

Должен ли я реагировать на

  • отшутиться («Да, это смешно, но уберите это, пожалуйста»)

Это отличная идея, когда: У вас отличные отношения с этими коллегами, которые стали хорошими друзьями с вами.

  • просто вежливо прошу удалить

Это отличная идея, когда: Вы хотите быть прямолинейным, чтобы не было недопонимания

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

Это отличная идея, если: Вы хотите выразить раздражение и придерживаетесь авторитарного подхода.

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

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

Но что лучше?
Ваш основной вопрос: «Как я должен реагировать на это?»

По сути, этот вопрос сводится к тому, чтобы сказать: «Мне нужно куда-то добраться. Должен ли я использовать уницикл, погостик, велосипед или автобус?»

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

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

Здесь мы имеем дело с людьми, поэтому то, что работает лучше всего в одних сценариях, может не сработать в других сценариях. Один из ключевых факторов — это вы. Можно ли быть суровым, не сжигая мостов? Сможете ли вы подружиться с ними, проявляя беззаботность, но при этом обеспечивая достаточную уступчивость и вдохновение для достижения желаемых результатов? То, что работает лучше всего для меня, может работать ужасно ужасно для вас. В конечном счете, вам нужно решить, какой из этих подходов выбрать.

Гибкое обучение: не ограничивайтесь одним подходом.

Просто выберите тот метод, который вам наиболее удобен. Убедитесь, что вы не переборщили (плохой/оскорбительный юмор или создание неудобно угрожающей обстановки в попытке быть строгим).

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

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

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

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

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

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

  • Заслужите уважение стажеров, перехитрив «лидера», «альфу».

  • Используйте педантичное название функции в качестве урока для всех, оптимальная длина имени функции: зона Златовласки.

  • Укажите на ошибку в функции «convertToMillilitersBecauseIAmUsingSuchCleanCode» и предложите переименовать ее во что-то подходящее (/унизительное)

  • Не обращайте внимания, игнорируйте имя функции; сосредоточьте свое время на людях, которые хотят учиться.

Я хотел бы отметить имена непрофессиональных стажеров в качестве меры предосторожности.

Интересно. На самом деле я всего на 3-4 года старше стажеров, поэтому они относятся ко мне неуважительно (хотя у меня гораздо больше опыта). Парень, который это сделал, на самом деле является своего рода «альфой», поэтому я, вероятно, просто напишу название функции на доске и спрошу стажеров, считают ли они, что это хорошее название, и как бы они назвали его лучше. Имя этого стажера будет отмечено.
@Scramjet Мне нравится идея с доской. Я собирался написать ответ, в котором вы должны задавать нелепые риторические вопросы, чтобы правильно понять суть названия. Что-то вроде Wow! Because of your "clean code" you can convert anything to millimeters?! I'm real curious how you convert 'Hello World' to millimeters!«Спросить других, что, по их мнению, делает функция, основываясь на названии, определенно покажет ее важность».
«Спрашивать других, что, по их мнению, делает функция, основываясь на названии» xD Мне это нравится.
@Scramjet Я думаю, что часть проблемы в том, что они ДЕЙСТВИТЕЛЬНО видят в вас коллегу, а не авторитет. Используйте более агрессивный и, прежде всего, СМЕРТНЫЙ подход. Он пытается посмеяться за ваш счет, посмешите за свой.
Это кажутся ужасными идеями. Честно говоря, роль стажера заключается в том, чтобы заслужить уважение человека, который на самом деле зарабатывает на жизнь, а не наоборот. Если бы ОП мог, я бы предложил уволить стажера, который зафиксировал код за непрофессиональное поведение.
Я думаю, вы путаете группу взрослых (над которой ОП имеет полномочия управления) со стаей волков ...

Как профессионал с почти 30-летним стажем, я бы сказал, что ответы с высоким рейтингом в основном верны.

Однако, как профессиональный разработчик программного обеспечения с почти 30-летним стажем, я могу сказать, что правила кодирования почти всегда носят чрезмерно предписывающий характер . Хуже того, часто за это хватаются люди, больше озабоченные своим Авторитетом, чем созданием читаемого кода. Такое пассивно-агрессивное поведение младших инженеров — именно то, что вы обычно видите, когда это происходит.

Добавлять глупости в комментарии к коду или даже в имена идентификаторов — действительно проверенная временем традиция среди разработчиков программного обеспечения. Вот пример названий протестов, вызванных стандартами, из моих собственных юношеских дней (которые получили 48 голосов).

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

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

Должен ли я реагировать на

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

Как насчет " понимания, почему они это сделали? "

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

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

Альтернативный подход

Так как же позитивно направить разочарование и игривость? Я работал в компаниях, где люди иногда занимались проектами 10% времени, например, программировали микроконтроллер, чтобы сделать селфи с цифровой камерой. Они не только получили полную свободу действий, чтобы сделать это, на них была возложена обязанность превратить это в готовый к поставке продукт. Он прошел путь от однодневного хакатона до примеров кода, которые теперь публикуются на веб-сайте компании. Люди могут взять этот пример и превратить его в пульт дистанционного управления для глубоководных камер, который можно включить одним нажатием кнопки.

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

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

Вы видели это.

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

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

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

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

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

Только если такое поведение будет продолжаться, я сочту необходимым объяснить, да, это не настоящее приложение, но это упражнение и рекомендации по стилю следует воспринимать серьезно по нескольким причинам:

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

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

Я тоже не умею называть вещи, но имя в OP - это то, что я бы никогда не выбрал. Этот ответ — отговорка для стажеров; они учатся в колледже и, вероятно, им по 20 лет, они прекрасно знали, что делают.
+1 за упоминание о том, что вполне может быть, что они не поняли концепцию описательных имен и просто поняли «более длинные имена». Однако не проливает на них яркого света.

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

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

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

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

В идеале это будет примерно по строке на функцию, например.

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

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

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

Дело в том, что имена функций — это документация. Хотя это более техническая аудитория, чем например. руководство пользователя, им должно быть удобно оправдывать свой выбор перед коллегами.

Хотя поведение стажеров может быть непрофессиональным, со стороны руководства также непрофессионально не учитывать, что они могут ошибаться. Ясно convert, что во многих контекстах может быть слишком коротким или двусмысленным, но convertGallonsToMillilitersслишком длинным для имени идентификатора. Вместо того, чтобы навязывать произвольные требования к детализации имен по всем направлениям, вы должны попросить своих стажеров обосновать, когда выбранное ими имя действительно неоднозначно (чего они не смогут сделать), и придумать что-то разумное, что улучшит читаемость программы, а не помешает ей. Это.

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

Соглашения об именах очень субъективны. Вместо того, чтобы формулировать этот ответ как «ОП, ты ошибаешься», вы можете просто сосредоточиться на том факте, что это субъективная тема и что обоснование с любой стороны и предоставление им возможности предложить что-то лучшее самостоятельно может быть лучшим подходом ( хотя это уже описано в других ответах). Но можно только догадываться, сможет ли OP действительно убедить их соответствовать стандартам компании (в конце концов, любой конкретный сотрудник должен иметь возможность игнорировать свои индивидуальные предпочтения в стиле, если они противоречат стандартам компании).
соглашения об именах должны следовать правилам существующего проекта.
не вижу ничего плохого в том convertGallonsToMilliliters. Я также не вижу ничего плохого в convertтом, что это универсальная процедура преобразования. Я вижу много неправильного с, например cvtGtoM, cvtGals2Millis, и различными другими сокращенными именами. Мне нравятся красивые длинные имена, объясняющие, что делает подпрограмма, потому что по горькому опыту я знаю, что разработка происходит только один раз, а поддержка продолжается вечно, и код, который вы поддерживаете, может быть вашим собственным. :-)

Вы не их менеджер, даже не важно, берете ли вы у них интервью или нет. Ты такой же инженер, как и я,

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

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

Если бы я был стажером, и я работаю под вашим началом, а вы просто старший инженер, даже я ненавижу, если вы управляете моим персоналом. Это НЕ ваша работа.

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

Проверка кода — это не управление людьми. Не путайте два.
Нет, я никогда не хотел, чтобы люди управлялись с помощью проверки кода. В вопросе ОП он упомянул, что помогает стажерам и участвует в проверках кода. Так что это не имеет ничего общего с управлением людьми. Это неправильный способ проведения проверки кода. Я решительно утверждаю, что этот вопрос о том, как сделать правильный обзор кода, также не относится к этому вопросу.
Проверка кода — это не управление людьми. Не путайте два. в чем моя точка зрения. Так почему минусы?
Вы говорите, что ОП не должен никем управлять, но в то же время вы говорите ему настроить игровую систему оценки производительности. Но я думаю, что самая большая причина, по которой вы получаете отрицательные голоса, — это сомнительное предположение, что технический профиль не может или не должен справляться.
Это правильное предложение, менеджеры по персоналу должны заниматься управлением людьми, если это необходимо.