Pull to refresh

Comments 504

Вам сегодня еще 1000 строк кода исправлять, а вы такие большие и важные статьи пишите
Вы молодец!!!
Видимо пишет, пока ждёт новые порции быдокода.
Ну, то что автор осознал свою проблему — это хорошо.
Но в статье куча моментов, которые смущают по мелочам.
Основной вот этот:
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души. И если вы скажете, что научились исключать из себя корыстную радость от самоутверждения (как бы оно у вас ни проявлялось), то я розовый единорог.


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

Я бы сказал, что это встречается повсеместно, и вряд ли это специфика России :). Синдром самозванца, только наоборот :).
У автора все публикации пронизаны эдакой трудноуловимой смесью пафоса и ЧСВ. Но пишет хорошо, не отнять.
И вставки из кода очень стильно выглядят.
Начал читать статью, не глядя на автора, и где-то на втором или третьем абзаце почерк показался знакомым :)
ЧСВ он и не скрывает) вопрос в том, что он осознал, что ЧСВ не всегда хорошо, и работает над этим. Круто
Если честно, статья напоминает перевод с английского.
Тоже сначала прокрутил вверх в поисках ссылки на оригинал :)
Еще можно добавить что все люди разные. Мне приносит удовольствие обучение новичков. А как приятно когда видишь, что они достигли больше тебя через 3-5 лет!
Ух ты, это не перевод :).

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

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

В любом случае, спасибо за оригинальную статью на русском языке!
Внезапно; всё время, пока читал, был абсолютно уверен, что это перевод. На самом деле, уверен настолько, что даже не стал проверять наличие плашки, которой, оказывается, нет. Моя внутренняя нейросеть просто не давала по разным лингвистическим и стилистическим маркерам другого варианта =)

P.S.: пункт про РФ под конец статьи пропустил, естественно.
Аналогично — стиль изложения явно западный, скорее американский. Это они любят заниматься саморефлексией «на публику», подробно рассказывать про свои чуства и мысли. Русские как то скромнее и скрытнее в этом плане.

Ситуация с русскими как-то тихонько начала меняться и мне нравится этот сдвиг.


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


В прошлый раз у меня такое ощущение вызвала статья про глупейшую ошибку в серьёзной системе наведения спутниковой антенны (извиняюсь за статью в твиттере).

Я не уверен, но может есть смысл выпускать пар на открытых проектах вне работы, показав зелёным студентам как пишут код крутые дяди? Моральное удовлетворение может быть даже больше, потому что твоё ревью и правки посмотрят не 3 человека (включая себя).
Я всё же думаю что перевод «Меня бесило, что пока я сидел до ночи, изучая F#, моя дочь начала называть папами всех мужиков вокруг.»
Мне тоже до «в РФ» казалось, что это перевод. Оно РЕАЛЬНО похоже на добротный перевод с английского. Похоже, автор часто использует английский :)
Дедовщина — она такая, да…
Стать «не таким» на самом деле довольно сложно — если не дрочить работников, то они и развиваться (как правило) не будут. А если дрючить сильно, то будет как с первым чуваком из статьи — он и понял, что код у него говно, а толку-то — уже уволили.

Поэтому «добрый дедушка» должен не только дрючить «духов», но и помогать им стать лучше. Держаться «золотой середины», где нет места излишним эмоциям и собственным комплексам (неполноценности), в чем собственно и сложность.
Тяжелые времена создают сильных людей,
Сильные люди создают хорошие времена,
Хорошие времена создают слабых людей,
Слабые люди создают тяжелые времена.
Не будет естественного отсева слабых — будет javascript basic!

10: Чем ниже порог вхождения, тем больше говнокода
20: Чем больше говнокода — тем больше создается абстракций чтобы его писать не приходилось.
30: Чем больше абстракций — тем ниже порог вхождения.
40: GOTO 10

А производители процессоров и рады стараться :D
абстракции zero-cost бывают.
абстракции zero-cost бывают.
Постарался как можно сильнее выделить главное. Потому что бывают они нулевыми по стоимости действительно редко. Но даже нулевая стоимость их не спасет — понижение порога вхождения порождает еще больше говнокода.
Оффтоп
Как хорошо что мне чем-то не понравился Python и я начал учить программирование по старой переводной книжке по C и POSIX
бывают около нулевыми (или нулевыми) по стоимости в подтюненных компилируемых языках. Причем там это не такая редкость.
Это скорее не абстракция уже, а синтаксический сахар какой-то.
Ну вот возьмем итераторы — это абстракция, или сахар?

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

Абстракции — бывают, а вот безответственные сотрудники обходятся куда дороже.
Сейчас дешевле купить новый процессор и докупить памяти, чем нанять «дорогого» разработчика, идеально пишущего программы
Купить всем пользователям этой программы?
Сейчас у большинства приложений реализована клиент-серверная архитректура с выполнением основных операций на сервере. Чтобы повысить скорость работы такой программы достаточно купить более мощный сервер или добавить память и заменить процессор на более производительный в существующем сервере
UFO just landed and posted this here
А что делать когда затраты на железо существенно превысят затраты на оплату труда разработчика?
Скорее довести жизнь пользователей до состояния, когда им самим придется идти и обновлять свое железо. (Добро пожаловать в современный GameDev)
GameDev это вообще отдельная песня. Честно, не хотел бы быть с этим связан
конечно. Железо покупаешь раз, а разработчику каждый месяц ЗП нужна.

Но сейчас железо всё чаще в аренду берут.

Ну как всегда — железо дешёвое когда платишь за него не ты.
Как правило, на идеальность программы пофиг. Не пофиг на цену сопровождения. После «дорогого» разработчика поддержка кода обходится дешевле, такой вот парадокс.
Не факт — ваш «дорогой» разработчик мог нагородить там столько уровней наследования и абстракций, что для поддержки может потребоваться не менее опытный чувак.
Более опытный. Причём платить ему за поддержку такого говна придётся очень много — потому что это хуже, чем быдлокод. В общем, это тот же быдлокод, но наоборот…
Сейчас дешевле купить новый процессор и докупить памяти

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


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

Чего там непонятного — взял в облаке инстанс побыстрее и все. Дел на 10 минут.

А если у вас железо из того же облака только в дц и при этом его не хватает ввиду требований к консистентности (БД, два шкафа будут медленнее одного....) :)

Дык есть Aurora Serverless, есть DynamoDB (транзакции объявили недавно) — деньги только плати и вперед! У MS и Google тоже такого добра есть
Правильно! Молодежь нужно не только тыкать харей в говнокод, но и учить, передавая им свой опыт. Но попадаются и не обучаемые, кот. как-то наплевать на качество кода (нет серьезного к этому отношения), и на то, что и от них в т.ч. зависит и весь проект (хоть они и являются только одним из мн. винтиков в машине проекта). Как правило, такие долго не задерживаются; но после них разгребать горы кода — далеко не увлекательное занятие. Сейчас я отошел от программирования (занимаюсь др. делами), но порой заглянешь в код молодняка и потом не можешь замечания выразить в культурной форме. А бывает, встречается говнокод в программных модулях 5- и более летней давности, и приходится тогда в срочном порядке разбираться в нем и исправлять, пока никто от этого кода не пострадал. Или же приходится исправлять вдруг обнаруженные пользователями ПО ошибки и исправлять их оперативно.
Я всегда считал, что отношение к работе и обучаемость важнее конкретных скиллов. Скилы — дело наживное (и быстро) если человека это действительно заботит, и если у него достаточно мозгов. Брать на работу мудаков нельзя, независимо от уровня скилла.
Дедовщина — зло. Наставничество — добро.
Поэтому «добрый дедушка» должен не только дрючить «духов», но и помогать им стать лучше.

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

И в результате наш пафосный автор, внезапно почувствовавший приступ раскаяния, сделал минимум 2 неправильные вещи.

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

Человек может быть сколько угодно «специалистом», но если он решит именно «дрючить» новичков, а не помогать им, у нас например он в короткие сроки вылетит как минимум с проекта с книжкой «Не работайте с мудаками» в подарок.

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

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

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

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


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

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

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

Т.е. ни первый, ни второй случай я не нахожу правильным. Поэтому и пишу, что «быть т.н. „дедушкой (наставником, ментором, итп)“ — сложно».

Спасибо, прочёл на одном дыхании, а вообще есть такая поговорка: «Задаешь вопрос на англоязычном форуме тебе отвечают, задаешь вопрос на израильском (еврейском) форуме тебе отвечают вопросом на вопрос, задаешь вопрос на русскоязычном форуме и тебе долго и нудно объясняют какой ты мудак. К своему стыду я и сам за собой замечал раздражительное отношение к ошибкам новичков на работе, а особенно если они старше меня или моего возраста, думал почему они за это время не добились того же чего и я. Сейчас стараюсь больше направлять, давать нужное направление, чтобы человек сам понял, ну и поправляю если есть необходимость.
Задаешь вопрос на англоязычном форуме тебе отвечают, задаешь вопрос на израильском (еврейском) форуме тебе отвечают вопросом на вопрос, задаешь вопрос на русскоязычном форуме и тебе долго и нудно объясняют какой ты мудак.


Это не так. Год назад был проведён следственный эксперимент: Взялся вопрос с тостера, к которому не было никаких негативных нареканий, но, объективно — он был глупым. Этот самый вопрос был переведён на англ. и запощен на стековерфлоу. Аккаунт тут же отхватил с пяток минусов, народ в комментах повозмущался, но ответ всё же был дан. На тостере, если не путаю, ответ тоже был дан, без какой-либо критики или унижений.

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

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

На en so так много вопросов, что количество некачественных вопросов многократно выше, чем на русском. Поэтому за плохой вопрос на русском so можно отхватить меньше минусов, чем на большом so — но вот я совершенно не уверен, что причина в менталитете, а не тупо в разнице аудиторий. Вот если бы на русском so было столько же вопросов и пользователей в те же самые часовые пояса — тогда бы ваш опыт чётко показал бы разницу менталитетов, а так… ну да, что-то померяли, но что?

И на обоих so я видел что и нормальные люди есть и чудаки на букву W, наверное распределение близко к нормальному. Хочешь увидеть лес и не увидеть за лесом деревья — всегда увидишь, то же самое и с всеми мифами про всех американцев или всех русских: можно смотреть на среднее по палате или видеть человека в тех людях с которыми ты лично взаимодействуешь.

PS Я кстати не лично про вас это писал, не воспринимайте на свой счёт.
да достаточно Реддит сравнить с любым русскоязычным форумом, чтобы все стало предельно ясно. Я сам давно уже стараюсь избегать русскоязычных форумов из-за этого (хабр не в счет)
Дело не в возмущениях и минусах. А в стиле этих возмущений. Когда тебя критикуют на англоязычном форуме, или даже посылают — это выглядит всегда так мило и не обидно, что в целом зло не множится и начинаешь думать чо это тебя критикуют. А на русскоязычных форумах если начинают критиковать, то это обычно настолько токсично, дерзко и фамильярно, что человек просто не может позволить себе начать слушать критику. Т.к. ему тогда придется признать что он говно. На тостер не ходил, но на других форумах это встречаю очень часто.

Я думаю что дело не в людях, а в самом языке. Английский как-то к ругани не располагает, а на русском токсичные обороты одни за одни цепляются и передаются в виде крылатых выражений. Типа «здрасьте… покрасьте», «и вам не хворать», «вашими молитвами», «как дела — не дождетесь», «красивая как кобыла сивая». И все в этом духе. Это все культивирует злобу на подкорке. И я заметил, что чем больше у человека подобных крылатых оборотов — тем он более злой и раздражительный в целом по жизни.
Всё в порядке в английском с руганью и унизительными интонациями (cм. Gunnery Sergeant Hartman) Просто ругань на чужом языке воспринимается несколько отстранённо, как бы через фильтр. А вот на родном языке слышна и понятна вся нюансировка — и она зачастую обиднее основного сообщения.
Посмотрел. В английском два слова — шит и фак. Самое оскорбительное что я встречал на англоязычном форуме это «you are full of shit». Человек задал вопрос, ему ответили, тут пришел альфа-комментатор и начал оскорблять всех, кто давал советы. Ему ответили таким образом. У нас бы в таком случае перешли на личность, сказали-бы «ты — кусок ...», а в английском сказала «в тебе есть ...». Что-то типа, не ты тупой, а только лишь твои вопросы, и то не все, а только этот. Нет этих токсичных обобщений. В русскоязычной среде же сразу пытаются тебе поставить диагноз, классифицировать тебя, ты тут кто — альфач или тупой. Эдакая борьба за иерархию на форуме.

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

Я конечно понимаю, что на самом деле отказывать Англ боссу и отказывать рус боссу — в принципе одинаково. В итоге уволят что там, что там, но в одном случае наорут еще, а во-втором нет. Т.е. результат и цель — совпадают, а вот комфорт несравненно не на русскоязычной стороне.

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

Я даже не знаю, как это комментировать.
У нас бы в таком случае перешли на личность, сказали-бы «ты — кусок ...»

Это очень зависит от того, где именно «у вас». Я переходы на «ты — кусок...» вообще никогда не встречал на профессионально ориентированных форумах. Они для начала сплошь модерируемые. Пренебрежение — да, подколки — да, но вот чтобы натурально куском г называть? За этим надо идти в клоаки вроде комментариев на Ютубе.
а в английском сказала «в тебе есть ...». Что-то типа, не ты тупой, а только лишь твои вопросы, и то не все, а только этот. Нет этих токсичных обобщений.

В первый раз сталкиваюсь со столь благостной интерпретацией словосочетания «you're full of shit». Вообще-то это означает «ты несёшь х*ню». Что-то мне подсказывает, что скажи вам подобное на русскоязычном форуме, вам это очень не понравится.
Если работаешь с русскоговорящими — то у них очень важно соблюдать такт подчиненного-начальника. Если у человека положение выше — он обязательно будет разговаривать с тобой иначе, ни каких Вы не будет

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

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

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

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

Между проф форумами и ютубом, есть еще всякие продуктовые форумы и форумы по интересам. И зачастую они модерируются с большим запозданием если вообще модерируются. Разве что автоматические фильтры стоят.

На профессиональных форумах люди вроде как из одной профессии. Отношения «начальник-подчиненный» тоже не про это.


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


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

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

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

Ну почему только у нас? Есть еще места, где «being competitive» является одной из базовых ценностей. По удивительному совпадению, в тех местах говорят на том самом языке, примеры ругани на котором вы приводите, как менее оскорбительные.
Какие выводы можно тут сделать, кроме «бывает по-всякому»?


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

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


Она не та-же, она становится той-же когда вы ее переводите на свой язык. А если не переводить?

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

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


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

Она не та-же, она становится той-же когда вы ее переводите на свой язык. А если не переводить?


Если не переводить, тогда постановка вопроса «там менее оскорбительно, чем у нас» смысла не имеет вообще, поскольку мы соорудили на пути «тамошней» ругани фильтр.

У них наоборот засилье «победили все, ни кто не проиграл» и прочие избегания соперничества в самом раннем возрасте.


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


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

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

Как можно понять «full of shit» не переводя, имея восприятие как у меня? Например изучая видеозаписи людей, говорящих эту фразу, изучая их мимику, и мимику людей вокруг.

Коллекция гифок.

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

Со схожими эмоциями в русском языке произносят оскорбления вида балабол, пустозвон, брехло.

Также есть связанные выражения типа load of shit, bullshit, no shit. Которые спокойно произносятся при детях, на телешоу, при родителях. И по токсичности близки к словам — брехня, чушь, не гони\без брехни.

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

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

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

Я вывожу не из двух, я вывожу из нескольких десятков случаев, которые суммарно имели место быть со мной и моими знакомыми\коллегами. Более того все млекопитающие, начинают строить зависимости с первого травматического опыта. Стоит один раз пнуть кошку — она сразу-же начинает опасаться всех, кто физически может ее пнуть. Стратегия конечно очень грубая, но действенная. Что-бы кошке понять, какие люди пнут, а какие не пнут, ей нужно стать намного сложнее, такой-же сложной как человек. Я вот и сам не всегда понимаю какие люди угроза, а какие нет. В итоге кошка решает эту проблему иначе — она ищет обстоятельства, где ее не пинают и придерживается их. Моя личная кошка например, меня на улице не узнает, бегает от меня, как будто я ей вред хочу причинить. А когда мы в квартире — она не боится ни меня, ни гостей. Она не пытается понять людей или различать их, ей достаточно различать где она, в доме или на улице. И эта кошка самая живучая их всех, что у меня были. Коты с другими стратегиями — умерли вне дома — попадали в передряги.

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

Если бы у меня запасного плана не было, я бы тогда конечно начал усложнять свою модель русскоговорящего босса, старался бы как-то по собеседованию понять какой он человек, и что от него ждать, НО запасной план есть, а мотивации усложняться — нет.
Из примеров видно, что эту фразу [you're full of shit] могут сказать друг другу близкие друзья в неформальной обстановке. В моем кругу это может быть «да ладно» или «не гони», а если кто-то скажет вариант вида «харе пи… деть», то скорее всего я с ним больше общаться не буду.

А ведь совсем недавно вы говорили, то она означает — «ты несёшь х*ню».

UFO just landed and posted this here
Ну и вот вам варианты трактовки (со слов автора) «не пи… ди»/«пи… шь», которые в кругу друзей — могут быть вполне себе норм, а обращенные в чужого да на форуме каком — вполне себе оскорбление.

Наши разногласия не в том, оскорбительна ли фраза. Она определённо груба.


Я хотел сказать, что значение фразы не нести чушь (в матерном эквиваленте "нести х*ню"), а врать (в матерном эквиваленте "пи… деть"). И я хотел отметить, что нашёл противоречие в комментариях u010602.


Увы, что эта фраза означает — «ты несёшь х*ню» говорил не u010602, а ctc, я банально перепутал авторов комментариев ((. Прошу прощения.

В первый раз сталкиваюсь со столь благостной интерпретацией словосоче тания «you're full of shit». Вообще-то это означает «ты несёшь х*ню».

Эта фраза означает — я тебе не верю. Ну или ты врешь. Матерный эквивалент в русском подберите сами. Совершенно точно эта фраза не означает — ты говоришь глупости.

A personal conjecture towards another informing them that you do not believe what they are saying. A way of telling someone that what they are telling you is a big steamy pile of smelly bullshit. Hence they would be «full of shit».
© urbandictionary.com

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

Вот отличная иллюстрация того, что ругательство на чужом языке не воспринимается как ругательство, и «you're full of shit» превращается в мозгу человека иной культуры в строгое «I don't believe you» или даже подчёркнуто вежливое «I think you're incorrect». Ругательная коннотация испарилась полностью.
Вот отличная иллюстрация того, что ругательство на чужом языке не воспринимается как ругательство, и «you're full of shit» превращается в мозгу человека иной культуры в строгое «I don't believe you»

Да? И чем конкретно это превращение проиллюстрировано? Наверное, моей просьбой подобрать матерный эквивалент самостоятельно.


Ругательная коннотация испарилась полностью.

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

<одеть фуражку капитана очевидность> poxvuibr вы возражаете не тому человеку, и вам за это кидают минусы </снять фуражку>
poxvuibr вы возражаете не тому человеку, и вам за это кидают минусы

Я возражаю тому человеку с мнением которого я не согласен. Тому самому, кто неправильно перевёл you're full of shit.

ОК, уточняю — вы возражаете не тому человеку, и получается так, что вы «возражаете» человеку, с мнением которого судя по всему согласны.
ctc: Вообще-то это означает «ты несёшь х*ню».
poxvuibr: Эта фраза означает… ты врешь.
ctc: what they are telling you is a big steamy pile of smelly bullshit
poxvuibr: Приятно, что вы самостоятельно нашли подтверждение моих слов.

Вообще-то он нашёл подтверждение *своих* слов, не сильно вникая в ваши.

Если вы даже сейчас не видите тут яркий случай miscommunication… ну тогда я зря потратил 15 минут моей жизни. Грустно…
Вообще-то он нашёл подтверждение своих слов, не сильно вникая в ваши.

Он привёл цитату из urbandictionary, которая подтверждает мои слова. Вот она, эта цитата.


A personal conjecture towards another informing them that you do not believe what they are saying.

ctc думал, что нашёл подтверждение своей позиции, а я указал ему, что на самом деле он нашёл подтверждение моей.

> В английском два слова — шит и фак.
Не там смотрите. Вот хороший словарь английского слэнга, недавно открыли бесплатный доступ:
greensdictofslang.com
Уж насколько «альтернативными» бывают вопросы на тостере, но не принято там посылать и указывать на личности. Даже за «сакральный» вопрос «как стать программистом/сис.админом?» максимальное оскорбление-«учитесь пользоваться поиском», но чаще раз за разом отвечают.
Где-то читал (и не ручаюсь за достоверность) про разницу в манере общения. У англоязычного человека есть посыл не лезть с непрошенными советами. Да, он замечает ошибки/тупость/наивность вопроса, но его научили не раздавать советы, которые от него не требовались. Если бы был запрос на это, он бы тоже все это подметил. И до кучи есть четкое понимание цели коммуникации. У нас же раздавать советы — это норма, а в одну коммуникацию впихивают все, включая психологическую помощь себе любимому за счет унижения собеседника.
Тут нужно сделать поправку… обычно когда говорят о манере общения, подразумевают средний класс и выше. И причина, как вы правильно заметили — чёткое понимание цели коммуникации. Я бы уточнил — чёткое понимание последствий «неправильной» коммуникации. Это плохо для бизнеса, плохо для репутации, плохо для долгосрочных отношений и связей. Воспитывается с детства, буквально с грудного возраста.
Зависит не только от тона но и от информации. Я дизайн критикую весьма токсично, с нецензурной лексикой и прочим. Но при этом даю аргументацию и идеи как можно улучшить ситуацию. Несмотря на токсичность отзыв почти всегда несет полезную информацию в отличие от «Вааау, какая классная работа, ты такой молодец». «Почти» потому что иногда работа настолько плоха что конкретику дать тяжело, тогда либо советую начать с нуля либо, под настроение, сам делаю работу. Некоторых мой подход обижает, некоторые с удовольствием пользуются. Впрочем это скорее хобби, поэтому работе не мешает.
Думаю, дело не в языке, а в современной культуре общения, берущей начало, очевидно, из бандитских субкультур девяностых. Распальцовки, альфа-самцовость, стремление возвыситься любой ценой над собеседником.

В ФИДО такого не было при том же самом языке.
Да ну, а курочка и яичко, а bocharoff-suxx? Или по нынешнем меркам это милый PC-talk? Или вы были в другом фидо? Кстати, «быть в другом» — универсальное решение на все времена.
Хм. Ни разу к моим глупым вопросам не придирались на стеке, более того, мой кривой английский исправляли прям в моём посте и объясняли что именно в нём было не так (без обиняков, по делу). Видимо, повезло мне.
Задайте тот же вопрос на sql.ru. Дерьмо, которое там польётся, ни одной лопатой не раскидать.
Не согласитесь с кем-нибудь на хабре. Ещё лучше — не согласитесь с компанией в блоге компании. Карма станет резко отрицательной.

Но есть и хорошие русскоязычные площадки. В том же ods.ai на LMGTFY пошлют только если ну совсем банальные вопросы пачками забрасывать.
Ещё лучше — не согласитесь с компанией в блоге компании. Карма станет резко отрицательной.
Да ладно? Сколько раз посты компаний чморили в их же собственных блогах.
Да ладно? Сколько раз посты компаний чморили в их же собственных блогах.

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

Поговорка особенно ярко раскрывается на форумах линуксоидов. На отечественных ресурсах, куда меня заводил поисковик, ни разу не нашел решения, хотя мой запрос совпадал с обсуждаемой темой на 80-100%. 2-5 страниц «советов» в стиле RTFM, «стыдно такое не знать», ссылками на маны (в половине случаев вообще не на те).
Создается впечатление, что там пасутся либо сборища пафосных мудаков, либо пафосных ничего_не_знающих_по_теме мудаков, задача которых — что-нибудь кукарекнуть в форум.

У буржуев же все чинно — спросил->ответили, еще и рассказали, что в твоем случае лучше вообще вот так, а не так.

С программерскими ресурсами, кстати, дела получше — дельные советы встречаются чаще, пафоса на порядки меньше (но встречается).
Однако, англоязычный сегмент разумеется больше (опять же на порядки), поэтому шанс найти то, что нужно (на английском), стремится к 100%.
Нужно понимать, что некоторые интернет-ресурсы предназначены не для бесплатных ответов на бесплатные вопросы, а исключительно для развлечения. Регистрируйтесь на форуме, угорайте над тупыми вопросами новичков, рассказывайте им про преимущества Gentoo, в которой вы никогда не видели таких проблем — это вполне себе способ весело провести время)
UFO just landed and posted this here
общаться в клоповниках, вроде того же LOR, где всем всё должны и все, что не вписывается в их мировоззрение — «ненужно».

Ну конечно, все что вам лично не нравится так сразу клоповник. Это клоповник имеет историю и почти любой профессионал в этой области возрастом за 30 имеет там аккаунт. Просто мир меняется. Для меня, как человека, который линукс не скачивал, а заказывал по почте, люди не способные прочитать man как минимум не понятны, а уж привычка сначала задать вопрос, а потом думать неприятна. А "ненужно" это местный мем, что-то типа "здрасте в этом чате".

UFO just landed and posted this here
Дешевый дофамин за счет самоутверждения?
При этом отвечать на вопросы по той же Gentoo совершенно не обязательно! Достаточно ответить RTFM LMD и это, как будто, автоматом возвышает комментатора над задающим вопрос.

Спасибо, не надо!
Вот честно вам скажу, я давным-давно вырос из детсадовского возраста, когда такое поведение кажется веселым и занимательным.
И мне совсем не радостно, когда аудитория двача селится на технических ресурсах (да и вообще на любых, хоть форумов по кулинарии), превращая их в пристанище пафосных мудаков с «ЧСВ овер 9к».
Вот честно вам скажу, я давным-давно вырос
Ой, здесь нет никаких проблем. Закрываете вкладку браузера, и больше её не открываете. В интернетах есть много других интересных мест.
портить жизнь другим людям для развлечения — это как раз то, о чем говорится в статье.

типа хаха новичок сам должен будет хлебнуть красных глаз с гентой, пока не поймёт, что это не его или он не тянет. А смысл? Вместо того, чтобы сказать человеку, как проще и быстрее добиться результата, его посылают огребать головняк ради радости посылающих. Это и есть дедовщина и компенсация собственной неуверенности.
Во-во — еще и книжку посоветуют и курсы и адрес дадут, чтобы писал если проблемы возникнут.
старый миф из серии «у нас тут всё плохо, а там молочные реки с кисельным берегами». Распространяют его преимущественно те, кто не общается на иностранных форумах.
Мне кажется этим и отличается действительно профессионал, от вышибателя бабла и эгоКодера. Когда работал в одном месте был действительно талантливый у нас тим-лид (земля ему пухом, разбился на машине ) — так вот особенность работы с ним заключалась в том, что он всегда поможет/объяснит и без всякого пафоса и высокомерности (тогда правда у нас не было код-ревью и проичх современных штук). И все вокруг его любили и уважали. Никто даже не претендовал на его место. Потому что понимали, насколько он компетентный и насколько готов помочь тебе в трудную минуту. После, когда он разбился — было много на его местах… в итоге команда рухнула. Больше я таких людей не встречал. И очень жаль. С такими я готов был бы работать на любой позиции.

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

Да ладно — «индустрия»… Если в этом тексте заменить «наша команда» на «наша рота», а «этот парень» на «этот салабон», то получится жизнеописание солдата срочной службы, от духа до дембеля.
Тем не менее статья классная, обожаю такие истории переосмысливания своего пути.
Моя личность сегодня — это симптом не моей болезни. Болеет индустрия, по крайней мере в РФ. Наш менталитет зациклился на культе силы и превосходства. И вот что нужно сделать: надо перестать быть такими. Это на самом деле очень просто.

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


Так какова на самом деле реальность? :)

Тот человек хотел привнести законы дикого мира в социум разработчиков. Если делать по его, то в команде будет очень неприятная атмосфера.
Он хотел привнести законы 15-20 летней давности в этой же сфере всего лишь
15-20 лет назад мы, разрабы, нормально общались, без всякой, извините за мой французский, бычки брутальности и доминирования.
Да, могли испить с коллегами пива на рабочем месте вечером. Да, было веселее, тимбилдинг был почти каждый день. Но жесткости никогда не было, всегда было уважительное отношение друг к другу. Засранцы долго не задерживались.
Каждый увидел во вчерашней статье то, что захотел увидеть.
Я никакой жестокости и тем паче доминирования в тексте (призывы к ним) не увидел.
Реальность такова, что, например, если на условном «Западе» агрессивный стиль общения Линуса Торвальдса считается неприемлемым, то в условной России, судя по опросу — вполне приемлемым.
А вчерашняя статья скорее всего была ответом на эту, точнее на ту ее часть, где культуре разработки в условной России ставилась в упрек ее токсичность.
Да. Достаточно почитать комменты в ютубе. Если ролик ориентирован на русскоязычную аудиторию, то что бы ты не снимал — в комментариях обязательно проедутся и по голосу, и по внешнему виду, и по умению держать камеру, обязательно упомянут что другая какая-нибудь штука гораздо лучше и вообще чо за говно зачем я сюда зашёл. Но всё меняется, если тот же самый ролик будет представлен англоязычной аудитории. Полное отсутствие какого-либо негатива и претензий в стиле «эй ты автор а поясни-ка мне». Чувак из США с гораздо большей вероятностью скажет тебе «спасибо», нежели Вася из великой и необъятной.
Я бы сказал, наше общество более коммуникативно-наивное.
По некоторому опыту общения с англичанами, французами и немцами — могу сказать, что наши люди часто принимают вежливость за хорошее отношение.
Претензия в стиле «эй ты автор а поясни-ка мне», означает, что читающий данного автора видит, что автор мог бы лучше — но не постарался, или о чем-то важном умолчал и… наш читающий не считает нужным это скрывать.
Где та тонкая грань между вежливостью и лицемерием?
А нету ее. Тут каждый для себя выбирает сам. Лично мне больше по душе лицемерная улыбка, чем искреннее хамство.
читающий данного автора видит, что автор мог бы лучше — но не постарался
Да, это тоже достаточно характерная черта русскоязычных комментаторов: уверенность в том, что автор тебе чем-то должен, если пользуешься результатами его труда. Да, не ты должен, а именно автор, и именно тебе. Не постарался, умолчал, вообще какую-то фигню непонятную рассказывает непонятно зачем… К ногтю оборзевшую шоферню!
ИМХО причина в нашей более общинной психологии, т.е. все всем должны по умолчанию, так сказать.
Как правильно некоторые заметили, у нас вежливость, скорее, принимают за слабость.
Вы видимо мало ютуба на английском смотрите. Прочтите комменты под любым роликом, косвенно затрагивающим рассовые отличия, партии, феминизм или любые новости.
Вот только что случайно наткнулся на пример. Видео Traditional turf cutting (можете найти на ютубе) — два мужика под музыку торф нарезают лопатой.

Комментарий:
Thats my people right there exercising their white privelege

1200 лайков, при этом у видео 7100 лайков и 1900 дизлайков.

Сам по себе комментарий очень триггерит, что можно увидеть по ответам на него.
— it's easy enough to «divine» for us to call you stupid
— Libera good on ya. Now go fuck yourself.
— Thanks for the shitty advice. Now you too, can go fuck yourself.
— You are a shit stirrer. One of the easiest things to do.
— The English invaded after Romanising the island with that sleeper cell cunt Patrizio so called saint. Then once they turned the people into sheep they literally raped and pillaged.
— You're not doing shit, and piggy backing off their hard work, you white lame
— go fuck a dog you pansexual freak
— I am so sick of you fucking scumbags that twist everything into a reason for white people being the victim Go fuck yourself you fucking pussy, you turned white men into lambs. Bitchboy.

Там дальше еще есть, лень копировать.
Извините, я не очень в английском, о чём здесь речь? Нигры ругаются на шутку белого человека?
Все эти треды похожи один на другой. Кто-нибудь оставляет комментарий в духе «Ну [социальная группа] — в своем репертуаре», потом следует пара комментов типа: «Говорить в снисходительном тоне о людях, которых вы даже не знаете, на одном лишь основании, что они обладают особенностью [X] — недопустимо», потом несколько сообщений типа «Оставьте свое мнение при себе» и далее все это быстро скатывается в простыню из 200 сообщений с посыланием в разные места, и деградацией аргументации до «сам дурак».
Инстаграмм, кстати, такой же, если пост не про чизкейк.
Может как раз дело в том, что это инет? И можно дать выход реальным эмоциям?
Этот IT прямо какой-то беспросветный ад, наполненный злобой, ненавистью и страхом…

Но если серьезно, я думаю что ощущения человека в основном зависят от его же самого. Если кто-то рассказывает о кознях в коллективе, то как правило смена коллектива на это не влияет, и человек продолжает видеть их везде, где бы не работал. Другой человек, наоборот, будет видеть только дружелюбное к себе отношение. Хотя исключения, конечно, бывают.
Т.к. у автора преобладает негатив, то ему лучше избегать любого коллектива, и работать в одиночку, например фрилансером
Этот IT прямо какой-то беспросветный ад, наполненный злобой, ненавистью и страхом…

Ну так люди, которые большую часть жизни провели в статусе мальчиков для битья, дорвались до общества, в котором они не только таковыми не являются, но и могут быть ориентиром и примером для подражания. Вот тут-то все говно наружу и вылазит. Уверенные же в себе люди, которых такие проблемы в юности не затронули, работают себе работу спокойно и без какой-либо злобы наставляют нижестоящих в пищевой цепи.
UFO just landed and posted this here
Написано хорошо и мысли очень здравые. Но разве вы не обманули человека, приславшего вам код на ревью? Разве не лишили его возможности стать лучше? Нет ли эгоцентризма и в желании быть хорошим, не таким как все эти злодеи вокруг?

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

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

Это смотря какую цель преследовать. Если вы обучаетесь — наставник должен умеренно окунать вас лицом в говнокод. Если вы работаете — в первую очередь нужно смотреть на умеренно ли код решает проблему, а не на "он не совпадает с тем, как написал бы я, а вот тут можно было было бы упростить" и т.д.
Работа + обучение — это менторство, на которое не всегда хватает бюджета и времени в компаниях.


Как выше сказали, нужно ставить посильные задачи, если ты джун, то не нужно ставить сложную задачу и потом разносить решение (если это не обучение конечно). Джун решил проблему — джун молодец. И не важно, что на 70% эффективности, нужно будет на 100 — задачу отдадут синьору.

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

Обучение — это объяснение почему именно плохой код плох. А использование/не использование «макания» при этом — вопрос эффективности подобного метода воспитания для конкретного подопечного, тут, видимо, преподавательский талант нужен, чтобы понять, когда «макнуть» полезно, а когда — наоборот.
вот-вот, и этот «крутой» программист почему-то уверен, что все, присылающие ему на ревью код, автоматически хуже него — он что, в лабе епама работает? Других сеньоров рядом нет?

И еще задело — «он не совпадает с тем, как написал бы я» как будто у задачи существует единственное решение.

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

у чувака задача — построить первый этаж здания. Он делает стены из гипсокартона, отчитывается о скорости решения, о том, что стены получились ровными и их не надо много штукатурить. С точки зрения заказчика или менеджера — все ок, он возможно даже получает премию за достаточно хорошо решенную задачу, и переходит на новую фичу. А дальше сокомандникам, которым надо построить сверху еще три этажа, приходится либо сносить его постройку (и получать шишки сразу за потраченное «впустую, без ценности для бизнеса» время), либо делать кучу подпорок (и получать шишки за баги позже) — т.е. команда задачу решит недостаточно хорошо. В итоге:
— истинный виновник провала награжден
— невиновные сокомандики наказана
— тимлид, попытавшийся притормозить код виновника, получает общественное осуждение за это здесь, получает от менеджера, прочитавшего про токсичных ревьюеров и узнавшего его в них, получает вместе с командой за затягивание фичи.
Аналогии прекрасны тем, что их можно придумывать любые.
Если просмотрите ветку комментариев, то там несколько раз упоминается, что если задача решена достаточно хорошо. Пересмотрите, ваша аналогия не подходит
в моей аналогии задача человека решена достаточно хорошо. Именно поэтому я против подхода, заключающегося в измерении результатов работы в рамках одной задачи. Задачу ставит заказчик, для которого понятия качество (расширяемость, чистота, интуитивность и прочие параметры) кода — вне его компетенции, и принимает результат без учета этого критерия, по результатам тестирования. И заказчика нельзя в этом винить. А вот человека, умышленно срезающего углы в надежде на то, что фиксить результат не ему — можно и нужно.

Аналогии можно придумывать.


Давайте ближе к делу — примеры задач, ревью, последствий. Хоть будет что обсуждать.

Он подбросил человеку информацию к размышлению, и дал возможность расти, не травмируя его эго. Если вы растите цветок, его надо поливать, а не тащить вверх за стебель удавкой)
Я понимаю, что все люди очень разные, но в голове всё равно не укладывается аналогия между цветком и техническим специалистом. Что касается травмирования, например меня невозможно травмировать словами, и одновременно я всегда лучше понимал и запоминал то, что далось мне с трудом и через болезненные ошибки. Уверен, я не один такой. Без сурового наставничества какой-то процент джунов просто потеряет возможность сформироваться как специалист.
Давайте я более суровый вариант аналогии предложу?

Вариант 1: сказать джуну, что он тупой ишак и код у него говно.
Вариант 2: сказать джуну то же самое, но пояснить, почему вот этот кусок — говно, и показать как правильно.

В каком случае специалист вырастет быстрее и лучше?

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

Третий вариант забыли: вообще не сказать джуну про проблему, ласково ему улыбнуться, погладить по голове и сказать, что он самый умный и хороший в мире.
Нет, я написал именно то, что хотел. Третий вариант вы придумали сами. Он не годится для воспитания специалиста, разве что только для какого-нибудь умственно неполноценного.
Третий вариант, в его худшем варианте, выбрал автор статьи: сказал «поправить пару мелочей». Заставил править мелочи, несмотря на то, что и код, и исправления улетят на помойку, а о существенных ошибках умолчал.
При варианте номер 3: пояснить джуну, почему вот этот кусок — говно, и показать как правильно.
А за ишака может (и должно) прилететь в лицо.
Я в принципе не понимаю, как одни коллеги могут себе позволять негативно-личностные фразы в отношении других, для меня это что-то за гранью.
Вы как-то странно реагируете на абстрактные вещи.

Если моя мысль непонятна, то разверну ее:

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

Поэтому вариантов в любом случае два — просто сказать, что «код говно», или показать, почему он говно и как его лучше исправить.

Если под «комментатором выше» вы имели ввиду меня, то вы ошиблись, я не предлагал никого «дрочить». Просто предлагаю не замалчивать ошибки, чтобы не ранить нежных чувств. Предпочитаю, слышать и говорить правду.
В обоих вариантах сказавший бы вылетел с работы в любой нормальной компании в течение часа после того, как это станет известно руководству и HR (а это станет известно непременно и очень быстро).
нет. Либо «нормальных» по вашему компаний в мире гораздо меньше, чем вам кажется.
Руководство скажет: «Ну-ка объяснись!» Разработчик расскажет, как всё было, конфликт утрясётся, и в будущем подобная ерунда не будет приводить к конфликту.
А HR-ы всё это время будут сидеть и не отсвечивать. Потому что недопонимания между разработчиками — это не их собачье дело.
В чем-то с вами соглашусь и понимаю… себя не могу назвать тем, кто «с пол-оборота въезжает в тему». По внутренней шкале ставлю себя на 2-3 балла из 10 по «когнитивности». В итоге, по логике вещей, программист из меня не должен был получиться вообще и произошло это как через «огонь-воду-медные-трубы», так и «не благодаря, а вопреки».
У меня на голени и теперь еще виден след от зубов доктора Друсса; он укусил меня отнюдь не в припадке бешенства, а для того, чтобы мне лучше врезалась в память его теория спинов (иначе, закрутов) — не левых и не правых, но третьих. И точно, он своего добился: я запомнил все досконально.

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

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

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

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

А вы занимаетесь спортом для собственного удовольствия или выступаете за деньги? И зависят ли деньги и работа других людей от того, насколько хорошо вы выступаете?

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

В России пока только такой выбор. Или вы**ть за косяк или "танцевать на цыпочках вокруг его эго". Критика в позитивном ключе пока воспринимается как сумасшествие с запада, типа геев.


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

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

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

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

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


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

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

Так что теперь с ним делать? Что ему сказать? Как автор «всё хорошо, тут пара замечаний» и потом самому молча поправить? Или ещё как-то? Как всё-таки дать эту позитивную обратную связь, если код плохой? Я понимаю, как дать позитивную обратную связь, если код был достаточно хороший — похвалить, отметить улучшения по сравнению с прошлыми задачами.
А что, правда не понятно что-ли? Не очевидно как указать на ошибку, не переходя на личности и не распылясь саркастическими пожеланиями вон из професии?
«В 143 строке ошибка, это работает не так а вот этак, поэтому правильно будет вот так вот» — хороший, полезный, нейтральный по тону фидбек, которого ждут от код ревьюера.
«Это тебя в твоей шараге научили такую хрень как в 143 строке писать? Это надо совсем нихера не понимать, чтобы такую херню придумать. Выкинь и переделай, быдлокодер.» — вредный кусок зла, не несущий никакой пользы никому, и преднозначенный только чтобы почесать эго.
Так я обеими руками за объективность, нейтральный тон и вежливость. А переход на личности вообще не допустим в обсуждении рабочих вопросов.

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

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

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

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

Как, чёрт побери, это сделать? «Молодец, что ошибся»? Хвалить надо, конечно. Я никогда не писал, что не надо. За удачные решения, за хороший код. Как и главное зачем хвалить за ошибку?

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

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

Но почему вы считаете внятное корректное указание на ошибку «тыканьем носом в лужу»? Вы считает, что нельзя сообщить об ошибке, как-то при этом не обозвав и не унизив человека?

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

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

Но если человека наняли разработчиком — значит, как минимум он или она достиг 18 лет. Он обязан соблюдать законы, платить налоги, имеет полное право распоряжаться своей жизнью, право защищать себя и своих близких с оружием в руках в случае необходимости. Может быть, он всё же уже способен воспринять вежливое и корректное сообщение о своей ошибке, не получив при этом тяжёлых психологических травм?
Вы мне приписываете что-то чего я не говорил. Есть внятное корректное указание на ошибку, а есть тыканье в лужу носом и прочее доминирование. И часто люди в позиции силы эти две вещи не разбирают, и считают «ртфм, нуб» внятным комментом на кодревью.
А при передаче знаний очень важно не выделываться и не вещать с олимпа дуракам, а просто рассказывать. И если чтобы этого добиться, есть вариант приободрить получающего, то лучше это сделать, от этого всем станет хорошо.
Еще раз: код ревью и предполагает вежливые корректные исправления ошибок, и очень важно оставаться в рамках вежливой корректности, и если уж выходить за их рамки, то только в положительную сторону, где начинается разговор двух приятелей о перепитиях сложного языка, и ни в коем случае не в ту, где строгий учитель отчитывает нерадивого разгильдяя.
Автор статьи предлагает скрывать ошибки и потом по-тихому их исправлять, что собственно меня так сильно и возмутило.
Очень хорошо работать с американцами из Калифорнии. Они мастера позитивного фидбека.
На ошибку обычно получаешь комментарий типа «В целом код отличный, хорошая работа, но вот в этом месте мне кажется можно было решить по другому: <описание проблемы и решения>».
На Восточном побережье они, правда, немного грубее и прямее.
Мне бы пожалуй такой подход не понравился: во-первых, ощущается некоторый обман — код отличный, но надо было делать по-другому. Какой же он тогда отличный? Во-вторых, если хвалят всегда, независимо от результата, даже это обесценивает похвалу. Гораздо приятнее, если тебя хвалит человек, который не стесняется выражаться прямо. Но, разумеется, дело вкуса.
Это не так. Есть такие люди, которым в целом оценивание кажется грубым, и эта вот «похвала того, кто всех ругает», тогда воспринимается как «ты что думаешь я за твою похвалу тут стараюсь? кто ты такой что-бы оценивать?» Потому эти в целом позитивные ни чего особо не значащие оценки воспринимают нейтрально с легким налетом позитива. А реальная похвала выражается в денежном эквиваленте, если я такой хороший — повысь мне зарплату или дай премию. Это даст мне возможность работать меньше, и больше времени проводить с семьей, за что я буду реально благодарен. А этот пустой треп, от такого-же как и ты, которые зачастую просто устроился в это место работы на пару лет раньше — воспринимаются смешно и наигранно.

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

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

Другими словами такая схема лучше подходит для людей с внутренним локус контролем, и стимулирует его вырабатывать. А люди с внешним локс контролем в такой среде вообще работать не могут, они тупо сидят и пинают, неделю вторую, месяц. Потом или сами уходят или их мило так увольняют — мол не сработались, бывает.
«В целом код отличный» == 90% работы сделаны как надо, на совесть, а вот тут 10% — не совсем годится.

Гораздо приятнее, если тебя хвалит человек, который не стесняется выражаться прямо


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

Так может просто хвалить особо не за что.

UFO just landed and posted this here

Отличные примеры.
Можно пойти и чуть дальше "я думаю, что это работает вот так, а не так. Поэтому строка 143 выдаст результат, отличный от ожидаемого. Надо нам проверить это поведение по спеке, документации. А еще лучше, добавить тест на этот кейс".
Ревьюер может ведь и ошибаться...

Много плохого кода может быть сильно разных уровней.
Если мне не нравятся локальные переменные final в java, объявленные так без необходимости (есть редкие случаи, когда иначе — нельзя), то для меня при первом столкновении с таким стилем кодирования это было натурально плохим кодом. При этом на проекте не было чёткого правила по этому поводу. И вот это для меня вроде как плохой код (визуальный шум и всё такое… а на java и без того сильно ругаются за многословность). Но требовать его изменить на код-ревью — я не буду (если нет строгих правил кодирования по этому пункту).
А бывают ошибки, которые с вероятностью 50% дают NPE | OOO или ещё какую-нибудь радость… там я, естественно, молчать не стану, но сперва постараюсь подать инфу так, чтобы человек сам допёр, что же получилось, и только если не получилось — буду говорить прямым текстом о проблеме.

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

В вашем ответе есть конструктивное предложение — «подать инфу так, чтобы человек сам допёр». Это уже по сути менторство — очень круто, но не всегда на это может быть время.

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

Так писать плохо, вот почему: <в двух словах или ссылкой>. Лучше/правильнее писать вот так: <...>.
Нет, это обычная вежливая и объективная критика, без всякого лишнего позитива. То, от чего автор статьи предлагает отказаться и по-тихому править чужие ошибки самому.
Иногда можно и самому поправить и сказать — посмотри как я сделал и обсудим.
Это тоже вариант объективной критики, плюс менторство.

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


Не про IT, но про РФ (скорее весь бывший СССР).

Зачем тыкать? Это действительно лишнее. Просто объективно сказать «вот тут и тут — плохо; тут — ничего, но можно лучше; тут — хорошо». Автор в конце статьи призывает говорить, что всё хорошо, а потом самому молча исправлять. И очень гордится таким подходом.
Ваша формулировка мне вполне норм (при условии что вы таки расписываете почему плохо и почему хорошо), грубой не выглядит.
Разве что я обычно стараюсь написать в начале что хорошо (просто потому что это тоже обратная связь. если я напишу только про одну строчку кода, которая плоха, то неясно — остальное ок или я остальное даже не смотрел), а там где плохо — указывать почему и при каких условиях я считаю это плохим. Редко бывает 100% объективно плохо (goto и дублирование могут быть уместными в некоторых местах и для определенных условий), я могу ошибиться (а то напишу я резко «тут неправильно и точка», а мне распишут почему правильно — и как-то уже некрасиво получается) или не знать всего контекста.
Там выше уже говорили про отрицательный отбор. Для медицины кажется получится особо красочно.

Чувак оставшийся на месте где его 8 лет макали в дерьмо психопат практически наверняка. Дальше вопрос: ему сейчас карьерно выгоднее записать +1 успешную операцию на баланс или интереснее посмотреть что будет если вот эти пару нервов перерезать.
Но почему все считают объективную критику «маканием в дерьмо», «тыканьем носом в лужу»(из другого комментария) и прочими видами психологического насилия?

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

Автор в конце статьи предлагает скрывать ошибки и потом по-тихому исправлять их самому. Вы хотели бы попасть к врачу, прошедшему такое обучение?
Если так то всё норм. Но тогда я не понял что Вам в коменте начала ветки не понравилось.

> Ничего страшного, если код плохой, я и сам могу его поправить.
плохой код != содержит ошибки
Мне не понравилось, что автор предлагает скрывать ошибки, не давая честной обратной связи, а потом по-тихому их исправлять. Очень гордится таким подходом, сравнивает с айкидо.

> плохой код != содержит ошибки

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


Конкретно в такой формулировке — почему нет. Потому что «мягко и щадяще» !== «не критикуя за серьёзные ошибки». Я указал в своем комментарии, что замалчивание ошибок, как это сделал автор — не выход.

Я точно не хотел бы оперироваться у хирурга (читай — оказаться в полной его власти), которого шпыняли за малейшую провинность и на котором вымещали злость коллеги постарше.
Тогда вам не у кого оперироваться. Хирургов сначала люто тиранят в ВУЗе, а потом в интернатуре их ждёт натуральная дедовщина.
Тут я действительно не в курсе. Могу ошибаться.
UFO just landed and posted this here
Там где карьера заканчивается в 30 лет из-за травм и превозмогания?

Вообще карьера спортсмена\певца\художника отличается от карьеры программиста.
UFO just landed and posted this here
Если я вдруг решу заняться спортивными достижениями, ну то есть не знаю там, решу участвовать в марафонах или тягать штангу на соревнованиях, то безусловно я первый же попрошу тренера быть посуровее и потребовательнее.
Но я скорее описываю ситуацию когда новичок только пришел в сферу А (спорт, IT — не суть). Можно сразу начать «глумиться» над новичком (ахаха, салабон, не знает нифига), а можно быть более профессиональным и научить даже самого-пресамого новичка.

облизывать

Быть вежливым !== угождать. Просто сказать на 100500 попытку выполнить упражнение «Бывает. Давай еще немного упростим, чтобы технику отработать, а потом нагрузим обратно» вместо «Полная херня, ну сколько можно уже одно и тоже».

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

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

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

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

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

UFO just landed and posted this here

Могу привести пример проекта, откуда из одной команды в другую ноги унесли 2 спеца, а третий и просто ушел, из-за вот такого отношения, что кто-то "мальчик-даун", но мы сейчас его на ревью поправим под свои стандарты.
С чего это стало нормальным? Вроде задача продукт сделать, а не выделать конченных и не конченных, достойных своего уровня?

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

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

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


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

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

Зачем тогда вообще code review нужен?
Понятно, что с людьми вежливо нужно обращаться и особенно вежливо с теми, кто ниже тебя по рангу.
Но ИМХО, посыл статьи кто-то может понять как призыв отменить code review вообще, как токсичный и обидный. Как вырванные из контекста слова Кнута про premature optimization, которые зачастую являются индульгенцией не думать наперед.
Зачем тогда вообще code review нужен?

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

Но это же даже если абстрагироваться, лишь оперативно-тактический уровень.
А как же стратегия? Как он будет обучаться без обратной связи?
А если не абстрагироваться, то у знающего и своя работа есть, а ЗП он только за себя получает.
> Как он будет обучаться без обратной связи?
Читать чужой код, следить за PR в компоненты в которых что-то менял. Получать чужой код на ревью.

> знающего и своя работа есть, а ЗП он только за себя получает
Значет code review не нужен в этом проекте.
И ради чего все это? Чтобы джуниору было комфортно? Так никто и не говорит, что нужно его оскорблять. В чем проблема в спокойном тоне указать на явные проблемы в коде и пояснить по всем вопросам?

> Получать чужой код на ревью.

И что это будет за ревью, если он свой код писать не умеет?
Чтобы джуниору было комфортно?

А что, это плохо?
Но, конечно, фидбэк важен любой, отрицательный и положительный. И я бы сказал, что важен одинаково.
> А что, это плохо?
ИМХО само по себе нет, если не возведено в абсолют («лучше сам перепишу, только бы не обидеть»).

Про фидбэк с вами согласен.
Типа первый здравый камент с начала срача. Позитивно подкрепляю!

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

Ну или прочитал исправленый код, и понял где был не прав. Всякое ж бывает

Такие ребята в новичках долго не задерживаются :)

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

Всё так. Главное не перегибать. Ни в сторону "ой обижу" ни в сторону "я его уничтожу". Вежливо, по делу, с аргументами.

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

Значит посыл не донесён до аудитории.

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

Но этого никогда не случалось. Почему? Потому что потом беру стул и построчно объясняю, где, как, и главное, почему разраб прокололся. Помогает? Не совсем. Кто-то просто механически поправит, кто-то сядет и перепишет так, что потом сияет — мол поймай меня теперь. К сожалению, первых сильно больше половины. Зато вторые уже через год бодро отлавливают баги в моем коде. Чем я очень горжусь (не багами, нет), а людьми. Что для них, как и для меня, написание хорошего кода не невозможная страшная вещь, а вдумчивая кропотливая работа над самим собой.
  1. Нельзя пропускать коммиты если они содержут явные ошибки (Errors). Напр.: Забыл обернуть в транзакцию БД.
  2. Остальные замечания сделать рекомендательными (Warnings). Удобно делать их вопросами. Напр.:
    Почему были использованны двойные кавчки вместо одинарных?. По факту это вкусовщина. Если инициатор коммита задумался после вашей рекомендации, то он скорее поправит код. Возможно это было осознаным решением. А возможно вам нужно забить на это замечание.
  3. Ну и пулреквесты должны быть вменяемого объема, чтобы проверяющий их смог переварить. С 1000 строк я вероятнее отклонил PR.
UFO just landed and posted this here
Ну а почему бы и не разбить?
feature/epic_new_entity => feature/epic
UFO just landed and posted this here

Ну тут все зависит от того какое у вас flow, какие инструменты и самое главное как вы договорились.


Я смотрю на это так: PR это запрос на code review. Он должен быть удобным для code review. Мы используем гитхаб. Для большой фичи создается ветка 'feature/epic'. В эту ветку идут небольшие PR, из малых веток 'feature/epic_new_entity' поскольку они небольшие их удобно смотреть и проверять. В малые ветки коммиты используются как сохранения. После того как ветка 'feature/epic' стала осмысленной, мы ее обновляем по мастеру, сквошим, ее протестировали автотестами и руками. После этого делаем PR в мастер.


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


Малые ветки позволяют прогерам сохранятся также часто, как они жмут quick save в своей любимой игре.


PR в эпики делет code review удобным.

UFO just landed and posted this here

То есть вы предлагаете отдавать на ревью заведомо нерабочий код?

Ну вот у меня на 500 файлов был PR в прошлом году, миграция с mongodriver на версию 2.0. Поменялись все апишки, в итоге все запросы которые шли в монгу пришлось переписывать. Как это предлагается разбивать? Нельзя переписать часть запросов, а часть оставить старыми. Либо разбивать проект на несколько, и часть тягать отсюда, часть оттуда. Но тут возникает проблема с двумя версиями одной либы, несовместимые друг с другом…

Если эта энтити — генеренная (плюс генеренные контроллеры и т.п.), то да, без проблем может.


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


А уж если новичок фичу такого размера запилил, то что-то, возможно, идёт не так.

Я конечно не исключаю, что и такое может быть и по другому никак. Но обычно стоит разделить такую Entity на структуру, пару тройку другую сервисных объектов, интеракторов, фабрик.
UFO just landed and posted this here
У вас Entity это только структура или еще и БЛ?
UFO just landed and posted this here
UFO just landed and posted this here
Правда я в таких случаях делаю для работы генератора отдельный коммит.

+1.

> entity вполне может быть и поболе 1000 строк

Это значит что техлиду надо самому подкачаться, да книжки почитать. А не гнуть пальцы в review.
Остальные замечания сделать рекомендательными (Warnings). Удобно делать их вопросами. Напр.:
Почему были использованны двойные кавчки вместо одинарных?.. По факту это вкусовщина.

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

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

Надеюсь, это шуточный пример )

Не всегда.
Я могу представить ситуацию, в которой после вопроса «почему были использованы двойные кавычки вместо одинарных?» человек начнет писать вместо

$x = "{$name}'s car is {$color}"

такое:
$x = $name . '\'s car is ' . $color; 


А если кавычек не одна, а 5 или это какая-нибудь регулярка (мне лень придумывать в полпятого пример ;) ) — код превратится в нечитаемый ужас.

Почему были использованы двойные кавычки вместо одинарных?

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

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

Цель вопроса не деморализовать, а заставить задуматься.


  1. Человек не знает, что одинарные работают быстрее, поэтому они предпочтительнее, если нет обработки переменных. Он ищет информацию об этом, или спрашивает у проверящего. И вносит изменения в свой код.
  2. Человек знает об этом, но данный код представляет из себя кладбище домашних животных. Время на рефакторинг нет. И кавчки не решат ни чего. Ну и смысл тратить время на исправление?
  3. У вас идеальный код. Везде одинарные кавычки, все по гайдлайну. Вы объяснили человеку почему это так, и как это важно для вас лично. Человек занимается умышленным вредительством, осознано. Кастрируйте этого тупорылого #@удака, пока он весь мир не заразил.
1. Человек ищет информацию, и находит что одинарные кавычки не работают быстрее, если нет обработки переменных (если брать PHP). И в чём смысл комментария в этом случае? Заставить задуматься о квалификации своего тимлида?

2. В этом случае тем более не имеет смысла этот вопрос — никакого бонуса в изменении кавычек не будет.

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

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

А вопрос только собьет с толку начинающего.
Не соглашусь. Если рассматривать наш диалог, именно вопрос привел к тому, что мы выяснили:
— Мы кодим на php
— Для php кавычки не влияют на производительность.
Теперь нам только осталось договориться о том, какие кавычки использовать. И вероятнее мы будем исходить из того, какие кавычки уже использовались в остальном коде.
В данном случае использовать\не использовать одинарыне\двойные кавычки становится осознаным. Это гораздо лучше чем «У нас принято везде писать одинарные кавычки».
Условие было:
если нет обработки переменных

А в этом случае они работают одинаково быстро, что явно написано и в вашем примере, и в аналогичных замерах в других источниках
А, да. Если нет — то да.
UFO just landed and posted this here
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души.
Необоснованная экстраполяция до добра не доведет. Проблема заключается в том, что не все такие как ты. Когда я делаю код-ревью, то я не кайфую от чувства собственного превосходства. Я отлыниваю, я не хочу делать код-ревью. Я не хочу читать код, я не хочу писать замечания. Мне приходится это делать — вместо того, чтобы взять и просто поправить код. Я бы с радостью работал в одно рыло вечно, да вот только не получится.

Твой мотив быть говном — он только твой.
UFO just landed and posted this here

И я бы добавил:


  • Код ревью должно затрагивать только код реквеста +- пара строк выше и ниже нового кода
  • Делайте ревью, как люди
Мечта:
— Сделать гайдлайны.
— Замечания делать в двух случаях:
— Нарушение гайдлайнов
— 2*2=5 (Грубая ошибка).
гайдлайны на 80-100% должны быть покрыты хуками в репозитории — пока код не по гадлайну, коммит никуда не прилетит.
То что покроют хуки, скорее всего покроет и lint обычный. А как гайдлайнами проверить паттерны? Или пять раз вызов одной функции, где можно было сохранить ее результат работы. Или пять раз копирование куска кода, который мог бы быть одной функцией. Или не использование каких-то базовых паттернов.
UFO just landed and posted this here
По поводу менталитета. Не являюсь разработчиком, но с некоторого времени технические вопросы задаю только на англоязычных форумах. Потому что там нет насмешек, тыканий носом, смотри мануал и т.д., все вежливо и с желанием помочь

Так было, наверное, всегда… может я и не прав, но последнее место где помогали был FIDONet.

Похожая история с автолюбителями. Задашь вопрос про то, как починить что-то на российском форуме — и подчас получишь ушат высокомерных помоев в стиле «нищий, что за колхоз» и так далее. Спросишь на белорусском или украинском форуме — напишут, посоветуют, поддержат. На британском — тоже.
Троллинг — другая категория. Здесь именно о нездоровой атмосфере речь, той самой «токсичности».
На самом деле всё зависит от модерации. Где-то злобные модераторы следят, чтобы старожилы не рассупонивались, а где-то просто карма довлеет.
А подобные шутки появились без причин, ага.
image
Если задавать вопрос, предоставляя всё нужное для его решения: конфиги, логи, дебаг вывод, сетевой дамп наконец если надо — и этим показывая, что ты проделал работу, прежде чем отнимать время других людей — то вполне нормально отвечают и на русскоязычных форумах. На том же самом ЛОРе, которым тут всех пугают как жутким филиалом токсичного хейтерского ада, я получал вполне себе конструктивные советы.

А вопросы вида «у меня что-то сломалось как починить», без следа попыток самому решить проблему или хотя бы помочь её понять людям, к которым обращаешься за советом — ИМХО заслуживают насмешек, тыканий носом, смотри мануал и т.д.
Благородный знает о своем превосходстве, но избегает соперничества. Он ладит со всеми, но ни с кем не вступает в сговор.

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

Будьте строги к себе и мягки к другим. Так вы оградите себя от людской неприязни.

Конфуций
А при чём тут превосходство и соперничество? Никто из отвечающих не пытается показать, что он лучше задающего вопрос.

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

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

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

Даже если человек просит сделать всю работу за него — зачем на него злиться? Просто не делай. Тема постоит пустая и отправится в архив.
> Тема постоит пустая и отправится в архив.

А вот если автору объяснят, как правильно задавать вопрос — то его темы перестанут отправляться в архив пустыми. И он в итоге найдёт решение своей проблемы.

> зачем на него злиться?

Злиться не надо. Но «ленивые вопросы» превращают форум в свалку с минимумом полезного контента. Оттуда уходят способные ответить люди, потому что тратить время на такие вопросы неинтересно, даже если просто их читать и игнорировать. Так что вред от них всё же есть.
Будьте строги к себе и мягки к другим. — Конфуций
Очень хорошее изречение, ныне более известное в IT как правило (закон) Постела aka robustness principle.
все вежливо
Иногда даже слишком. Гуглишь ошибку, попадаешь на форумы Microsoft и начинается…

Автор: У меня ошибка 0x0000001 в чём может быть дело?
ТехПоддержка: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Попробуйте, пожалуйста, выключить и включить, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Попробовал, не помогло
ТП: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Скажите, пожалуйста, с чего началась ошибка, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Началась внезапно
ТП: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Пожалуйста, предоставьте логи, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Скажите, как тут прикрепить логи?
ТП: Здравствуйте, спасибо что обратились к нам…

А-А-А! И ещё это с бесячей майкрософтовской дизайнерской фишкой:

делать

километровые

расстояния

между

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

Тоже встречаю и в иностранных компаниях, если в них есть помешанные на своем эго — всречал ребят из России, Украины, Польши, кто-то давно уехал с родины, кто-то нет.
Довелось год работать с одним "светилом" golang, который регулярно на хабре минусами отоваривается за свою агрессивную точку зрения. До работы бок о бок думал, что просто есть такие люди с жесткой точкой зрения… Поработав могу сказать, что я понял, о чем говорят, когда борются с токсичностью в команде, и как инструментом этой токсичности становится код ревью.
Если раньше услышав о токсичности лумал "бред какой-то", то теперь думаю, что есть зерно правды в требовании нетоксичной атмосферы.

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

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

Слишком сентиментальный компилятор со временем превращается в интерпретатор.
UFO just landed and posted this here
Когда команда ровная — да, все хорошо. Можно быть спокойным. Есть ревью, которое дает результат. А вот когда в команде появляются плохо обучаемые новички…
Нам вот недавно «для веса» на проект подкинули группу индиских коллег. Попросили обучить. Это что-то с чем-то. Я не люблю быть говнюком и вообще стараюсь всегда объянять и все комменты делать со ссылками на доку (или просто делать ссылку на нужную доку), но они меня ненавидят. Т.к. в их коде и ревьюить нечего. Чаще всего это тупая не рабочая копипаста со всем известных сайтов.
Жалуются начальству. Мы тоже жалуемся. А их не убирают с проекта. Не Россия, но бюджеты тоже пилить умеют)) В итоге просто прикапываем PR за PRом, тимлид выдает им новую задачу, а их задача переходит к нормалному программисту.
Они ненавидят CodeReviw я его начинаю ненавидть, а иначе никак.
Полностью поддерживаю автора! а самое интересное в этом опыте то, что человек написавший %такой%код вернется к нему спустя буквально 2-3 недели и будет полностью понимать где он был не верным, автор верно подметил, когда большинство программеров приходило в профессию, код ревью в команде почти не было, и все дружно критиковали друг друга на форумах, тем самым атмосфера внутри команды была дружелюбнее, и именно этот момент давал толчок в развитии команды, а имея токсичного код ревьюера в команде, хоть и талантливого не всегда идет на пользу команде.

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

Аособенно это видно при сравнении нашего Тостера с ихним StackOverflow.
На тостере частенько отвечают надменно, с пренебрежением и брезгливостью, причем даже не по сути вопроса. Причем я говорю о действительно сложных вопросах, не тех, когда человеку лень гуглить. На СО в этом деле приятнее, хотя и не сказал бы что разница прям глобальная, на СО видимо везло. А как меня однажды с говном смешали на аскубунте… Это был единственный случай, когда потребовалось получить ответ задав вопрос по данной тематике.

Так зачем переписывать код, если можно отослать на доработку, просто выделив нужные места. Например, тут исправить, тут потенциальный баг, тут заменить на такую штуку. Ведь это обычные рабочие отношения, откуда вообще тут берется хейт именно к человеку. К тому же понятно, что код джуниора будет слабым, с багами и прочее, так вы когда нанимали этого человека, чем думали. В данном случае старший разработчик четко должен был понимать с чем придется иметь дело и реагировать адекватно.
Всё очень просто — хейт берётся после неоднократных засылок однообразного говна одним и тем же человеком. Сначала терпеливо объясняешь, почему тут не то и то не так, и как надо бы делать, и почему надо бы именно так. Потом просто выделяешь места. А потом — хейт… а что ещё остаётся.
Ревьювить нижестоящих должен не любой опытный разработчик. А только условный «лид». Он должен не столько быть идеальным разработчиком, сколько хорошим педагогом. Я много работал со стажерами, удавалось выращивать до вполне хороших разработчиков. Метод простой — вы сами должны ловить фан от обучения человека. Радоваться от его прогресса, как от своего собственного. Не нужно переставать жестко ревьювить, нужно просто этот жесткий ревью доносить адекватно, помогать чинить. Да, на это тратиться время. Но вы же лид, а не просто разработчик — это ваша работа. Откровенно профнепригодных я встречал очень редко. И это всегда вопрос — как они собеседование-то прошли?
Программист — дефециатня профессия, платят много, и иногда платят без разбора всем подряд. Это привлекает в профессию недалёких, необучаемых и немотивированных кадров. Основные проблемы возникают из-за них.
И вот вместо того, чтобы помочь новичку развиваться, автор убедил его что почти всё в порядке, и либо увеличил технический долг проекта, приняв недостаточно хороший код, либо потратил своё время на то, чтобы его переписать. Отличный результат: все проиграли.

Автор, а вы хотели бы попасть на операцию к хирургу, чьи наставники вели себя максимально мягко и щадяще, танцуя на цыпочках вокруг его нежного как зефир в шоколаде эго? «В основном конечно неплохо. Правда была пара грубых ошибок и ещё несколько мелких, но ты не расстраивайся, со временем научишься. Этот пациент умер — завтра следующего привезут, ничего непоправимого, главное в себя верить». А если не умер — то вообще сами всё молча исправят на дополнительной операции, лишь бы ученика не обидеть.
Окей, минусы и за коммент и в карму. Но может напишете, в чём же я не прав? Думаю, моё эго это как-нибудь выдержит.
Я вам минусов не ставил, но объяснить могу.
Ваша неправота в применении демагогического приема, именуемого ложной дихотомией. Если наставники вели себя мягко и щадяще, это вовсе не означает, что учили плохо (более того, чаще неадекватность наставника обратно пропорциональна результатам учеников): но ваша формулировка такого варианта не подразумевает.
Таким образом, создается впечатление, что вы неявно агитируете за вариант максимально жесткого наставничества с оскорблениями, переходом на личность обучаемого, регулярным его унижением, етц, етц.
Вот за это старательно вами созданное впечатление неявной агитации вы и получаете минусы. Как мне кажется.
Не просто мягко и щадяще, а скрывали ошибки ученика и потом по-тихому правили их, как призывает автор статьи. Очень гордится этой своей находкой и даже сравнивает её с айкидо.

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

При этом вашу-то реальную позицию я понимаю, вы про нее в комментах проговаривались, и ничего общего она с унижением не имеет. Просто почему-то вы формулируете так, что эта позиция умело скрыта, а без вдумчивого чтения в глаза лезет эта самая ложная дихотомия.
М-мм… Наверное, правильным будет добавить, что автор статьи тоже в значительной степени попытался обозначить именно такую дихотомию. Вместо хотя бы матрицы 2х2, которая там вообще-то напрашивается в минимально похожем на реальность случае.
UFO just landed and posted this here
CREATE TABLE IF NOT EXISTS

Это не скрытие ошибок, это создание идемпотентного скрипта.

UFO just landed and posted this here
В случае миграций такая вот идемпотентность — самое что ни на есть вредительство.

В случае миграций, да, так лучше не делать.

Хуже бывает когда нет возможности отправить на ревью. И у тебя странное ощущение, вроде как работает, а может там вообще полная лажа, которая вылезет через месяц…
А где выдержки формулировок из вашего ревью для примера? Я возможно не правильно понял, но вы вроде как пишите, что в ревью гнобите людей, осознали что это плохо и решили ограничиваться отписками по мелочам, а остальное править самостоятельно. Что насчет идей всё же писать по максимуму, стараться передавать опыт, но не гнобить?
UFO just landed and posted this here
dev.motivation ≡ Motivation.Love
Да уж, стойкое целостное понимание того, что только любовь творит чудеса, ой как не просто и не сразу приходит.
А вот я люблю код-ревью. И в роли ревьюера, и в роли написавшего код.
Мне интересно пробовать найти баг в коде до его релиза в мастер-ветку.
Мне интересно писать комментарии к коду в весёлом стиле, иногда с шутками и смайлами, не обижая разработчика.
Мне интересно читать чужие комментарии к своему коду, потому что они позволяют развиваться или хотя бы смотреть на свою логику со стороны (и, на мой взгляд,)
Я практически всегда провожу ревью собственного кода перед созданием PR (вот прямо открывают дифф веток в используемом на проекте bitbucket ui и делаю ревью).

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

«Токсичные» злые дяди-сеньоры тоже были в моей практике, но ни разу не ударили по моему самомнению. Да, код плох, да, я полностью переписал всё раз (два, три). Но я стал лучше.
PR и code review — это инструмент самообразования. И по моему опыту, весьма действенный.
> PR и code review — это инструмент самообразования. И по моему опыту, весьма действенный.

я бы сказал, самый действенный после self-review.
Есть другая сторона видения проблемы: берется подряд на разработку, и чем меньше людей и зарплаты тем меньше расходы. Нанять одного нормального, а остальных дешевле, ведь всё равно нормальный всё поправит. И начальник получит программу, и потратит минимум денег. Всё бы хорошо, да только потом у программистов зарплаты ниже чем у машиниста в метро ;)
Присылать свой код одному засранцу, чтобы он гадил в него с довольной рожей кота… Да ну на фиг!
да пусть хоть что делает, если при этом покажет как сделать лучше.
Не надо бросаться из одной крайности в другую. Как ревьюер вы обязаны указать на все замеченные баги (которые приведут или могут привести к сбоям). Все прочее — по ситуации.
Если вы уже нашли 10 багов, то не стоит указывать на недостаточную гибкость, плохую читаемость и прочее в таком духе. Пусть сначала поправит баги, а там можно подумать — говорить ли об этих материях или отложить для следующего PR.
А у меня были добрые хорошие учителя, у меня всегда была возможность самому осознать низкое качество кода и самому устыдится, осознавая, что они все это знали, но все равно разговаривая со мной на равных. Спасибо им за это, а автору за статью, благодаря которой я об этом задумался )
Способность осознать и устыдиться — это качество не учителей, а ученика.
Сначала подумал, ничего себе, значит не только на русскоязычных форумах кодеров такая атмосфера, а потом увидел, что это не перевод.
Повезло теперешним новичкам — им не нужно обращаться на эти «площадки», ведь теперь есть stackoverflow и github. Да и форумы эти с нулевыми посещениями, я думаю, давно загнулись.
UFO just landed and posted this here
Автора по человечески жаль, выглядит будто человек застрял в тупике и не развивается. Из собственного опыта, профессионалам высочайшего класса не нужно никому ничего доказывать или кого-то «наказывать». Здоровые конкуренция и дух соперничества это полезно и важно, ударение на слове «здоровые».
Автору искренне желаю найти новые пути развития и перестать быть «чемпионом зала».
Человеку нужен был ментор, а не злые комменты в ревью.
Если у компании нет ресурсов на ментора, то надо было увольнять и брать более скилового и дорого сотрудника.
Комментами в ревью такие вопросы не решаются, ибо делают только хуже: люди начинают бояться писать код в принципе. В итоге имеем полный отказ от любых видов рефакторинга и инициативы.
Мы, когда-то, сильно облегчили процесс Code Review тем, что внедрили в работу Online Catalog of Refactorings. Раньше он выглядел немного по другому, там была краткая информация, диаграмма, и в правом верхнем углу — номер страницы книги, на которой разработчик мог получить исчерпывающую информацию. Использование этого каталога сильно экономило время, достаточно быстро повышало общий уровень разработчиков, устраняло эмоциональность из процесса. После выпуска в этом году второго издания книги, каталог был переделан, по моему, сугубо субъективному, мнению, не в лучшую сторону. Но он все еще остается полезным для процесса Code Review. Так же заметно устранили эмоциональность из процесса каталоги Code Smells так как они вносили в разногласия достаточно авторитетную аргументацию, которую признавали все.
И если вы скажете, что научились исключать из себя корыстную радость от самоутверждения (как бы оно у вас ни проявлялось), то я розовый единорог.

Поздравляю — вы — розовый единорог. Или (всё ещё) очень неопытны. Хотя скорее всего, просто очень молоды. Даже если вам за 50.

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

А еще у меня почему-то странное впечатление, что проблема не у автора в код ревью, а у его ПМа в планировании работы — какой-то идиот поставил новичков писать много ответственного кода, а потом ревьювер страдает от того, что пишет простыни ругачек.
200 комментов на 1000 строк, конечно, зашкал. И времени жалко. Но м.б. использовать подход солидных мат.журналов? Там железное правило: рецензент читает рукопись до первой ошибки. М.б. в случае кода, не до первой, а до 20-ой? После отсылать на доработку. Вряд ли все баги совершенно различные, наверное есть похожие, разраб увидев исправление в одном месте м.б. вспомнит, где похожие места и где м.б. похожее исправление и сам исправит остальные.
у математиков в этом смысле жестче — статья описывает логически связанную цепь, поэтому первая же ошибка все ломает.
В пуллреквесте может быть несколько цепочек — т.е. бизнес логика, UI, логирование, еще что-то — и каждое из них может иметь свои назвисимые ошибки…
Ok, поэтому я и предлагаю не до 1ой, а до 20ой. Однако если человек одну цепочку криво написал, то остальные, скорее всего, напишет не сильно лучше.
UFO just landed and posted this here
Да, когда мы критикуем, то делаем это для самоутверждения, для того что бы подняться повыше в социальной лестнице. Это правда. Но это не важно.

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

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

Наши причины всегда эгоистичны. В текущей культурной парадигме эгоизм, самоутверждение — плохие штуки, и их вроде как нужно избегать. Но как вид мы прогрессируем именно из-за них.
Есть мнение, что ваша версия устарела. Человек так же альтруистичен как и эгоистичен. И без альтруизма развитие человек всё ещё было бы на уровне каменных скребков.
Есть мнение, что этот ваш альтруизм — это лишь одно из проявлений эгоизма.
Позволю себе сослаться на Ричарда Докинза. У него достаточно чёткое определение альтруизма. И альтруизм в живой среде, это никак не эгоизм.
И да, есть мнение, что мнение которое вы упоминаете, ошибочно! ;)
Таки Докинз говорит про эгоистичный ген, если я правильно помню. Эгоизм может проявляться на разных уровнях.
Причём Докинз возводит именно этот вид эгоизма в абсолют (ну учёные любят подавать свои теории как единственные и абсолютно верные). А на практике работают все уровни одновременно — и особь, и популяция, и вид, и ген.
Я про определение альтруизма. Мне нравится что альтруизм, по Докинзу, существует. И существам доступно поведение альтруиста. И альтруизм необходим.
Я вообще про первую посылку, что альтруизма нет, есть только эгоизм.
И мол всё развитие человечества это сплошной эгоизм.
Альтруизм это эгоизм в долгосрочной перспективе.
По Докинзу, прямо противоположное.
Альтруизм — действия которые укорачивают вашу жизнь.

Всё четко и однозначно. И никаких игр, мол альтруизм это скрытый эгоизм.
Тогда Альтруизм — это разве что грудью на амбразуру?

Ведь всякие действия типа помощь, меценатство и так далее, без мысли о вознаграждении — никак они прямо жизнь не укорачивают. Но часто тоже называются альтруизмом.
А давайте вы в первоисточнику пойдёте. Эгоистичный ген. Докинз.
Желательно на английском.
Дабы не играть в «глухие телефончики».
Весь прогресс человечества — побочный эффект того, что люди самоутверждаются за счет друг друга.


Оправдание свинского поведения, как есть.
Есть куча способов самоутверждаться, например, построить хорошую команду в которой приятно работать и делать хороший продукт.
Отличная статья. Спасибо. С удовольствием прочитал. Хочется оставить свой комментарий.
Как мне кажется, вы заморачиваетесь самоосуждением. Вы правильно подметили что желание самоутверждения, эмоционального подкрепления + логического обоснования действия, это круто, но не делает вас внутренне счастливым. Один профессор говорит что, смысл существования хомосапиенсов это еда, размножения и доминантность. Безделье, и тогда наступит полное счастье. В вашем же случае, случилась системная ошибка, которая многие годы заставляла вас становиться быть лучше, и стремиться собирать лучших возле себя. Посмотрите на некоторых известных людей, в них была эта «ущербность», но именно она позволяла добиться им высоких результатов в их деятельности, и стать лучшим и заставляла вас двигаться.
Кстати, некоторые помогают беднякам в метро или на улице, и они тоже от этого кайфуют. Делает ли это человека добрее — наверное да. А в мозгу тем временем эндорфинчики и канабиойды выделяются, и от доминирования и от «принятия слабости», и от помощи близкого, и от растерзания его в клочья. Уж слишком мы биологичны, приспособленцы.
Поэтому все говнокод кроме кода, хотя любой код и есть говнокод.
Ну а если хотите снова подкрепить свое новое Я, можно пойти церковными методами, в вас сидит глубоко грех гордыни, и можно поработать в этом направлении (все советы уже даны). У меня например, есть заглушка: каждый раз вступая в очередной спор, вы просто показываете что зависите от чужего мнения. Оно вам надо… Есть другой мир с другими эмоциями, и вы это поняли, он тоже приятный.

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

Кстати, маленький нескромный вопрос, есть ли у вас какие либо заболевания, связанные с жкт, поджелудочной, печенью?
Хоть бы написали, почему заминусили коммент)) Ревьюеры)
Я так думаю за то, что вы считаете что «быть говнюком», это просто еще один вид хобби, как марки собирать. Подумаешь ты был всю жизнь говнюком и травмировал всех, зато тебе это нравилось.
Ну если за это, то я спокоен… На людях нужно обязательно говорить что, нельзя быть говнюком, всячески порицать плохое поведение. Но наедине с собой или близкими, делать то, что считаешь нужным. Где-то это я уже видел, ах да, кажется так делают политики, священнослужители, ну и в принципе многие другие. Л — лицемерие))

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


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

П.С. Не нужно путать лицемерие и самоконтроль. Наличие агрессивных посылов неоспоримо, это не повод идти у них на поводу.
Быть гавнюком это — иметь особый мозг с ПО, тоже самое и с маньяками. Если ты родился и мысли и действия тебя привели к этому, можем ли мы считать что это предназначение, причинно-следственная связь? Я считаю что да.
Другое дело, что самые отбитые представители, как и гении кстати, с помощью тестов , 2, или других методов отбора, помечаются как угроза обществу, и отправляется подальше от обывателей.
Просто есть откровенная жесть с убийствами, и это плохо, а есть например Пушкин, который прекрасно знал что
Чем меньше женщину мы любим, Тем легче нравимся мы
, но при этом не боялся очередной даме разбить сердце, что по отношению к ней он является гавнюком.
Вы занимаетесь обоснованием низменностей и стиранием граней между хорошим и плохим. Занимайтесь этим без меня. Про человека, который теряет грань между добром и злом, и начинает ставить в один ассоциативный ряд агрессивное поведение и поведение альтруистическое, говорят «у него сломан моральный компас». Фактические это первый шаг к признанию человека психопатом. И хотя психопатия не считается психическим заболеванием, требующим принудительного лечения или изоляции индивида, но совершенно все психологи и психотерапевты дают одну рекомендацию — держитесь от психопата по дальше. С психопатом невозможно выстроить плодотворные и конструктивные отношения, любые отношения с психопатом идут в пользу только психопату. Для ВСЕХ остальных участников ВСЕГДА только УБЫТКИ.
Общество на протяжении всей истории изгоняло и изолировало психопатов и агрессоров, этот вектор будет сохраняться.
Спасибо за годный комментарий. Кажется я понял о чем вы хотите сказать и какие эмоции вы испытываете и почему заминусили. С этой позиции безусловно вы правы.
Был у меня подобный опыт на одном проекте. Первый же пулл-реквест получил разнос в 100 комментов, некоторые из них вообще были в виде картинок «смех*чек». Через месяц я уже практически уволился, т.к. не мог уже больше терпеть такого необоснованно-агрессивного отношения. Благодаря уговорам своего менеджера с прошлого проекта, я все-таки остался, и сжав зубы, продолжил терпеть. Спустя какое-то время стало легче. Но через год я все равно уволился. Последней каплей стал коммит, где я реализовал графовый алгоритм, с помощью которого мы перебалансировали Кафку и сэкономили по 3 кора на каждой машине, который тех-лид ревертнул, когда вернулся из отпуска со словами «НИПАНЯТНА».
Спору нет, глядя на тот самый первый пулл-реквест сейчас, я понимаю, что с точки зрения дизайна кода, он был не очень. И за год на этом проекте я сильно прокачался в этом плане, за что я этим людям благодарен. Но этот год стоил мне тонну нервных клеток и, наверное, небольшой психологической травмы.
Сейчас я на новом проекте и новой команде. У нас все просто идеально с точки зрения морального микроклимата.Я делаю много ревью, и стараюсь максимально мягко относится к человеку, чей код я оцениваю. Придираюсь только к совсем уж явным косякам типа копи-пасты, нейминга, читаемости, но стараюсь давать свободу в реализации, если код решает проблему.
Недавно даже похвалил в одном пулл-реквесте человека за написанный код, так он в Слаке аж переспросил на всякий, не стеб ли это :D
Попробую перенести эту практику с похвалой на постоянную основу и буду нести добро в массы. А то, мне кажется, люди привыкли слушать только замечания.
если код решает проблему — ключевое для меня, это третья стадия оценки качества решения
который тех-лид ревертнул, когда вернулся из отпуска со словами «НИПАНЯТНА».

Вот согласна, ничего не бесит так, как такое откровенно скотское отношение. Если есть замечания, опиши конкретно или хотя бы в общих словах, что именно не работает. Сам же в итоге не способствуешь процессу разработки, если заставишь других членов команды тратить время на разгадывание, что же ты имел в виду, и пустишь по ложному следу.
Не нужно превращать программирование в некий догматический культ. Не нравится стиль/приёмы того или иного программиста — объясните/направьте в нужную вам стезю. Лень перековывать кадры, просто увольте. А сама статья потенциально вредная для индустрии.
От статьи осталось странное ощущение. Статья о том, как автор унижает и доминирует других (со слов автора) своим кодом ревью и что надо быть добрее. Окей. Но что же жертва? А жертва «вместо того, чтобы качаться, спокойно уходил домой к детям»© Т.е. «жертва» по ходу просто не в курсе, что ее унижают и над ней доминируют. А если так, то в чем ошибка автора и зачем ему быть добрее?
Нет, мы бы поняли, если бы автор сказал что он довел до самоубийства трех сотрудников и еще пятерых до нервного срыва, но блин, если его жертвы спокойно идут после работы к детям даже не думая качаться — вопрос скорее стоит ставить об эффективности автора, а не о об отсутствии у него доброты.
Я сейчас вам устрою код-ревью.

> export const isAgoodDeveloper = () => {

Что за инвалид это написал? Попробуйте прочитать: экспортируется константа isAgoodDeveloper, которая равна отображению пустых скобок на блок кода. Ну маразм же. Инвалиды, если вы хотите объявить функцию, так возьмите слово function и не запутывайте читателя:

export function isAGoodDeveloper() {

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

Эти идиоты увидели где-то в статье, что «в 2018» (если в заголовке цифра меньше 2018, они не будут читать статью) модно использовать слова const и стрелочку и начинают совать ее куда не попадя. Они ведь думать даже не пытаются. Запомните, инвалиды, слово const было придумано для констант, а стрелочка для использования с функциями вроде map:

var names = users.map(u => u.getName());

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

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


Вообще, стоит очень строго придерживаться naming'а, и если бы функция, предназначенная для кидания некоего стандартного exception'а (на пример, в Java), называлась бы throwAwayAnException, у меня был бы точно вопрос к качеству именования в таком PR.

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

Сидеть до ночи изучая F# — это совсем не то же самое, что сидеть до ночи разгребая баги в коде того товарища. Качество вашего времени будет разным. Изучать F# — круто, а фиксить баги — это хрень. Люди вроде вас, автор, как раз в итоге и фиксят баги, и анализируют причины их возникновения, и исходя из этих годами накопленных знаний дают толковый фидбэк на код ревью. Это совершенно нормально — уважать себя, свои знания и опыт, ценить своё время и стараться избегать предсказуемых граблей.

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

Как-то коллега был очень удивлен тем, что наш новый сотрудник не читает днями и ночами на пролёт нужные книги. Сам коллега тратит на это уйму своего времени и это классно (по крайней мере, может, для него). Но не все готовы заниматься работой после работы.
Даже не так.
У каждого своя мера, сколько надо тратить времени да обучение и жизнь.
И если один тратит всё свободное время на обучение, это не значит, что другой должен делать так же.

Я не говорю, что не нужно учиться вообще в свободное время. Я про то, что мир разнообразный. Люди по-разному живут и обучаются.
Проблема только в том, что этот разработчик, скорее всего, претендует на зарплату не сильно меньшую чем автор… а зарплата идёт из общего бюджета. Корень проблемы тут, мне кажется.
Ну тут ещё спорный вопрос, а нужны ли были эти знания для работы (про такое я не встретила упоминаний в статье)?
Расширять кругозор хорошо, но это можно делать по-разному (иногда и художественная литература помогает, знаете ли).
В равной степени тут может автор завышать планку требований (один стахановец завысил планку, а потом остальным норму поднимают), так и разработчик, код которого проверяют, может планку занижать.
Если 200 комментариев по существу на 1000 строк кода — значит задача слишком сложная, и надо давать что-нибудь попроще для начала. Если критика конструктивная (а не в стиле «я бы сделал по-другому») — значит всё правильно, обратную связь нужно давать и лучше сказать, что год говно, на этапе ревью, чем это выяснится после релиза. Если человека уволили из-за того, что он не справляется со своими прямыми обязанностями — это в основном его проблемы. «Каждый должен подтирать свою задницу».
Интересно наблюдать когда лид передаёт функции код-ревью в команду, заставляет делать перекрёстный код-ревью.

Никто один не умнее кого-либо одного. У них разные ценности и разный способ мышления. Перекрёстный код-ревью позволяет обмениваться не только коду, но и ценностями и мыслями.

А лид выступает как фасилитатор процесса ревью.

Это полезно. Снимает с лида груз ответственности за боль. Даёт каждому в команде возможность стать лучше.
Это хорошо работает, когда в команде достаточно опытных разработчиков, которые способны эффективно эти ревью делать. В ситуациях «один опытный + толпа новичков» такой подход, к сожалению, не работает от слова совсем :(
Новичкам надо учиться. Лид может научить их делать кодревью. Тем более если толпа новичков. Иначе лид сдохнет.
Никто один не умнее кого-либо одного

Это как если 10 человек будут играть в шахматы против чемпиона мира (по шахматам) путём голосования за каждый ход — что их 10, что 100, что 2 — разницы нет, точно сольют.

Может оказаться, что с голосованием у них получится даже хуже, чем у «среднего» из них.

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


Мне кажется автор и тот, кто, как ему кажется, говнокодит, просто люди решающие разные задачи. Цыплят по осени считают. И, как показывает мой опыт, срывают сроки именно такие вот заносчивые молодые люди, которые пишут код ради кода и не понимают смысл программирования как такового

Мне кажется, что на пост советском пространстве у людей есть врождённая потребность учить друг друга. Автомобилисты на дорогах учат других автомобилистов. Старослужащие учат «новослужащих». Раньше иной раз в поезде нельзя было проехаться без того, чтобы тебя не поучили жизни (каждый своей собственной). А так как опыта, педагогического образования, или желания прочитать статью «как учить за жизнь правильно» нет, то и учат зачастую резко тормозя перед новичками, тумаками, матом, ремнём, разносом на code review.
Хотя, возможно, я придираюсь, и в других странах так же.
В других странах часто другая проблема — можно банально не заметить обратной связи, которую тебе очень вежливо и аккуратно пытаются дать (ну не орут же матом, в самом деле) и обнаружить свой косяк уже при увольнении
Сам не разработчик (ПО), но Ваша ситуация похожа на то, как инженеров отправляют к стандартам. А при попытке объяснить отправителям эти стандарты начинаются крики о том, что там не это написано и они читают по другому.
Был случай — дошло до абсурдного, заказчик сказал, дословно «Это требование не написано, но оно само собой разумеется» и это то при 5-6 уровнях различной КД, и производственном цикле 1-2 года.

О преподавательском опыте
Описанное в статье очень напоминает работу преподавателя — 2 недели разбираем тему, аудитория кивает, что все понятно и не задает вопросы, вызываемые к доске ученики ничего не могут ответить и каждому объясняешь вновь, сидя на рабочих местах те же самые ученики снова ничего не могут сделать и объяснения проводятся еще раз, списав с доски решение — вновь ничего не получается и вот уже 4 раз личное объяснение и снова нет вопросов.

Только вот даже в таких случаях токсичность недопустима, т.к. она не несет абсолютно ничего полезного.
У меня для таких случаев есть «отлитая в граните»(с) фраза одного из наших заказчиков:«да, мы говорили, но мы этого не просили». Это было сказано после того, как по результатам их длительного нытья нами была поправлена какая-то функция в программе без должного документирования хотелок (сами дураки, чо)
UFO just landed and posted this here
Тут есть один нюанс, как в том анекдоте. В институте студенты платят преподавателю (ну или там государство платит ему за обучение этих студентов). Поэтому да, токсичность недопустима и не полезна (для бизнеса). А тут «студент» сам претендует на зарплату за свою «работу». А бюджет — он обычно не резиновый.
UFO just landed and posted this here
при чем тут «левацкое говно» (или «правацкое» или еще какое)? Отличайте этику от политики. Или, как говорится в одной пословице: «джентельмен назовет кошку кошкой, даже наступив на нее в коридоре ночью».

Код плохой — скажите где. Зачем ругаться или самоутверждаться или расстраиваться и т.д.?
Берегите нервные клетки и себя и других — вот и вся мораль.
UFO just landed and posted this here
Тем, кто платит деньги, вообще говоря совершенно пофигу на то, что там в коде, до тех пор пока он выполняет их требования…

Я по профессии учитель. То, что в разработке называется code review, у нас называется «формирующее оценивание». У него есть ясные правила: оно должно начинаться с позитива и в целом должно быть мотивирующим. Оно должно указывать и на успешные места и на недостатки, то есть должно быть сбалансированным. Оно должно сравнивать с прошлым уровнем и говорить, куда двигаться, то есть должно быть развивающим. Если цель code review- не разнести в пух и прах, а сделать так, чтобы на следующий раз все было лучше, то надо следовать этим очевидным правилам. А то, что у нас все так плохо, начинается со школьной скамьи, так как вся система образования нацелена на выявление ошибок и наказание за них. Мы ведём себя так, как с нами обращались учителя в школе.

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

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

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

UFO just landed and posted this here
Мне хорошо, а мое левое полушарие все за меня объяснит, как пиарщик за накосячившего политика.

Прям смак

ага, удачная метафора
Кажется я должен пойти перед кое-кем извиниться…
Спасибо.
А я-то думаю, от чего некоторые джуны прям в истерику впадают, когда я им код после ревью на переделку отдаю. Оказывается, они этот процесс рассматривают вот так же только с позиции самоутверждение через унижение других. А дальше уже и не видят, что рядом с замечанием есть описание и указание, как переделать.
И вот оказывается, что движет людьми, которые тривиальные задачи на 15 не принимают часов по 5 из-за количества пробелов и положения скобочек. :facepalm:
А нет инструментов, которые позволят автоматически проверять/исправлять код-стайл ДО коммита, например, как Resharper/StyleCop/etc?
На все вкусы не направишься. Особенно, если предпочитаемый подход меняется у проверяющего с фазой Луны.
UFO just landed and posted this here
Вы точно мне отвечали или комментом ошиблись?

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

но это не точно
UFO just landed and posted this here
Ну, факт наличия личных эгоистических мотивов никак не отменяет факта, что это на самом деле часть твоей работы и ты действительно обязан разносить такой код.
Но если чувство вины терзает, то не лучше ли поговорить с этим человеком напрямую? Узнать собирается ли он вообще исправлять свое положение и совершенствовать свои навыки, и если ответ положительный, то посоветовать литературу, курсы, форумы, разобрать с ним подробно несколько грубейших ошибок. Или может просто приставить к нему кого-нибудь в качестве наставника, раз уж есть проблемный новичок.
> Ну, факт наличия личных эгоистических мотивов никак не отменяет факта, что это на самом деле часть твоей работы и ты действительно обязан разносить такой код.

Напомнило эпизод из Футурамы, начальник Лилы напоминает ей:
— You gotta do what you gotta do, whether you like it or not. Which I do, very much.
UFO just landed and posted this here
>>Ничего страшного, если код плохой, я и сам могу его поправить

Такое поведение прибавит вам работы за другого и отберет у человека «экспу»

Лучше постараться объяснить в чем проблема, лучше голосом. Когда говорим — эмпатическую связь установить проще.
Статья действительно хорошо написана, но в ней разбирается субъективный опыт частного человека в частном случае. Просто напоминалка: эту статью нельзя рассматривать как обобщённый опыт.

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

Убираем токсичность из ревью, убираем личностные негативные отношения, делаем так, что далеко не все комментарии блокируют. Да что говорить, в интернетах гора статей с советами. По этому поводу делал для команды короткое руководство в конфлуенсе и его обсуждение на внутреннем митапе. Обучение код-ревью гораздо полезнее, чем игнор код-ревью, а автор как раз стал игнорить.
На мой взгляд причина не программистах, такой паттерн поведения идет от руководства. Любой руководитель при желании может переломить этот тренд, но по моим наблюдениям большинство считает, что нужно поддерживать «культ силы».
Не имеет значения какая у тебя мотивация внутри, если она приводит к нужному результату (люди растут, проект развивается в верном направлении и т.п.), то нет повода менять поведение, хотя думать об улучшении своей мотивации можно.
Очень часто причина говнокода, как ни странно, кроется в менеджменте. Когда разработчиков торопят, кидают с проекта на проект, когда схожий на 90% функционал делают 2 разных разработчика, когда постановку задачи и разбивку на подзадачи делают не в нормальных системах, типа redmine, а в самопальных crm в костыльно прикрученном режиме общего чата, просто потому, что манагеры так привыкли, ну и т.д.
(я ни разу не разработчик, но где-то рядом, и вижу, к чему такой workflow приводит)
Очень хорошо вас понимаю.
Каждый день занимаюсь ревью кода команды примерно из 10 человек.
Понимаю, что я не слишком вежливый человек, и мои комментарии могут кого-то обидеть.
Но видите ли в чём проблема…
У меня просто нет ресурса на то, чтобы переписать этот гавнокод. Ни у меня, ни у других сениоров.
И я не могу допустить появление этого кода, потому что часто проще написать заново, чем править лапшу.

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

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

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

В статье описан интересный феномен, который развился в последний десяток лет. Но прошу заметить, в статье много раз упоминается слово «разработчик», в контексте разработчик-программист, хотя разработчики бывают разные — электронщики, механики, дизайнеры и т.д и думаете у них не бывает design review? Да бывают, конечно. Только это обычно оффлайн совещание в кругу серьезных людей, к которому разработчики и ревьюеры готовится неделями и там вот такой номер не пройдет.
Быть может все в этой самой кнопочке Submit Review? Т.е вы сидите в своем комфортном кабинете, скрываясь за ником в скайпе, зная, что никто не сможет ответить на вашу критику, не скажет в лицо «ну че ты прицепился?» или еще хуже «а че ты в прошлый раз к Васе не цеплялся, а в этот раз ко мне придрался?» и это на глазах у всех присутствующих — коллег и даже менеджмента. А кнопочку нажать — это ведь очень просто, легко, часто не надо обьяснять, не заботясь, что тебя поймут правильно или нет.
Не напоминает поведение водителей престижных металлических шкарлупок, со своим суперзавышенным эго? Вот я думаю, это самое то — кнопка, легкость и безнаказанность развращает.

это называется САМОСОЗЕРЦАНИЕ… ещё и написал об этом, этот… ну вы поняли.
Такое ощущение, что мы в середине цикла статей, иллюстрирующих т.н. «четыре благородные истины»?
1. Жизнь есть страдание.
2. Существует причина страданий.
3. Страдание может быть прекращено.
4. Существует путь, ведущий к прекращению страданий.
Здорово подмечено. Помоем любая деятельность, связанная с затратой любых ресурсов организма на действия — страдания, вопрос в том, перекрывает ли получаемое удовольствие это страдание.
Привязанность к источникам удовольствий — это такой же источник страданий, как и отторжение того, что не нравится)
С самого начала какой-то бред. Ревьювер увольняет чувака? Что за бред, а нахрена ревьювер вообще нужен, это вроде его работа — не пропускать плохой код. Я отправляя на ревью свой код всегда благодарен ревьюверу за все найденные ошибки и никогда не думал, что он оказываться !(SIC! ОКАЗЫВАЕТСЯ!) тыкает меня НОСОМ в моё дерьмо! Я просто искренне благодарен ему за найденные ошибки. Как в школе соседке по парте даешь прочитать своё сочинение.

Главное помнить, что излишняя толерантность к быдлокодерам вещь опасная — сегодня ты делаешь им поблажки, а завтра весь мир пользуется браузером, в котором одна страница жрет по 3 ГБ памяти. Автора прессовали и он стал хорошим кодером.

Мне пришлось подобное преодолевать во взаимоотношениях с детьми. Когда ребенок делает уроки или учится чему-то новому — все время возникает соблазн ему сказать, что он делает неправильно и вообще что за глупые ошибки. Ты ведь умнее, не правда ли? Но если вдруг срываешься, то очень быстро понимаешь, к чему приводят подобные слова. Потом долго приходится исправлять, потому что ребенок начинает более нервно реагировать на критику. И надо много времени, чтобы опять научить его конструктивно воспринимать любые поправки.

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

В общем, разумная сдержанность и вежливость, как правило, приносят большие плоды. Нам ведь нужен результат, в конце концов.
Здесь есть большая разница, своего ребенка вы любите, несмотря на его ошибки.
К разрабу же, на которого по большему плевать, лучшим случае можно испытывать суррогат любви — жалость.
Дети — это совсем другая история. Там действительно стоит избегать прямой критики. Даже советы не всегда будут уместны. Лучше делать в стиле: «смотри, а это сделать можно еще и вот так...».

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

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

В целом, дети — это отдельная, другая тема.
Зачем сравнивать «токсичные» русскоязычные форумы со Stackoverflow? В одном месте уже сложившееся коммунити, где все друг друга знают, иногда даже лично, в другом — миллионы свежих аккаунтов, зарегистрированных ради одного вопроса.

И если на SO повторяющиеся/тупые вопросы закрывают модераторы, то на том же ЛОРе такого нет. Ну и отвечать на 100500-ый «как взломать асечку с Kali Linux» вежливо всех задалбывает, это очевидно.
Что-то жутко пафосное прочитал, про человека которому не нравится своя работа.
Уж если доверили проверку кода, да ещё и платят за это — работай. Там не важно какие чувства появляются к себе или к автору кода — платят за найденный баг.
У палача тоже работа не сахар, но если он будет переживать за каждую отрубленную голову — то скоро наймут нового палача.
Давно уже заметил, что стремление к самоутверждению можно легко эксплуатировать. Ещё во времена ДОС и когда сообщения форума читались через почту, я увидел вопрос, на который не отвечали неделю. Будучи совсем неопытным я дал совет рабочий (который тщательно проверил), но абсолютно неоптимальный, проблема решалась в разы короче. Вот что это было я даже не помню через столько лет. И через день я увидел десяток комментариев на мое решение типа да ты дурак можно в Париж через Владивосток ехать — вот как надо и т.д. Я редко пишу на форумы, но если пишу, то бывает завожу два аккаунта и с одного задаю вопрос, а с другого себе же и отвечаю с дурным советом. Находится много желающих поучить. И другое — замечали, что в незнакомом городе когда идешь куда-нибудь с местным, который хорошо знает дорогу, путь совсем не запоминаешь, хотя и стараешься, потому что назад идти одному. А когда ищешь дорогу один, обратный путь очень легкий. Это я к тому, что если человека постоянно поучать и поправлять, то он привыкнет к тому что есть поумнее и всё равно поправят, как ни старайся. В баги критичные для проекта нужно ткнуть, но вот стиль вырабатывается, когда задача на ходу меняется и если писал неправильно, то переделки обходятся очень трудоемко, а если не поленился и сделал ini файлы и т.д. то не так трудоемко. Можно задачу ставить частично-упрощенную, а полную информацию давать потом, сам поймет что пишет не так, ещё и прибежит спрашивать как лучше чтобы потом не переделывать всё.
Автор! ОГРОМНОЕ спасибо за статью!
В подробности сейчас вдаваться не хочу, но многое мне в людях и ситуациях стало понятнее :-)
Спасибо еще раз!
Потому что мой мотив на ревью — самоутверждение.


Печально. Надеюсь, процент людей с такой мотивацией в индустрии не очень велик.

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


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

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

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

Культура взаимопомощи, ее не построить за один день, просто ругая себя за «кайф от чувства собственного превосходства». Так что автор поста еще в начале пути.
Не вижу проблемы. Ну тешит человек своё самолюбие, делая код-ревью джуниорам, ну ок. Не ленится, пишет подробные комментарии. В конечном итоге джуниор учится писать более качественный код, а автор удовлетворяет свое эго :). Вин-вин, не?
ИМХО. Учитель или тренер не обязательно должен быть добрым. Может — отлично! Нет — главное чтоб был результат. Тем более, в данном случае Вы не учитель, и не тренер.
По моему опыту надо иногда таких людей выводить в область, где они могут «получить по мордасам» и ощутить свою никчемность по сравнению с унижаемыми ими коллегами.
Так мы взяли одного нашего заносчивого сисадмина-«знатока военной науки» с собой на страйкбол. Мало того, что он пересмотрел свои теоретические взгляды на ведение боевых действий и тактику, заодно стал по человечески общаться с коллегами. Просто потому, что не выполнил приказ (да он был скучным и не позволял продемонстрировать свои теоретические познания в тактике) и привёл команду к полному провалу.
200 комментов на 1000 строк — в любом случае слишком. Если это вот реально баги, то с человеком нужно и правда прощаться. Или переводить на менее ответственную и более простую работу. А если это стилистические придолбоны — то 200 комментов не выполнят задачу «научить человека писать лучше». Никто не в состоянии за один раз воспринять и запомнить 200 способов улучшить код.

Я бы откоментил явные баги, а потом в личном разговоре указал на 5-10 мест, которые можно было бы сделать лучше. В этом был бы смысл.
UFO just landed and posted this here
Ну, бывает и другая стадия: «ну а что, вариант рабочий, все потенциальные проблемы легко правятся по мере возникновения, стоимость и простота реализации вполне окупает недостаток изящества».
UFO just landed and posted this here

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

UFO just landed and posted this here
Жесткая обратная связь вполне нормальное явление. Но именно жесткая, а не переходящее в оскорбления.
После прочтения решил оставить тут в комментариях ссылку на эту историю.
ithappens.me/story/10297
Она у меня в закладках, иногда перечитываю, чтобы не забывать.
Очень странное отношение к code review. Я даже не про момент рефлексии автора (что похвально), а про то, что ожидается от code review.

Я всегда считал, что code review — это такой метод передачи знаний в реальном контексте. Человек пишет глупость, а ему в ответ говорят «надо вот так и вот так делать» — и человек теперь знает, как надо.

Иногда это основы языка (в этом месте надо использовать словари, а не списки, потому что у словарей асимптоматическое время доступа o(1) и они более семантичны), иногда это бездны business knowledge: «поменяй эту красоту на вот такой вот ужас. Мы пробовали красоту, но она ломает кейсы такие-то, такие-то и такие-то», или поднятие культуры: «обязательно используй осмысленные имена для переменных, например, cnt лучше переименовать в years или years_cnt, потому что любому понятно, что это счётчик, но редко кто догадается, что это годы».

code review без совета как исправить — говно, а не review.
UFO just landed and posted this here
Тут может зависеть от отношения руководства к такому лиду. К сожалению, никто не отменял нахождение на позициях из-за дружбы с ПМ или тех.директором. В таких ситуациях вся вина перекладывает на спецов, которые создают повод для придирок, неважно, насколько они обоснованны. Вот и начинаются бесконечные смены членов команды, пока лиду не надоест (он же для руководства супер спец, к его мнению прислушиваются), или проект окончательно не загнется. Если бы такого не было, конторы по разработке ПО не прогорали бы на пустом месте.
Наш менталитет зациклился на культе силы и превосходства.

Мне всегда казалось, что американцы гораздо сильнее зациклены на этом.
Хочу зайти с такого бока:
Иногда 10 лет опыта с конкретной технологией могут мешать принимать что-то новое в свой мир. Все мы стареем и мозг не тот, что раньше.
Если мы научились пользоваться молотком — то все вокруг кажется гвоздем.

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

«Альфа» — это у собак тип характера, те кто первый готов бежать в неизвестность. Скорее такая «гамма» сидит и распугивает нанимающихся на работу «альф»

«Тролль» — это когда человек гадит ради конфликта, испытывает счастье создав конфликт. В современном обществе, тролли вылезли из болот. Грамотный руководитель увольняет тролля если заведётся.

Есть еще и экономика, в ней говорится, что главное не «совершенный код», а заменяемость исполнителей, простота и понятность для новых сотрудников. Большое количество подготовленных кадров которые могут выполнить эту работу.
Если Вашу работу можете выполнить только Вы!? Вы или «Арнольд Шварц из фильмов» или надо бросать Ваше направление и делать так, что бы исполнителей такой работы было завались!
> считалось смертным грехом свершив который в Ад уже не попасть.

>> смертным грехом
>> в Ад не попасть

Шта?
У меня была позиция, что геи — это плохо. Я не думал об этом особо, просто когда-то очень давно батя сказал, что плохо, и я запомнил. Однажды я выпивал с толпой либералов, и всплыла эта тема. Я сразу же ознакомил их со своей позицией, и они такие «нет Фил, ты не прав». Ну, начали спорить. Никогда не думал об этом всерьез, у меня и аргументов толком не было. Да и в целом, мне совершенно насрать, хорошо геи, или плохо. Но я не мог себе позволить перестать спорить. Моим главным мотивом было — победить и сохранить лицо. Я не знаю зачем.

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

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

И всё это время — это чистые издержки. Поэтому я вообще не понимаю, как в этой ситуации можно находить повод для самоутверждения. Если в твоей команде люди делают говно, это значит что ты сам плохо работаешь.
UFO just landed and posted this here
Нехватку технических скилов вы подтягиваете. А за нехватку гуманитарных скилов сразу увольняете да еще и потом плохие отзывы даете. Где логика?
Если технические скилы это то, что человек сам учит, и их нехватака по сути 100% его вина. То особенности характера — это во много врожденное и навязанное внешней средой.
Это как людей с метеоризмом увольнять немедленно, и отзывы еще давать.

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

Вы отталкиваетесь от вопроса «кто виноват». Извините, никому не интересно, кто его обижал в детстве, что он вырос таким чудаком. Компания и начальник смотрят не в прошлое, а в будущее: каким будет влияние человека на работу команды.

И да, конечно, любую проблему надо решать словами. Сначала. Если же, например, после двух серьёзных разговоров человек не смог поменять свой «стиль», то увы, жаль, мы не смогли помочь этому человеку стать нормальным коллегой (и справки вовремя не навели).
UFO just landed and posted this here
Для комментария, на который я отвечал, это неважно. Говорите с людьми на их языке :)
И да, изредка можно научить человека не быть мудаком.
UFO just landed and posted this here
Хочется сказать спасибо автору. Статья заставила задуматься, теперь я пожалуй тоже пересмотрю то как делаю код ревью.
UFO just landed and posted this here
Статья хорошая и полезная, но!

Есть куча статей, практик и философий о том как делать код-ревью. Перед тем как начать бычить Вы удосужились прочитать и понять хотя бы ОДИН? Как тогда человек может быть на руководящей должности с настолько низкими социальными навыками и скудным психологическим познанием, закомплексованный и по-глупому эгоцентричный? Вроде все кричат про софт-скиллз, устраивают асессменты, а на деле «я начинаю думать как сделал бы я». Понятно, все должны сидеть и угадывать как сделал бы один человек.

Имхо, корень зла — автора вообще не должны были принимать на его работу и позволять ему оказывать такое влияние на других сотрудников. Сейчас он просто отказался от замечаний, что тоже плохо. Проблема не решена, компания страдает, автор в унынии, люди мучаются.
Все это замечания в ревью должны быть аргументированы. Например у нас были гайдлайны и референты на бест-практики (книги Refactoring, Design patterns). К сожалению некоторые разработчики предпочитают только собственный «авторский стиль» в общем коде (особенно грустно, когда просто поток мыслей накодирован), одновременно бывает, что считают код-ревью — «слежкой». Встречался с вопросом в ответ на код ревью: «Зачем ты мой код смотрел — я его проверял и он уже в репозитории» (и это от разработчика с многолетним опытом).
одновременно бывает, что считают код-ревью — «слежкой»


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

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

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

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


ДА

по сути кодревью — это ревью, а ревью это ревизия, а ревизия это «к нам едет ревизор». А зачем у нас ездят ревизоры? Что-бы кого-то премии лишить.


Витьеватый поток предрассудков.

ДА

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

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

где 40 человек херачат в мастер

люди


Если вы будете сами писать свой маленький проект

сами

маленький проект


Это все средства кооперации, если нет кооперации — то и средства бесполезны. А работа с ними превращается в фарс.


«нихачу спать мама гонит заставляет»

Детей кладут спать не ради детей, а ради родителей, которые хотят отдохнуть от детей. А дети (мои например) хотят спать весь день в саду (т.к. там скучно), и не спать всю ночь дома (т.к. есть папа, и он не спит ночью, и много игрушек и мультики, и вообще дома классно). И я их кладу спать исключительно потому, что мне нужно время без них — для работы скажем или времени с женой. Ни каких логичных и выгодных с позиции ребенка аргументов ложиться спать нет. Если дать ребенку спать как он хочет, т.е. уставать до предела. То он то-же начнет сам ценить возможность поспать. Мои в три года, на каникулах от сада, спят как им вздумается. Ложатся в час ночи, встают в 10, не спят днем. При чем сами выключат свет, идут и ложатся спать. И попробуй им помешать :)

«нихачу есть кашу убигу»

Это значит что ребенка кормят чем-то вкуснее каши. У него переизбыток калорий из вкусной еды. Проголодается — поест. Ни чего не логичного в отказе от не вкусной еды, когда ты не голоден — нет. В каше нет ни чего полезного. Единственный аргумент за поедание каш — забить желудок медленными углеводами, что-бы не забить его быстрыми углеводами и транс жирами. Так-что все вопросы к взрослым. Дети полностью рациональны в этом вопросе.
Полностью согласен. Чтобы быть руководителем недостаточно быть хорошим программистом. Хороший руководитель больше наверно психолог, чем специалист в своей отрасли. Ему нужно создать команду из разрозненных людей, у каждого из которых свои интересы и взгляды, замотивировать их. А у автора статьи серьезные психологические проблемы и комплексы и эти комплексы он транслирует на своих подчиненных через процедуру код ревью в частности. И самое неприятное, что автор еще бахвалится своими комплексами публично. Автор не просто не может создать команду, он разрушает ее своими методами. Гнать его вшею с этой должности — мой солирный вердикт. Не дорос еще
Это всё так. Вежливости и открытости иногда не хватает в ИТ.
Автор постарел. Начал думать о душе Думаешь покаялся и тебе котел в аду перестали греть? Да шучу я нет ни какого котла. Мы уже в аду.
Исповедь и покаяние отпускают же грехи. Разве нет?
UFO just landed and posted this here
И даже это ничего не гарантирует.
UFO just landed and posted this here
Автор приводит пример о том, как он ревьюит джуна. Для меня это кажется несколько странным, когда сильный разработчик ревьюит заведомо менее скилованного разработчика, при этом испытывая какие негодования. По моему опыту я крайне редко испытываю разочарование/горечь от кода разработчика уровня слабее твоего. Банально потому ожидания такие. И делать ревью для таких ребят очень даже легко, так как они намного чаще прислушиваются к твоим рекомендациям. Очень часто я пишу псевдокод, чтобы джун уловил мою идея о том, как улучшить данный код и почему.

Другое дело, когда идет ревью senior-senior. Вот мне интересно, как автор расправлялся с этим? Для меня здесь вылазят куда более серьезные проблемы как личные, так и профессиональные. Зачастую (опять же из моего опыта) в таком случае каждый пытается пропихнуть именно свой стиль, как бы он это сделал — «А вот я абстракцию бы по-другому сделал», «Я бы заюзал то-то и то-то» и тд. Интересно то, что проблема решена и код рабочий, но появляются вопросы «А вот если через N лет бизнес скажет нам сделать это, данный код уже не будет гибким и нам надо переписывать» и тд. Преждевременная оптимизация, пушинг своих личных предпочтений и все остальное делает ревью иногда невыносимым.

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

А как у вас проходят ревью между сеньорами? Часто ли сталкиваются лбами?

Ждем, когда AI будет проводит code review и писать в review «человечишко, что за дичь ???»

А можно взгляд с другой стороны? Один из моих учителей рассказывал "однажды, еще в советские годы, я читал доклад на конференции; и, когда я закончил, в зале на 200 человек наступила гробовая тишина, а потом все разошлись. Следующие 5 лет мою работу не цитировал только ленивый, но это было худшее выступление в моей жизни".


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


  • придирки в духе "офромить это в стратегию, использовать такой-то паттерн, разве вы не читали великого ХХХ, это не канонично" и критика в основном не конструктивная, на мотив "так положено". Скорее всего, ревьювер — самодовольный индюк. Допилите ревью как он хочет, чтобы отвязался, и больше ему не подавайтесь с серьезными изменениями. Со временем он или сам сольется с процесса заколебавшись ревьювить однострочники, или будет индючить интернов до пенсии. Пофигу, главное чтобы был занят и не мешал. Инженеры из них как правило никакие.
  • замечания конструктивные и действительно по делу, чаще всего оформлены в виде вопросов или контр-примеров. Это золото профессии. Получить по рогам от мэтра приносит больше пользы чем семестр в МИТ. Наоборот когда получаешь +2 с пол оборота, это значит что либо ревьювер не особо разбирается в теме, либо ты занимаешься фигней ему (а может и всем вообще) не интересной, либо вся практика в компании вообще профанация. Повод задуматься.

Так что если вы ревьювер — не стесняйтесь завернуть PR 10 раз, вы таки помогаете человеку. Просто помните, что пока PR открыт вы с ним равны. Вы не мастер йода и он не ваш юный падаван. Вы его не учите. Вы вместе думаете как улучшить его идею. Больше задавайте вопросов, меньше комментируйте, больше диалога, меньше понтов. Если переписываете PR код — спросите согласен ли оппонент. В общем не будьте задницей и все будет отлично!

Давно заметил в Айтишниках излишний пафос и ЧСВ. Люди умные, достойно оценены финансово, живут в состоянии успеха, а успех портит, пример -спортсмены и артисты портятся еще сильнее. Все объяснимо и понятно.
Вот автор говорит, что это он в работе такой чудак на букву М, а в жизни нормальный, но так не бывает, мы такие, какие есть, везде и всегда. Автор же и признается, что и вне работы спорил ради спора с друзьями, ради самоутверждения. Так что это уже черта характера. Но то, что признал проблему — уже хорошо. «Не суди, да не судим будешь», «Кто сам без греха, пусть первый бросит камень», «Будь проще, и люди к тебе потянутся» — это проверенные рецепты, пользуйся.
Этот Фил устал. Давайте нового, здорового.
Автор был прав в своем подходе изначально, но кончил за упокой. Ох, как бы я хотел такой разгромный code review даже сейчас! Как бы я хотел, чтобы мне не вежливо указывали на некоторые моменты, а провели по каждой строчке, рассказывая, что не так и с ней, и с моей логикой. Потому что я бы это учел, и следующий код был бы на порядок лучше. А поправив «некоторые мелочи», я не вырасту ни на йоту. В общем-то мой код объективно неплох, и я отчаянно тоскую по — пусть злой, но объективной, — его критике. Потому что сейчас все code review обычно не дают мне ничего нового.

Слабакам нет места в боксе. Неспособным выносить критику нет места в IT.
У автора хороший слог. И доля истины есть в его словах. Но, если честно, напрягает один момент, который очень нынче популярен везде и вокруг: с каких пор «быстрее, выше, сильнее» стало чем-то постыдным? Почему общество все больше ценит посредственность? Разве не стремление развиваться, опережать, быть лучше сделало человека человеком?
Я согласен, что ревью это довольно хитрая штука.
Но если вы вдруг решили стать добрым, то это не значит, что нужно игнорировать «Код не масштабируется, не тестируется, набит багами под завязку. „

Просто если таких ревью много, нужно внедрять в SDLC автоматическое сканирование кода инструментами, чтобы хотя бы первоначальную проверку делал не человек.
Нужно описывать best practice, пояснять программистам требования к коду, приводить примеры, проводить тренинги.
Если сложно нанять лучших из лучших, развивайте своих.
Ну вот щас резко осознаем проблему, и перестаем вообще давать ремарки. Стыдно ему стало…

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

И у новичков типа яиц по определению нет — ответить по существу ремарки. Отстоять свой солюшен, отвечая на ремарку объективной контраргументацией. А еще июнь прям ранимая душа, весь изведется же, в то время как фикс ремарки — одна строчка. Че за тупые комплексы? Если согласен с ремаркой — фиксь и мотай на ус экспириенс от знающего спеца. Не согласен — пиши ответ, либо спусти на тормозах и пофиксь как просят, если спор о мелочах. Че комплексовать то?

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

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

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

За что здесь автор статьи извиняется, я понять не могу? За кучу ремарок? За то что ремарки были не по существу? За то что самоутверждаясь, он матом в комментах писал и оскорблял оунеров PR?

За что автор статьи чуствовал себя виноватым, когда по молодости ему старшие кучу ремарок на ревью выкатывали? Что такого то — люди его видите ли носом в код тыкали. Сделал выводы и пошел дальше — че за сопли то?

Честнее было бы озаглавить статью «я — токсичный закомплексованный подонок и самоутверждаюсь на безхребетных июнях, и больше так не хочу» — один пень весь пост об этом и был. Нефиг сюда ревью и индустрию в РФ приплетать.
Не, ну серьезно — что зазорного в ремарке?

Серьёзно — ничего. Вот только мозги у большинства людей так и не отрастают и здоровый пофигизм не образуется.
Очень хочется увидеть хотя бы один его код ревью… Прям вот хочу увидеть какой он спец.
Оказалось, вместо того, чтобы становиться по-настоящему крутым, достаточно убедить всех, что ты крутой.

Не хочу никого обидеть, но автор это только недавно понял?
В процессе обсуждения статьи с коллегами встал вопрос примера токсичного online-сообщества: где именно в рунете можно узнать, что ты дурак, просто задав вопрос?

Такой пример есть. Это phpclub.ru. 38 тысяч тем с вопросами по PHP, 372 тысячи сообщений. Кто же самый активный участник форума? phpclub.ru/talk/members — Фанат. Почти 40 тысяч сообщений. Чуть больше, чем у других 4 самых активных пользователей вместе взятых. Дата регистрации: 29 июл 2003.

Так что же это за сообщения? Загуглите сами: www.google.com/search?q=site%3Aphpclub.ru+%22%D1%84%D0%B0%D0%BD%D0%B0%D1%82+oncle+terrible%22 Далее цитаты из 10 подряд идущих результатов поиска:

> в коде нет такого понятия, как глобальная переменная. умойся.
> господи, откуда ты выкопал это уродство? кто тебя учил пользоваться этой функцией? других для работы с бд не знаешь?
> phpinfo(); правда, если ты программист по типу «скачать и установить», то тебе это не поможет.
> ну, аффтар-то понятно — ему что SSI, что HTML, что PHP — всё одно тёмный лес.
> Почему ты считаешь, что в твоём нежелании пошевелить мозгами и рещшить задачу по аналогии, виноват я?
> посмотри в любой статье для чайников, как работать с БД. я понятно объясняю?
> лучше вообще не флудить бессмысленно, как это делаешь ты

Вот такой пример токсичной среды.
Я думаю что это от желания удовлетворить инстинкт доминантности. Слишком много в людях обезьяньего (еда, размножение и доминантность). Это не про то как дать короткий и лаконичный ответ и помочь решить.
Я думаю что это связано с мотивацией,. На StackOverflow люди всегда более отзывчивые, причина тому — HR из крутых компаний часто там высматривают добычу, многие это понимают и стараются показать себя умным, дав хороший и понятный ответ. Сами люди понимают, если ты открытый, если медийный, выше вероятность что тебя заметят.
По нашим же форумам, наши HR не гуляют, а зарубежные подавно. На работу часто устраиваются через знакомых. Никому ты не нужен. Потому у людей нет никакой мотивации, кроме как самоудовлетворения собственного ЧСВ.
Спасибо за идею. Не со всем согласен, но часть отвечающих, конечно, помогает исключительно ради рейтинга. С чем SO борется, но не очень успешно.
Это пример не среды, а выдающегося представителя. Таких всё-таки единицы.
Непонятно, насколько выдающегося (не являюсь завсегдатаем phpclub'а).
Но:
Почти 40 тысяч сообщений. Чуть больше, чем у других 4 самых активных пользователей вместе взятых.
Это значит, что с данным представителем пользователь имеет шансы встретиться чуть большие, чем с четырьмя другими самыми активными. Если предположить, что других комментаторов на форуме нет (всего пятеро), и помянутые четыре всегда адекватны, то число токсичных комментариев будет чуть меньше числа адекватных.
Вот вам и единица, ага.
Почти 40 тысяч сообщений. Чуть больше, чем у других 4 самых активных пользователей вместе взятых.

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

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

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

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

И в третьих, как это ни странно, ответы в форумах тоже гуглятся. И когда гуглишь вопрос, а тебе высыпается пригоршня ответов в стиле «используй гугл, дубина», ситуация начинает напоминать какую-то нездоровую рекурсию.
есть еще момент, специфичный для аутстаффа в странах с развитой коррупцией. Рано или поздно в команду набирается несколько трутней либо из близких руководства, либо за взятку. Они не хотят расти как специалисты, они хотят уйти в шесть к детям или тусить. Жалоба руководству на них, которую тут предлагали, естественно, не помогает — во-первых, их уже продали заказчику и компания получает деньги за их попоместа, а во-вторых — плюшки от них получает само коррумпированное руководство.
И специалисты стоят перед выбором — либо работать за себя и за того дядю (да, унизительно, но можно же убеждать других, что это норма — например, говоря что главное — не быть токсичным), либо поддерживать меритократию. Если выбор — за меритократией, ценностью чиловека в команде становятся прежде всего его умения и вклад в проект. Трутням становится тяжело психологически, их игнорируют, и рано или поздно они либо начинают развиваться, либо покидают компанию, восстанавливая работоспособность команды.
А что плохого в том, чтобы в 6 уходить с работы?
это устойчивое выражение, ассоциирующееся с радостью от конца рабочего дня (могу ошибаться, приняв локальный мем за устойчивое выражение, но есть же даже бренд 6pm, другого объяснения существования которого я не могу найти). Он наступает регулярно, независимо от того, сделал ты запланированную на сегодня задачу или нет. Я за гибкий график и не имел в виду никаких привязок ко времени. Мой пост о другом — что не всегда такое поведение ревьюера — от альфа-самцовости, мачизма или зависти к уходящим в постоянное время. Иногда это часть внутрикомандной борьбы с тянущими ее на дно людьми.
Лично я бы предпочёл максимально критичный ревью (конструктивный, конечно), чем ревьюера, который не указывает на мои ошибки, а сам их потом со вздохом исправляет.
Что сейчас, что 20 лет назад.
Хотя, конечно, теоретически возможно, что эта уверенность в собственной ценности у меня не исчезла как раз из-за того, что 20 лет назад меня жалели и тыкали носом не во все мои ошибки)

Внимательно читать и анализировать историю исправлений от других разработчиков — это, внезапно, тоже хороший способ учиться.
Отправлял я как-то по почте патч в один опенсорсный проект. Нормальный такой фикс с оптимизацией, всё пучком. Только код отформатировал не в общем стиле, а в своём собственном — так же удобнее и красивее! Патч приняли. Я ждал-ждал, когда он появится в дереве исходников, чтобы можно было всем хвастаться при случае. А когда дождался, то увидел, что автором коммита указан мейнтейнер. Логично: ему ведь пришлось полностью перередактировать все мои изменения, чтобы они соответствовали требованиям по формату.
Было весьма обидно. Но зато этот случай меня сразу научил уважать стандарты форматирования. Хватило одного раза, чтобы научиться. И даже без какой-либо ругани от мейнтейнера.

Да, я время от время поглядываю, что с моим старым кодом делают другие люди)
Отчасти, чтобы не сломали, отчасти — знать, где сам ошибся.
UFO just landed and posted this here

А мастер Ши бьёт своих учеников посохом. Кому-то это помогает достичь просветления.

А кому-то это помогает достичь понимания, что нужно немедленно сломать мастеру Ши нос. И таких мастер Ши почему-то посохом даже не касается.

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

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

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

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

Одна из книг повлиявших на мое мировозрение «Новая земля» Экхарта Толле, как раз про разрушительную природу эго, питаемого чувством превосходства
Меня, в подобной ситуации, навела на истинный путь мудрость одного из опытных тренеров в качалке. Не надо кичиться своими достижениями, всегда есть кто-то более сильный. Не надо насмехаться над слабыми, все мы ими когда-то были.
Я бы уволил автора нахер за непонимание базовых принципов зачем надо код-ревью, тем более если в нем 200 комментов вместо 10-15 то с рабочим процессом у вас точно не всё в порядке.

Articles