Однажды в моей команде был настолько слабый парень, что его собирались уволить (уволить разработчика!). Каждый мой коммент на ревью к его коду был гвоздем в крышку гроба. Я почти слышал стук молотка, нажимая «submit review». Он был приятным человеком, я даже переживал за него, но это не мешало мне разносить его старания в щепки. Мое право критиковать его работу казалось очевидным и неотъемлемым. Все просто — я сильнее, я прав. Никто же не хочет сказать, что плохой код — это хорошо, а? Его уволили, предварительно лишая стандартной премии в течение нескольких месяцев.
Я говорил себе: «Но ведь не делать же мне всю работу за него!? Он занимал место более талантливого разработчика. Я все правильно сделал». Но почему-то на душе скребли кошки. И когда мне пришел на ревью очередной pull request, что-то очень сильно поменялось.
На первый взгляд, все было, как раньше. Я открыл pr, глянул, что за проблему он решает. Прикинул, как бы ее решил я, и начал смотреть код. Там, как всегда, помои. Решение было не похожим на то, что сделал бы я. Окей, разнес его в целом и перешел к деталям. Строка за строкой я смотрю на код, нахожу проблемы и полу-проблемы, и фигачу пассивно-агрессивные комменты.
Я снова был технически сильнее. Pull request на тысячу строк кода получил от меня двести комментариев, не оставляющих человеку ни малейшего шанса верить в свою компетентность. Отлично.
Я навел курсор на кнопку «submit review» и вдруг задумался. Почему я это делаю?
Причина злых код ревью, вроде, очевидна. Я, как часть команды несу полную ответственность за кодовую базу проекта. Мне потом с ней работать. Это источник кучи проблем для бизнеса. Код не масштабируется, не тестируется, набит багами под завязку. Его поддержка дорожает и дорожает. Его не выложить в опенсорс, не заманить им новых сотрудников.
А тут этот дурак со своим говнокодом. Ведь так обычно объясняют свою критичность? Хороший разработчик стоит на страже интересов бизнеса. Чтобы у компании все было хорошо и работало, как часы.
Вот только, похоже, я в это не верю. Не верю в то, что это мой мотив.
Меня бесило, что пока я сидел до ночи, изучая F#, моя дочь начала называть папами всех мужиков вокруг. А этот чувак вместо того, чтобы качаться, спокойно уходил домой к детям. И мне хотелось его наказать.
Потому что мой мотив на ревью — самоутверждение. Мне глубоко чихать, что там за код в проекте. Я просто засранец, которому позволили легально делать людям больно. Опасный психопат с лицензией на убийство. Альфа-самец с большой дубиной.
Когда я это осознал, мне стало очень стыдно за себя. Десять раз спроси меня, что я за человек, и десять раз я отвечу, что я не вредный закомплексованный подонок. По крайней мере во всех остальных аспектах своей жизни. Тогда почему я такой злой в профессии?
Когда я учился разработке, одним из самых полезных источников для меня были всякие форумы. Я приносил туда очередной свой вопрос и получал кучу насмешек, заверений, что моя задача — говно, мой подход к ее решению — говно, мой ЯП неправильный, и мне вообще нечего делать в стройных рядах «хороших» программистов.
Слишком часто я хотел стать лучше только чтобы утереть им нос. Я качался как в спорте — не ради благой цели, а чтобы стать «быстрее, выше, сильнее» других. Как боксер-новичок, мечтающий нокаутировать чемпионов из телека.
Было очень больно, но я справлялся.
Став лучше, я дал свой код на ревью настоящим волчарам. Разработчикам, которые талантливее меня, и имеют втрое больший опыт. Меня цинично натыкали рожей в мое дерьмо, сделав это таким образом, что я сам понял — надо валить из разработки. Я слишком тупой для всего этого. Код, к которому я приходил в течение недели, был разобран на куски за несколько минут, и каждая претензия была до смешного очевидной и правильной. Как ни странно, на следующий день я убедил себя, что еще годик-другой, и мы посмотрим, кто тут король джунглей.
И вот, наконец, я стал таким же токсичным подонком, который махает своими скиллами, как кулаками. И я провожу код ревью не ради успехов бизнеса. Просто мне нравится тыкать начинающих бедолаг носом в их дерьмо. Техническая прокачанность, наконец, начала приносить плоды.
Если человек мне приносит код, и там есть слабые места, я бью в них со всей силы и кайфую от того, что я умный. Мне хорошо, а мое левое полушарие все за меня объяснит, как пиарщик за накосячившего политика. Левое полушарие расскажет логически, что я на самом деле хороший, просто стерегу кодовую базу и успешность компании. Только логика — не гарантия истины.
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души. И если вы скажете, что научились исключать из себя корыстную радость от самоутверждения (как бы оно у вас ни проявлялось), то я розовый единорог.
Но вот что я подумал. С одной стороны — я же научился разработке из-за того, что за мой счет самоутверждались. Во мне будили злобу, и эта злоба заставляла меня становиться лучше. Вселенная вложила в меня кайф от личного превосходства, чтобы я тоже будил злобу в молодых и неопытных, чтобы они сами становились злобными мегамозгам, толкали на учебу других, и так повторялось снова и снова.
Мы со своей жаждой самоутверждения — лишь глупый инструмент в руках естественного отбора. Я бы принял эту мысль и смирился, если бы не обнаружил один критический баг.
Когда начинаешь копировать других успешных, а они все как один — заносчивые, высокомерные засранцы, ты такой «Эй, я тоже так могу». Ты начинаешь разговаривать, как какой-нибудь чертов гений, познавший все тайны программирования, и все вдруг получается. Ты выставляешь свою силу на словах, и тебе верят.
Я кожей почувствовал, что все, чем я обладаю, досталось мне не потому что я компетентен, а потому что я эгоманьяк. Все эгоцентричные люди в моем окружении намного успешнее не-эгоцентричных. Их код лучше, они получают лучшие проекты и больше денег. Менеджерам и директорам они кажутся более ценными кадрами, коллеги их уважают.
Оказалось, вместо того, чтобы становиться по-настоящему крутым, достаточно убедить всех, что ты крутой. Бесконечный цикл роста за счет боли превратился в порочный круг, производящий не профессионалов, а токсичных болтунов.
И если у тебя получилось так пробиться, ты боишься, что образ сильного развеется. Тогда ты начинаешь поддерживать культ силы и превосходства. То есть убеждаешь себя и окружающих, что внешние проявления силы — это и есть сила.
Работая разработчиком тебе все время приходится спорить. Вы, как команда, выбираете решения в результате споров, пусть их и называют обсуждениями. И почему-то, в голове есть стойкое ощущение, что очень важно, чтобы именно твои решения «выигрывали» чаще. Просто чтобы почувствовать себя хорошо и не усомниться в своей силе.
Это похоже на один старый случай из моей жизни. У меня была позиция, что геи — это плохо. Я не думал об этом особо, просто когда-то очень давно батя сказал, что плохо, и я запомнил. Однажды я выпивал с толпой либералов, и всплыла эта тема. Я сразу же ознакомил их со своей позицией, и они такие «нет Фил, ты не прав». Ну, начали спорить. Никогда не думал об этом всерьез, у меня и аргументов толком не было. Да и в целом, мне совершенно насрать, хорошо геи, или плохо. Но я не мог себе позволить перестать спорить. Моим главным мотивом было — победить и сохранить лицо. Я не знаю зачем.
Сейчас я все продолжаю в том же духе. Мне почему-то кажется невероятно важным побеждать в спорах постоянно, оказываться правым во всем, не знать поражений и не ведать ошибок. Неважно, чья идея лучше, важно, чтобы была реализована моя идея.
Это все очень, очень плохо. Я не хочу, и никогда не хотел таким быть!
Ревью из начала статьи — я его не отправил. Вместо этого дал чуваку комменты с вежливыми предложениями поправить пару мелочей. Ничего страшного, если код плохой, я и сам могу его поправить. Человека, сломленного десятками таких ревью, я поправить не могу.
Моя личность сегодня — это симптом не моей болезни. Болеет индустрия, по крайней мере в РФ. Наш менталитет зациклился на культе силы и превосходства. И вот что нужно сделать: надо перестать быть такими. Это на самом деле очень просто.
Если над нами все смеялись, пока мы были новичками — это не значит, что теперь мы должны отыгрываться. Порочный круг легко рвется. Умение проигрывать в спорах очень сильно облегчает жизнь. Умение признать, что другой дев талантливее тебя, сделает жизнь совершенно простой.
Это прием в духе айкидо. Я обманываю своего злобного токсичного эгоманьяка, убеждаю его, что принять свою слабость — это круто, и он начинает гордиться благородными поступками.
А какая разница, каким запрещенным способом я себя радую, если жизнь вокруг становится от этого лучше.
Комментарии (415)
MonkAlex
11.12.2018 19:00+6Ну, то что автор осознал свою проблему — это хорошо.
Но в статье куча моментов, которые смущают по мелочам.
Основной вот этот:
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души. И если вы скажете, что научились исключать из себя корыстную радость от самоутверждения (как бы оно у вас ни проявлялось), то я розовый единорог.
Топ разработчик (ревьюит и видимо давно, не новичок явно), который не верит даже, что кто-то может делать свою работу хорошо — это жуть как страшно.
ПС: искренне надеюсь, что тут кругом преувеличения.youROCK
11.12.2018 19:02> Топ разработчик (ревьюит и видимо давно, не новичок явно), который не верит даже, что кто-то может делать свою работу хорошо — это жуть как страшно.
Я бы сказал, что это встречается повсеместно, и вряд ли это специфика России :). Синдром самозванца, только наоборот :).HerrDirektor
11.12.2018 19:05+4У автора все публикации пронизаны эдакой трудноуловимой смесью пафоса и ЧСВ. Но пишет хорошо, не отнять.
timiskhakov
12.12.2018 13:15Начал читать статью, не глядя на автора, и где-то на втором или третьем абзаце почерк показался знакомым :)
SergeyDashaAI
12.12.2018 14:03+1ЧСВ он и не скрывает) вопрос в том, что он осознал, что ЧСВ не всегда хорошо, и работает над этим. Круто
gmardok
14.12.2018 15:22Еще можно добавить что все люди разные. Мне приносит удовольствие обучение новичков. А как приятно когда видишь, что они достигли больше тебя через 3-5 лет!
youROCK
11.12.2018 19:01+3Ух ты, это не перевод :).
Я не могу сказать, что я согласен со всеми доводами и решениями в статье, я все-таки на ревью стараюсь в первую очередь ориентироваться даже не на то, нравится мне выбранный подход или нет (в конце концов, все люди разные и не надо пытаться их исправлять :)), а то, работает ли данные решение и выполняет ли свою функцию, есть ли у него очевидные проблемы (например, что оно сломается под нагрузкой или его мне потом будет сложно поддерживать, если возникнет такая необходимость). Но это относится к коду «сеньоров»-коллег. Новичку, вероятно, стоит давать менее критичные компоненты и давать ошибаться и учиться на своих ошибках — это намного эффективнее, чем пытаться «закрыть» его с помощью ревью, да ещё и потратив много своих сил.
Но, в целом, среди действительно крутых разработчиков, с которыми мне приходилось работать, было довольно мало таких «заносчивых м*даков» и больше весьма скромных и адекватных людей. Не уверен, есть ли взаимосвязь, но скорее да, чем нет :). Чрезмерная самоуверенность и «ощущение собственного величия» ослепляет и не дает стимула человеку развиваться дальше, даже если ему это необходимо, так что я согласен, что, особенно в плане ревью, пытаться самоутверждаться за счёт коллег не стоит (осознанно или нет) — вряд ли вы этим помогаете компании, в которой работаете :).
В любом случае, спасибо за оригинальную статью на русском языке!Occama
12.12.2018 09:44+14Внезапно; всё время, пока читал, был абсолютно уверен, что это перевод. На самом деле, уверен настолько, что даже не стал проверять наличие плашки, которой, оказывается, нет. Моя внутренняя нейросеть просто не давала по разным лингвистическим и стилистическим маркерам другого варианта =)
P.S.: пункт про РФ под конец статьи пропустил, естественно.ProLimit
12.12.2018 14:37Аналогично — стиль изложения явно западный, скорее американский. Это они любят заниматься саморефлексией «на публику», подробно рассказывать про свои чуства и мысли. Русские как то скромнее и скрытнее в этом плане.
EviGL
12.12.2018 20:23Ситуация с русскими как-то тихонько начала меняться и мне нравится этот сдвиг.
Когда человек набрался смелости сказать "я ошибся и виноват в этом не кто-то, а я сам" испытываешь к нему больше уважения, чем если бы искал оправдания или замалчивал инцидент.
В прошлый раз у меня такое ощущение вызвала статья про глупейшую ошибку в серьёзной системе наведения спутниковой антенны (извиняюсь за статью в твиттере).
kryvichh
12.12.2018 11:06+3Я не уверен, но может есть смысл выпускать пар на открытых проектах вне работы, показав зелёным студентам как пишут код крутые дяди? Моральное удовлетворение может быть даже больше, потому что твоё ревью и правки посмотрят не 3 человека (включая себя).
Turbo
12.12.2018 17:39-2Я всё же думаю что перевод «Меня бесило, что пока я сидел до ночи, изучая F#, моя дочь начала называть папами всех мужиков вокруг.»
HerrDirektor
11.12.2018 19:02+3Дедовщина — она такая, да…
Стать «не таким» на самом деле довольно сложно — если не дрочить работников, то они и развиваться (как правило) не будут. А если дрючить сильно, то будет как с первым чуваком из статьи — он и понял, что код у него говно, а толку-то — уже уволили.
Поэтому «добрый дедушка» должен не только дрючить «духов», но и помогать им стать лучше. Держаться «золотой середины», где нет места излишним эмоциям и собственным комплексам (неполноценности), в чем собственно и сложность.timdorohin
11.12.2018 23:52+13Тяжелые времена создают сильных людей,
Не будет естественного отсева слабых — будет
Сильные люди создают хорошие времена,
Хорошие времена создают слабых людей,
Слабые люди создают тяжелые времена.javascriptbasic!
10: Чем ниже порог вхождения, тем больше говнокода
20: Чем больше говнокода — тем больше создается абстракций чтобы его писать не приходилось.
30: Чем больше абстракций — тем ниже порог вхождения.
40: GOTO 10
А производители процессоров и рады стараться :DFedcomp
12.12.2018 00:58+2абстракции zero-cost бывают.
timdorohin
12.12.2018 01:45абстракции zero-cost бывают.
Постарался как можно сильнее выделить главное. Потому что бывают они нулевыми по стоимости действительно редко. Но даже нулевая стоимость их не спасет — понижение порога вхождения порождает еще больше говнокода.
ОффтопКак хорошо что мне чем-то не понравился Python и я начал учить программирование по старой переводной книжке по C и POSIXFedcomp
12.12.2018 01:46бывают около нулевыми (или нулевыми) по стоимости в подтюненных компилируемых языках. Причем там это не такая редкость.
GamePad64
12.12.2018 10:30+1Скорее нет, чем да. Абстракции имеют свойство быть дырявыми, что только добавляет необходимость в компетенции.
puyol_dev
12.12.2018 08:41Сейчас дешевле купить новый процессор и докупить памяти, чем нанять «дорогого» разработчика, идеально пишущего программы
alexxisr
12.12.2018 10:25Купить всем пользователям этой программы?
puyol_dev
12.12.2018 12:10Сейчас у большинства приложений реализована клиент-серверная архитректура с выполнением основных операций на сервере. Чтобы повысить скорость работы такой программы достаточно купить более мощный сервер или добавить память и заменить процессор на более производительный в существующем сервере
s-kozlov
12.12.2018 12:27+1На заре компьютерной эры многие так же думали: чтобы решить большие экземпляры задач, достаточно будет дождаться лучшего железа. Не знали тогда еще, что с экспоненциальными алгоритмами это не прокатит. Но с тех пор прошли десятки лет, и сейчас уже стыдно этого не знать.
iig
12.12.2018 13:40+3Как правило, на идеальность программы пофиг. Не пофиг на цену сопровождения. После «дорогого» разработчика поддержка кода обходится дешевле, такой вот парадокс.
Stas911
13.12.2018 05:39Не факт — ваш «дорогой» разработчик мог нагородить там столько уровней наследования и абстракций, что для поддержки может потребоваться не менее опытный чувак.
MaxKot
12.12.2018 14:22+1Сейчас дешевле купить новый процессор и докупить памяти
Насколько я помню, эти выводы впервые были озвучены военными в 60х. И когда программа реализует каких-нибудь сложные вычислений по уже известному хорошему алгоритму, то, наверное, действительно дешевле докупить железо, чем убрать каждый лишний такт. А ещё железо и программы, о которых тогда шла речь, поставлялись вместе с общим ценником, так что докупить железо можно было "не отходя от кассы".
А сейчас не всегда понятно, где же взять такое железо, чтобы иной сайтик из текста и двух кнопок не тормозил.
Stas911
13.12.2018 05:40Чего там непонятного — взял в облаке инстанс побыстрее и все. Дел на 10 минут.
Iwanowsky
12.12.2018 13:01Правильно! Молодежь нужно не только тыкать харей в говнокод, но и учить, передавая им свой опыт. Но попадаются и не обучаемые, кот. как-то наплевать на качество кода (нет серьезного к этому отношения), и на то, что и от них в т.ч. зависит и весь проект (хоть они и являются только одним из мн. винтиков в машине проекта). Как правило, такие долго не задерживаются; но после них разгребать горы кода — далеко не увлекательное занятие. Сейчас я отошел от программирования (занимаюсь др. делами), но порой заглянешь в код молодняка и потом не можешь замечания выразить в культурной форме. А бывает, встречается говнокод в программных модулях 5- и более летней давности, и приходится тогда в срочном порядке разбираться в нем и исправлять, пока никто от этого кода не пострадал. Или же приходится исправлять вдруг обнаруженные пользователями ПО ошибки и исправлять их оперативно.
Peacemaker
12.12.2018 15:17Поэтому «добрый дедушка» должен не только дрючить «духов», но и помогать им стать лучше.
Извините, я всегда думал, что это не две самостоятельные задачи, а части одной — обучения и развития «духов», когда «дрочево» не является самоцелью, а только как инструмент для донесения знаний, их закрепления, выработки нужных навыков через наиболее эффективные практики.HerrDirektor
12.12.2018 15:22Вы абсолютно правы. Беда в том, что есть «менторы», которые эту задачу делят на «дрючить» и «обучать».
И если нарушить баланс между ними, то получится либо как в первом случае в статье (чувака просто задрочили и уволили из-за ЧСВ автора), либо как во втором (указали на незначительные ошибки, пропустив самое серьезное — обучить человека тому, чтобы не делать ошибки крупные).
И в результате наш пафосный автор, внезапно почувствовавший приступ раскаяния, сделал минимум 2 неправильные вещи.
Быть «добрым дедушкой» (мне больше нравится термин «наставник») — это сложно, еще раз повторю.AleksSMR
12.12.2018 18:52Мне кажется, что нельзя работу в ИТкомании сравнивать с армией, не все в армию идут добровольно, а в ИТ никого пока повестками не загоняют. Поэтому термин «дедушка» и дрючить тут не приемлим вообще.
Человек может быть сколько угодно «специалистом», но если он решит именно «дрючить» новичков, а не помогать им, у нас например он в короткие сроки вылетит как минимум с проекта с книжкой «Не работайте с мудаками» в подарок.
Подобные агресивные «учителя» наносят вреда проекту и компании вцелом никак не меньше, а иногда даже и больше чем не добросовестные ньюкамеры.
И следить за этим всем это работа менеджера, как за неадекватными «специалистами», которые поносят всех вокруг своими коментами (кстати не обезательно код ревью, и обсуждение кого-то в курилке тоже сюда походит) и отправляют атмосферу в команде, так и за новичками, которые не хотят улучшать свои навыки и не прислушиваются к адекватным советам более опытных коллег.
Всё вышесказанное основано на личном опыте, видел я и как «опытный» разработчик изжил всю команду целиком и как команда якобы «безнадёжных» ньюкамов расцветала под руководством грамотного лида.
HerrDirektor
12.12.2018 19:15Мне кажется, что нельзя работу в ИТкомании сравнивать с армией, не все в армию идут добровольно, а в ИТ никого пока повестками не загоняют. Поэтому термин «дедушка» и дрючить тут не приемлим вообще.
Дело не в повестках, а в том «как тут заведено». Такой принцип действует везде, просто армия — самый яркий символ такого подхода, поэтому я такую терминологию и применяю.
Я такой подход не приветствую как раз по озвученной вами причине — здесь не армия, нет нужды воспитывать роту самых разномастных призывников, с разными уровнями образования, взглядами на жизнь и социальными статусами.
Есть хорошие коллективы, где старшие помогают младшим, а есть типы, как автор статьи — вместо оказания помощи в первом описанном случае, подвел работника под увольнение. Я конечно могу допустить, что автору попался необучаемый человек, но в статье это никак не раскрыто, да и судя по предыдущим статьям (если это не очень-очень тонкий троллинг), у автора есть серьезные проблемы с ЧСВ.
Затем автор «якобы раскаялся» и сделал вторую глобальную ошибку. Вместо того, чтобы разъяснить, почему генерируемый код плох и как этого избежать, он "дал чуваку комменты с вежливыми предложениями поправить пару мелочей". А «чувак» и дальше будет генерить неоптимальный код и перестанет развиваться.
Т.е. ни первый, ни второй случай я не нахожу правильным. Поэтому и пишу, что «быть т.н. „дедушкой (наставником, ментором, итп)“ — сложно».
Anshi85
11.12.2018 19:06+4Спасибо, прочёл на одном дыхании, а вообще есть такая поговорка: «Задаешь вопрос на англоязычном форуме тебе отвечают, задаешь вопрос на израильском (еврейском) форуме тебе отвечают вопросом на вопрос, задаешь вопрос на русскоязычном форуме и тебе долго и нудно объясняют какой ты мудак. К своему стыду я и сам за собой замечал раздражительное отношение к ошибкам новичков на работе, а особенно если они старше меня или моего возраста, думал почему они за это время не добились того же чего и я. Сейчас стараюсь больше направлять, давать нужное направление, чтобы человек сам понял, ну и поправляю если есть необходимость.
SerafimArts
11.12.2018 20:37+14Задаешь вопрос на англоязычном форуме тебе отвечают, задаешь вопрос на израильском (еврейском) форуме тебе отвечают вопросом на вопрос, задаешь вопрос на русскоязычном форуме и тебе долго и нудно объясняют какой ты мудак.
Это не так. Год назад был проведён следственный эксперимент: Взялся вопрос с тостера, к которому не было никаких негативных нареканий, но, объективно — он был глупым. Этот самый вопрос был переведён на англ. и запощен на стековерфлоу. Аккаунт тут же отхватил с пяток минусов, народ в комментах повозмущался, но ответ всё же был дан. На тостере, если не путаю, ответ тоже был дан, без какой-либо критики или унижений.
Если хотите — можете повторить этот эксперимент самостоятельно, предполагаю, что поведение пользователей будет в рамках нормального распределения. Где-то будут поливать говном, кое-где будут относиться нормально.questor
12.12.2018 00:08+6Лично я вполне верю в этот факт, но вот с выводами не совсем согласен.
Этот миф про англоязычные формы может и не совсем миф а может и миф — но прямо говоря, разница между stackoverflow на русском (или — на тостере, который вы приводите в пример) и большим so очень хорошо видна но в другом.
На en so так много вопросов, что количество некачественных вопросов многократно выше, чем на русском. Поэтому за плохой вопрос на русском so можно отхватить меньше минусов, чем на большом so — но вот я совершенно не уверен, что причина в менталитете, а не тупо в разнице аудиторий. Вот если бы на русском so было столько же вопросов и пользователей в те же самые часовые пояса — тогда бы ваш опыт чётко показал бы разницу менталитетов, а так… ну да, что-то померяли, но что?
И на обоих so я видел что и нормальные люди есть и чудаки на букву W, наверное распределение близко к нормальному. Хочешь увидеть лес и не увидеть за лесом деревья — всегда увидишь, то же самое и с всеми мифами про всех американцев или всех русских: можно смотреть на среднее по палате или видеть человека в тех людях с которыми ты лично взаимодействуешь.
PS Я кстати не лично про вас это писал, не воспринимайте на свой счёт.
u010602
12.12.2018 07:00-1Дело не в возмущениях и минусах. А в стиле этих возмущений. Когда тебя критикуют на англоязычном форуме, или даже посылают — это выглядит всегда так мило и не обидно, что в целом зло не множится и начинаешь думать чо это тебя критикуют. А на русскоязычных форумах если начинают критиковать, то это обычно настолько токсично, дерзко и фамильярно, что человек просто не может позволить себе начать слушать критику. Т.к. ему тогда придется признать что он говно. На тостер не ходил, но на других форумах это встречаю очень часто.
Я думаю что дело не в людях, а в самом языке. Английский как-то к ругани не располагает, а на русском токсичные обороты одни за одни цепляются и передаются в виде крылатых выражений. Типа «здрасьте… покрасьте», «и вам не хворать», «вашими молитвами», «как дела — не дождетесь», «красивая как кобыла сивая». И все в этом духе. Это все культивирует злобу на подкорке. И я заметил, что чем больше у человека подобных крылатых оборотов — тем он более злой и раздражительный в целом по жизни.ctc
12.12.2018 09:09+7Всё в порядке в английском с руганью и унизительными интонациями (cм. Gunnery Sergeant Hartman) Просто ругань на чужом языке воспринимается несколько отстранённо, как бы через фильтр. А вот на родном языке слышна и понятна вся нюансировка — и она зачастую обиднее основного сообщения.
u010602
12.12.2018 16:15-3Посмотрел. В английском два слова — шит и фак. Самое оскорбительное что я встречал на англоязычном форуме это «you are full of shit». Человек задал вопрос, ему ответили, тут пришел альфа-комментатор и начал оскорблять всех, кто давал советы. Ему ответили таким образом. У нас бы в таком случае перешли на личность, сказали-бы «ты — кусок ...», а в английском сказала «в тебе есть ...». Что-то типа, не ты тупой, а только лишь твои вопросы, и то не все, а только этот. Нет этих токсичных обобщений. В русскоязычной среде же сразу пытаются тебе поставить диагноз, классифицировать тебя, ты тут кто — альфач или тупой. Эдакая борьба за иерархию на форуме.
Схожая ситуацию и в рабочих отношениях случалась со мной. Если работаешь с русскоговорящими — то у них очень важно соблюдать такт подчиненного-начальника. Если у человека положение выше — он обязательно будет разговаривать с тобой иначе, ни каких Вы не будет, как будто вы с ним всю жизнь дружили и с одного стакана пили. Англоязычные тиммейты и начальники меньше меняются от получения преимущества, иногда даже начинаешь путаться кто главный, а кто нет. Если начальник что-то говорит сделать, он обязательно сделает это в форме просьбы, как если бы тебя просил коллега, а то и переспросит «есть ли смысл в его идее». В русской среде это больше происходит в декларативном виде — «надо», «сделай», «такая задача».
Я конечно понимаю, что на самом деле отказывать Англ боссу и отказывать рус боссу — в принципе одинаково. В итоге уволят что там, что там, но в одном случае наорут еще, а во-втором нет. Т.е. результат и цель — совпадают, а вот комфорт несравненно не на русскоязычной стороне.
Мое мнение, все дело в интенсивности внутривидовой конкуренции. В развитых странах все довольно спокойно, можно работать в кафе и иметь жену, детей, дом и машину. А у нас конкуренция очень остро стоит, горстка профессий где ты обеспечен, а в целом если застрял в «пролетариях», то живешь плохо. И вот это желание вырваться из болота и привычка толкаться локтями сохраняется на всю жизнь, даже если уже и вырвался.ctc
12.12.2018 16:45+2В английском два слова — шит и фак.
Я даже не знаю, как это комментировать.
У нас бы в таком случае перешли на личность, сказали-бы «ты — кусок ...»
Это очень зависит от того, где именно «у вас». Я переходы на «ты — кусок...» вообще никогда не встречал на профессионально ориентированных форумах. Они для начала сплошь модерируемые. Пренебрежение — да, подколки — да, но вот чтобы натурально куском г называть? За этим надо идти в клоаки вроде комментариев на Ютубе.
а в английском сказала «в тебе есть ...». Что-то типа, не ты тупой, а только лишь твои вопросы, и то не все, а только этот. Нет этих токсичных обобщений.
В первый раз сталкиваюсь со столь благостной интерпретацией словосочетания «you're full of shit». Вообще-то это означает «ты несёшь х*ню». Что-то мне подсказывает, что скажи вам подобное на русскоязычном форуме, вам это очень не понравится.
Если работаешь с русскоговорящими — то у них очень важно соблюдать такт подчиненного-начальника. Если у человека положение выше — он обязательно будет разговаривать с тобой иначе, ни каких Вы не будет
Похоже, вы экстраполируете свой личный опыт. Я двадцать лет работаю в русскоговорящих коллективах — и в роли начальника, и в роли подчиненного. Сплошное «вы».
Англоязычные тиммейты и начальники меньше меняются от получения преимущества, иногда даже начинаешь путаться кто главный, а кто нет.
Это очень сильно зависит от корпоративной культуры в конкретном месте.
А у нас конкуренция очень остро стоит, горстка профессий где ты обеспечен, а в целом если застрял в «пролетариях», то живешь плохо.
Не совсем понял связь. На профессиональных форумах люди вроде как из одной профессии. Отношения «начальник-подчиненный» тоже не про это.u010602
12.12.2018 17:00-1Я не экстраполирую, я описываю свой опыт. Жизнь не такая длинная, что-бы в этих вопросах давать 10ый шанс. Плюс мой опыт резонирует с опытом коллег и знакомых. И моя теория для меня работает. Вам я ее продавать не пытаюсь.
Относительно перевода фразы, даже зная что она значит, она звучит менее оскорбительно чем русский аналог с матами.
Между проф форумами и ютубом, есть еще всякие продуктовые форумы и форумы по интересам. И зачастую они модерируются с большим запозданием если вообще модерируются. Разве что автоматические фильтры стоят.
На профессиональных форумах люди вроде как из одной профессии. Отношения «начальник-подчиненный» тоже не про это.
это желание вырваться из болота и привычка толкаться локтями сохраняется на всю жизнь, даже если уже и вырвался.
Быть начальником — то-же желание вырваться. Быть самым умным в этой комнате, на этом форуме, в этой ветке комментариев — это все подсознательное желание вырваться, быть лучшим, т.к. «повышение получит только один». Соперничество, которое у нас начинается с детского сада и подогревается в обществе до самой смерти.ctc
12.12.2018 17:14+1Я не экстраполирую, я описываю свой опыт.
Ну а я описываю свой. Они не совпадают. Какие выводы можно тут сделать, кроме «бывает по-всякому»?
Относительно перевода фразы, даже зная что она значит, она звучит менее оскорбительно чем русский аналог с матами.
Я именно об этом. Абсолютна та же ругань на чужом языке звучит менее оскорбительно — просто потому, что она на чужом языке.
Соперничество, которое у нас начинается с детского сада и подогревается в обществе до самой смерти
Ну почему только у нас? Есть еще места, где «being competitive» является одной из базовых ценностей. По удивительному совпадению, в тех местах говорят на том самом языке, примеры ругани на котором вы приводите, как менее оскорбительные.u010602
13.12.2018 03:21Какие выводы можно тут сделать, кроме «бывает по-всякому»?
Зависит от того, кто хочет сделать выводы. Обычно у человека уже есть вопрос, на который он ищет ответ. У меня вопроса нет, соотв я ни каких выводов сделать не могу. Ваш опыт для меня выглядит как статистическая погрешность, т.к. я подобного доселе не слыхал. Может если я буду это слышать чаще, то когда-то в будущем задумаюсь попробовать дать русскоязычным работодателям шанс. На данный момент у меня есть теория которая работает и во всем меня устраивает.
Абсолютна та же ругань на чужом языке звучит менее оскорбительно — просто потому, что она на чужом языке.
Она не та-же, она становится той-же когда вы ее переводите на свой язык. А если не переводить?
По удивительному совпадению, в тех местах говорят на том самом языке, примеры ругани на котором вы приводите, как менее оскорбительные.
У них наоборот засилье «победили все, ни кто не проиграл» и прочие избегания соперничества в самом раннем возрасте. Начиная с подросткового возраста конечно соперничество нужно, но еще важна грань этого соперничества. Если тебе нужно бороться что-бы быть лучше нормально-комфортного — это одно. Если тебе нужно бороться что-бы выжить — это другое. Чем выше ставки — тем на большее ты готов пойти. Я об этом говорю.ctc
13.12.2018 03:42Ваш опыт для меня выглядит как статистическая погрешность, т.к. я подобного доселе не слыхал.
Ну вот, услыхали. В любом случае, статистические показатели из двух противоположных личных опытов выводить рановато, как мне кажется.
Она не та-же, она становится той-же когда вы ее переводите на свой язык. А если не переводить?
Если не переводить, тогда постановка вопроса «там менее оскорбительно, чем у нас» смысла не имеет вообще, поскольку мы соорудили на пути «тамошней» ругани фильтр.
У них наоборот засилье «победили все, ни кто не проиграл» и прочие избегания соперничества в самом раннем возрасте.
Не знаю, что у них там за засилье — охотно верю, что с яслей не вбивают «человек человеку — волк», но совершеннолетние у них ан масс очень жёсткие в плане отстаивания своих интересов.u010602
13.12.2018 04:23Если не переводить, тогда постановка вопроса «там менее оскорбительно, чем у нас» смысла не имеет вообще, поскольку мы соорудили на пути «тамошней» ругани фильтр.
Как раз наоборот. Перевод — это фильтр, вернее преобразователь. Переводя текст НЕ дословно — мы меняем эмоциональную окраску под нашу культуру. Я же предлагаю воспринимать их ругань без перевода. Не в смысле игнорировать, а просто не переводить. Вы же русский не переводите что-бы его понять, вот и английский не переводите. Как вы на русском языке понимаете насколько оскорбительна фраза? Насколько она токсичная и агрессивная? Я вам скажу честно, я матерные слова не понимаю практически, и не использую, для меня они загадка. Я их воспринимаю исключительно по не вербальным сигналам от человека. А в письменной речи всегда предполагаю худшее из того что видел ранее. Комбинации матов которые не встречал в реальности не понимаю вовсе.
Аналогично я воспринимаю и ругань на английском. Т.е. для меня они в чем-то ровны в плане восприятия, просто я мало видел ругани на английском вживую.
Как можно понять «full of shit» не переводя, имея восприятие как у меня? Например изучая видеозаписи людей, говорящих эту фразу, изучая их мимику, и мимику людей вокруг.
Коллекция гифок.
Я вижу что злость конечно есть. Но у женщин, говорящих эту фразу, доминирует разочарование, возможно отвращение. А у мужчин призрение, обесценивание обьекта.
Со схожими эмоциями в русском языке произносят оскорбления вида балабол, пустозвон, брехло.
Также есть связанные выражения типа load of shit, bullshit, no shit. Которые спокойно произносятся при детях, на телешоу, при родителях. И по токсичности близки к словам — брехня, чушь, не гони\без брехни.
Из примеров видно, что эту фразу могут сказать друг другу близкие друзья в неформальной обстановке. В моем кругу это может быть «да ладно» или «не гони», а если кто-то скажет вариант вида «харе пи… деть», то скорее всего я с ним больше общаться не буду.
Я эмоционально воспринимаю эти фразы именно так. И вижу что люди их воспринимают спокойнее. И говорящие их произносят спокойнее, чем матерные варианты перевода.
. В любом случае, статистические показатели из двух противоположных личных опытов выводить рановато, как мне кажется.
Я вывожу не из двух, я вывожу из нескольких десятков случаев, которые суммарно имели место быть со мной и моими знакомыми\коллегами. Более того все млекопитающие, начинают строить зависимости с первого травматического опыта. Стоит один раз пнуть кошку — она сразу-же начинает опасаться всех, кто физически может ее пнуть. Стратегия конечно очень грубая, но действенная. Что-бы кошке понять, какие люди пнут, а какие не пнут, ей нужно стать намного сложнее, такой-же сложной как человек. Я вот и сам не всегда понимаю какие люди угроза, а какие нет. В итоге кошка решает эту проблему иначе — она ищет обстоятельства, где ее не пинают и придерживается их. Моя личная кошка например, меня на улице не узнает, бегает от меня, как будто я ей вред хочу причинить. А когда мы в квартире — она не боится ни меня, ни гостей. Она не пытается понять людей или различать их, ей достаточно различать где она, в доме или на улице. И эта кошка самая живучая их всех, что у меня были. Коты с другими стратегиями — умерли вне дома — попадали в передряги.
Я это к чему. Я не хочу становиться ближе к группе лиц, которая причиняла мне дискомфорт постоянно из раза в раз, и у меня есть запасной план — другая группа лиц, которая за 7 лет ни разу мне не причинила дискомфорт.
Если бы у меня запасного плана не было, я бы тогда конечно начал усложнять свою модель русскоговорящего босса, старался бы как-то по собеседованию понять какой он человек, и что от него ждать, НО запасной план есть, а мотивации усложняться — нет.poxvuibr
13.12.2018 10:21Из примеров видно, что эту фразу [you're full of shit] могут сказать друг другу близкие друзья в неформальной обстановке. В моем кругу это может быть «да ладно» или «не гони», а если кто-то скажет вариант вида «харе пи… деть», то скорее всего я с ним больше общаться не буду.
А ведь совсем недавно вы говорили, то она означает — «ты несёшь х*ню».
Am0ralist
13.12.2018 10:58Ну и вот вам варианты трактовки (со слов автора) «не пи… ди»/«пи… шь», которые в кругу друзей — могут быть вполне себе норм, а обращенные в чужого да на форуме каком — вполне себе оскорбление.
Вот только интерпретация чужой лексики всегда сглаживается, поэтому человек считает, что там это легче, чем тут. Потому что трудно учитывать то, что подспудно подразумевается, когда общаются те, кто вырос в этой культуре.
Прекрасный пример, кстати, на эту тему: «Я есть Грут».poxvuibr
13.12.2018 11:31Ну и вот вам варианты трактовки (со слов автора) «не пи… ди»/«пи… шь», которые в кругу друзей — могут быть вполне себе норм, а обращенные в чужого да на форуме каком — вполне себе оскорбление.
Наши разногласия не в том, оскорбительна ли фраза. Она определённо груба.
Я хотел сказать, что значение фразы не нести чушь (в матерном эквиваленте "нести х*ню"), а врать (в матерном эквиваленте "пи… деть"). И я хотел отметить, что нашёл противоречие в комментариях u010602.
Увы, что эта фраза означает — «ты несёшь х*ню» говорил не u010602, а ctc, я банально перепутал авторов комментариев ((. Прошу прощения.
poxvuibr
12.12.2018 23:26В первый раз сталкиваюсь со столь благостной интерпретацией словосоче тания «you're full of shit». Вообще-то это означает «ты несёшь х*ню».
Эта фраза означает — я тебе не верю. Ну или ты врешь. Матерный эквивалент в русском подберите сами. Совершенно точно эта фраза не означает — ты говоришь глупости.
ctc
13.12.2018 01:37A 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.compoxvuibr
13.12.2018 02:19Приятно, что вы самостоятельно нашли подтверждение моих слов.
ctc
13.12.2018 02:29Вот отличная иллюстрация того, что ругательство на чужом языке не воспринимается как ругательство, и «you're full of shit» превращается в мозгу человека иной культуры в строгое «I don't believe you» или даже подчёркнуто вежливое «I think you're incorrect». Ругательная коннотация испарилась полностью.
poxvuibr
13.12.2018 10:15Вот отличная иллюстрация того, что ругательство на чужом языке не воспринимается как ругательство, и «you're full of shit» превращается в мозгу человека иной культуры в строгое «I don't believe you»
Да? И чем конкретно это превращение проиллюстрировано? Наверное, моей просьбой подобрать матерный эквивалент самостоятельно.
Ругательная коннотация испарилась полностью.
Она, конечно могла испариться, но только, если вы не смогли подобрать матерный эквивавлент из русского языка. Я думал у вас с этим проблем не будет.
fpir
12.12.2018 10:07Уж насколько «альтернативными» бывают вопросы на тостере, но не принято там посылать и указывать на личности. Даже за «сакральный» вопрос «как стать программистом/сис.админом?» максимальное оскорбление-«учитесь пользоваться поиском», но чаще раз за разом отвечают.
molec
12.12.2018 11:08+1Где-то читал (и не ручаюсь за достоверность) про разницу в манере общения. У англоязычного человека есть посыл не лезть с непрошенными советами. Да, он замечает ошибки/тупость/наивность вопроса, но его научили не раздавать советы, которые от него не требовались. Если бы был запрос на это, он бы тоже все это подметил. И до кучи есть четкое понимание цели коммуникации. У нас же раздавать советы — это норма, а в одну коммуникацию впихивают все, включая психологическую помощь себе любимому за счет унижения собеседника.
braineater
12.12.2018 13:49Зависит не только от тона но и от информации. Я дизайн критикую весьма токсично, с нецензурной лексикой и прочим. Но при этом даю аргументацию и идеи как можно улучшить ситуацию. Несмотря на токсичность отзыв почти всегда несет полезную информацию в отличие от «Вааау, какая классная работа, ты такой молодец». «Почти» потому что иногда работа настолько плоха что конкретику дать тяжело, тогда либо советую начать с нуля либо, под настроение, сам делаю работу. Некоторых мой подход обижает, некоторые с удовольствием пользуются. Впрочем это скорее хобби, поэтому работе не мешает.
gatoazul
12.12.2018 17:04Думаю, дело не в языке, а в современной культуре общения, берущей начало, очевидно, из бандитских субкультур девяностых. Распальцовки, альфа-самцовость, стремление возвыситься любой ценой над собеседником.
В ФИДО такого не было при том же самом языке.
sinneren
12.12.2018 08:23Хм. Ни разу к моим глупым вопросам не придирались на стеке, более того, мой кривой английский исправляли прям в моём посте и объясняли что именно в нём было не так (без обиняков, по делу). Видимо, повезло мне.
AmberSP
12.12.2018 10:02Задайте тот же вопрос на sql.ru. Дерьмо, которое там польётся, ни одной лопатой не раскидать.
Не согласитесь с кем-нибудь на хабре. Ещё лучше — не согласитесь с компанией в блоге компании. Карма станет резко отрицательной.
Но есть и хорошие русскоязычные площадки. В том же ods.ai на LMGTFY пошлют только если ну совсем банальные вопросы пачками забрасывать.Chamie
13.12.2018 13:21Ещё лучше — не согласитесь с компанией в блоге компании. Карма станет резко отрицательной.
Да ладно? Сколько раз посты компаний чморили в их же собственных блогах.poxvuibr
13.12.2018 14:14Да ладно? Сколько раз посты компаний чморили в их же собственных блогах.
Для этого нужно, чтобы пост спровоцировал массовый наплыв комментаторов. Если массового наплыва нет — получить много минусов в карму за критику вполне можно. Правда, как правило серьёзные компании этого не делают.
HerrDirektor
11.12.2018 20:47+14Поговорка особенно ярко раскрывается на форумах линуксоидов. На отечественных ресурсах, куда меня заводил поисковик, ни разу не нашел решения, хотя мой запрос совпадал с обсуждаемой темой на 80-100%. 2-5 страниц «советов» в стиле RTFM, «стыдно такое не знать», ссылками на маны (в половине случаев вообще не на те).
Создается впечатление, что там пасутся либо сборища пафосных мудаков, либо пафосных ничего_не_знающих_по_теме мудаков, задача которых — что-нибудь кукарекнуть в форум.
У буржуев же все чинно — спросил->ответили, еще и рассказали, что в твоем случае лучше вообще вот так, а не так.
С программерскими ресурсами, кстати, дела получше — дельные советы встречаются чаще, пафоса на порядки меньше (но встречается).
Однако, англоязычный сегмент разумеется больше (опять же на порядки), поэтому шанс найти то, что нужно (на английском), стремится к 100%.SergeyMax
11.12.2018 21:42+4Нужно понимать, что некоторые интернет-ресурсы предназначены не для бесплатных ответов на бесплатные вопросы, а исключительно для развлечения. Регистрируйтесь на форуме, угорайте над тупыми вопросами новичков, рассказывайте им про преимущества Gentoo, в которой вы никогда не видели таких проблем — это вполне себе способ весело провести время)
deathadmin
12.12.2018 02:23+5Как-то легко вы оправдали деградацию любого тематического форума рунета.
Я же считаю, что люди из рунета не привыкли читать документацию и самое главное — адекватно оценивать чужой труд. То есть, такой человек самоутверждается исходя из удачного опыта следуя шагам инструкции из сети и начинает себя ставить выше за автора статьи. Естественно, в какой-то момент времени набирается критическая масса таких упырей и они легко превращают форум в «развлекательный», когда инструкция становится неактуальной.
То, что автор статьи уходит из рунета из-за подобных личностей — это логический шаг. Если ты общаешься с людьми, которые так же как и ты пытаются что-то делать и делятся опытом (даже негативным), то вряд захочешь общаться в клоповниках, вроде того же LOR, где всем всё должны и все, что не вписывается в их мировоззрение — «ненужно».
Однако, интернет форумы — это лишь верхушка айсберга. Присмотритесь к людям в реальной жизни, покатайтесь по Европе, пообщайтесь с людьми из других стран. Степень разрухи в головах людей из СНГ поражает.acmnu
12.12.2018 15:09общаться в клоповниках, вроде того же LOR, где всем всё должны и все, что не вписывается в их мировоззрение — «ненужно».
Ну конечно, все что вам лично не нравится так сразу клоповник. Это клоповник имеет историю и почти любой профессионал в этой области возрастом за 30 имеет там аккаунт. Просто мир меняется. Для меня, как человека, который линукс не скачивал, а заказывал по почте, люди не способные прочитать man как минимум не понятны, а уж привычка сначала задать вопрос, а потом думать неприятна. А "ненужно" это местный мем, что-то типа "здрасте в этом чате".
deathadmin
12.12.2018 19:02В таком случае гопники тоже общаются мемами. Я с линуксом более 10 лет и видел как закрываются из-за неактивности разные OSDN -ы и LUG -и. Но последние хотя бы что-то полезное в мир принесли в отличие от ЛОР -а.
Arris
12.12.2018 03:59При этом отвечать на вопросы по той же Gentoo совершенно не обязательно! Достаточно ответить RTFM LMD и это, как будто, автоматом возвышает комментатора над задающим вопрос.
Спасибо, не надо!
HerrDirektor
12.12.2018 07:50+3Вот честно вам скажу, я давным-давно вырос из детсадовского возраста, когда такое поведение кажется веселым и занимательным.
И мне совсем не радостно, когда аудитория двача селится на технических ресурсах (да и вообще на любых, хоть форумов по кулинарии), превращая их в пристанище пафосных мудаков с «ЧСВ овер 9к».SergeyMax
12.12.2018 08:40+2Вот честно вам скажу, я давным-давно вырос
Ой, здесь нет никаких проблем. Закрываете вкладку браузера, и больше её не открываете. В интернетах есть много других интересных мест.
igordata
12.12.2018 09:57портить жизнь другим людям для развлечения — это как раз то, о чем говорится в статье.
типа хаха новичок сам должен будет хлебнуть красных глаз с гентой, пока не поймёт, что это не его или он не тянет. А смысл? Вместо того, чтобы сказать человеку, как проще и быстрее добиться результата, его посылают огребать головняк ради радости посылающих. Это и есть дедовщина и компенсация собственной неуверенности.
Stas911
12.12.2018 05:42Во-во — еще и книжку посоветуют и курсы и адрес дадут, чтобы писал если проблемы возникнут.
erlyvideo
12.12.2018 13:14старый миф из серии «у нас тут всё плохо, а там молочные реки с кисельным берегами». Распространяют его преимущественно те, кто не общается на иностранных форумах.
modestguy
12.12.2018 14:42+1Мне кажется этим и отличается действительно профессионал, от вышибателя бабла и эгоКодера. Когда работал в одном месте был действительно талантливый у нас тим-лид (земля ему пухом, разбился на машине ) — так вот особенность работы с ним заключалась в том, что он всегда поможет/объяснит и без всякого пафоса и высокомерности (тогда правда у нас не было код-ревью и проичх современных штук). И все вокруг его любили и уважали. Никто даже не претендовал на его место. Потому что понимали, насколько он компетентный и насколько готов помочь тебе в трудную минуту. После, когда он разбился — было много на его местах… в итоге команда рухнула. Больше я таких людей не встречал. И очень жаль. С такими я готов был бы работать на любой позиции.
Встречалась и обратная ситуация. Когда в одном месте доходило до маразма и туда-сюда пинаний код-ревью, просто потому, что чуваку, на другом конце экрана не нравились «именования переменных». Вот это уже клиника. Фамилий, мест работы не называю (на всякий случай). Но не дай Бог вам таких «сильных разработчиков».
reaferon
11.12.2018 19:06Болеет индустрия, по крайней мере в РФ.
Да ладно — «индустрия»… Если в этом тексте заменить «наша команда» на «наша рота», а «этот парень» на «этот салабон», то получится жизнеописание солдата срочной службы, от духа до дембеля.
Тем не менее статья классная, обожаю такие истории переосмысливания своего пути.
avost
11.12.2018 19:09+4Моя личность сегодня — это симптом не моей болезни. Болеет индустрия, по крайней мере в РФ. Наш менталитет зациклился на культе силы и превосходства. И вот что нужно сделать: надо перестать быть такими. Это на самом деле очень просто.
Хмммм… А буквально вчера один чувак тут утверждал ровно противоположное. Что его бесит слишком вежливое общение разработчиков между собой (в конце, правда, послал всех в жопу, а потом в комментариях не мог понять отчего его называют трамвайным хамом).
Так какова на самом деле реальность? :)
Thoth777
11.12.2018 19:52+1Тот человек хотел привнести законы дикого мира в социум разработчиков. Если делать по его, то в команде будет очень неприятная атмосфера.
altrus
11.12.2018 19:57Он хотел привнести законы 15-20 летней давности в этой же сфере всего лишь
Thoth777
11.12.2018 20:46+815-20 лет назад мы, разрабы, нормально общались, без всякой, извините за мой французский, бычки брутальности и доминирования.
Да, могли испить с коллегами пива на рабочем месте вечером. Да, было веселее, тимбилдинг был почти каждый день. Но жесткости никогда не было, всегда было уважительное отношение друг к другу. Засранцы долго не задерживались.altrus
11.12.2018 20:49-5Каждый увидел во вчерашней статье то, что захотел увидеть.
Я никакой жестокости и тем паче доминирования в тексте (призывы к ним) не увидел.
aavoron
11.12.2018 20:53+2Реальность такова, что, например, если на условном «Западе» агрессивный стиль общения Линуса Торвальдса считается неприемлемым, то в условной России, судя по опросу — вполне приемлемым.
А вчерашняя статья скорее всего была ответом на эту, точнее на ту ее часть, где культуре разработки в условной России ставилась в упрек ее токсичность.SergeyMax
11.12.2018 21:52+1Да. Достаточно почитать комменты в ютубе. Если ролик ориентирован на русскоязычную аудиторию, то что бы ты не снимал — в комментариях обязательно проедутся и по голосу, и по внешнему виду, и по умению держать камеру, обязательно упомянут что другая какая-нибудь штука гораздо лучше и вообще чо за говно зачем я сюда зашёл. Но всё меняется, если тот же самый ролик будет представлен англоязычной аудитории. Полное отсутствие какого-либо негатива и претензий в стиле «эй ты автор а поясни-ка мне». Чувак из США с гораздо большей вероятностью скажет тебе «спасибо», нежели Вася из великой и необъятной.
Daddy_Cool
12.12.2018 01:44+2Я бы сказал, наше общество более коммуникативно-наивное.
По некоторому опыту общения с англичанами, французами и немцами — могу сказать, что наши люди часто принимают вежливость за хорошее отношение.
Претензия в стиле «эй ты автор а поясни-ка мне», означает, что читающий данного автора видит, что автор мог бы лучше — но не постарался, или о чем-то важном умолчал и… наш читающий не считает нужным это скрывать.
Где та тонкая грань между вежливостью и лицемерием?aavoron
12.12.2018 03:28+2А нету ее. Тут каждый для себя выбирает сам. Лично мне больше по душе лицемерная улыбка, чем искреннее хамство.
SergeyMax
12.12.2018 08:33+2читающий данного автора видит, что автор мог бы лучше — но не постарался
Да, это тоже достаточно характерная черта русскоязычных комментаторов: уверенность в том, что автор тебе чем-то должен, если пользуешься результатами его труда. Да, не ты должен, а именно автор, и именно тебе. Не постарался, умолчал, вообще какую-то фигню непонятную рассказывает непонятно зачем… К ногтю оборзевшую шоферню!Daddy_Cool
12.12.2018 14:17ИМХО причина в нашей более общинной психологии, т.е. все всем должны по умолчанию, так сказать.
dvmedvedev
12.12.2018 14:42Как правильно некоторые заметили, у нас вежливость, скорее, принимают за слабость.
grinCo
12.12.2018 09:22Вы видимо мало ютуба на английском смотрите. Прочтите комменты под любым роликом, косвенно затрагивающим рассовые отличия, партии, феминизм или любые новости.
grinCo
12.12.2018 10:58Вот только что случайно наткнулся на пример. Видео 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.?
Там дальше еще есть, лень копировать.SergeyMax
12.12.2018 11:24Извините, я не очень в английском, о чём здесь речь? Нигры ругаются на шутку белого человека?
cyberly
12.12.2018 12:13Все эти треды похожи один на другой. Кто-нибудь оставляет комментарий в духе «Ну [социальная группа] — в своем репертуаре», потом следует пара комментов типа: «Говорить в снисходительном тоне о людях, которых вы даже не знаете, на одном лишь основании, что они обладают особенностью [X] — недопустимо», потом несколько сообщений типа «Оставьте свое мнение при себе» и далее все это быстро скатывается в простыню из 200 сообщений с посыланием в разные места, и деградацией аргументации до «сам дурак».
Инстаграмм, кстати, такой же, если пост не про чизкейк.Daddy_Cool
12.12.2018 14:18Может как раз дело в том, что это инет? И можно дать выход реальным эмоциям?
amaksr
11.12.2018 19:10+3Этот IT прямо какой-то беспросветный ад, наполненный злобой, ненавистью и страхом…
Но если серьезно, я думаю что ощущения человека в основном зависят от его же самого. Если кто-то рассказывает о кознях в коллективе, то как правило смена коллектива на это не влияет, и человек продолжает видеть их везде, где бы не работал. Другой человек, наоборот, будет видеть только дружелюбное к себе отношение. Хотя исключения, конечно, бывают.
Т.к. у автора преобладает негатив, то ему лучше избегать любого коллектива, и работать в одиночку, например фрилансеромmkshma
11.12.2018 19:31+1Этот IT прямо какой-то беспросветный ад, наполненный злобой, ненавистью и страхом…
Ну так люди, которые большую часть жизни провели в статусе мальчиков для битья, дорвались до общества, в котором они не только таковыми не являются, но и могут быть ориентиром и примером для подражания. Вот тут-то все говно наружу и вылазит. Уверенные же в себе люди, которых такие проблемы в юности не затронули, работают себе работу спокойно и без какой-либо злобы наставляют нижестоящих в пищевой цепи.
PendalFF
12.12.2018 13:24+1Видимо вы не сталкивались с ситуацией тотального лицемерия.
Когда человек или группа лиц в общении с вами демонстрируют дружелюбие, благодарность за помощь и угощают печеньками, а за вашей спиной пишут кляузы или ходят жаловаться на «поздно пришел, не так сделал, не так посмотрел… и т.п.»
Здоровый скептицизм и некоторая доля подозрительности в данном случае будет куда более выигрышной стратегией чем возлюблять всех подряд.
sergey-gornostaev
11.12.2018 19:11+4Написано хорошо и мысли очень здравые. Но разве вы не обманули человека, приславшего вам код на ревью? Разве не лишили его возможности стать лучше? Нет ли эгоцентризма и в желании быть хорошим, не таким как все эти злодеи вокруг?
JekaMas
11.12.2018 20:55+1Может достаточно по задаче мерить? Достаточно хорошо решена задача и решена ли? Если да, то зачем углубляться и без спроса делать кого-то лучше? Может он доволен своими навыками и их достаточно для определенного класса задач?
sergey-gornostaev
12.12.2018 07:03-1Как хорошо, что мои наставники на первом рабочем месте так не думали.
extempl
12.12.2018 08:02+3Это смотря какую цель преследовать. Если вы обучаетесь — наставник должен умеренно окунать вас лицом в говнокод. Если вы работаете — в первую очередь нужно смотреть на умеренно ли код решает проблему, а не на "он не совпадает с тем, как написал бы я, а вот тут можно было было бы упростить" и т.д.
Работа + обучение — это менторство, на которое не всегда хватает бюджета и времени в компаниях.
Как выше сказали, нужно ставить посильные задачи, если ты джун, то не нужно ставить сложную задачу и потом разносить решение (если это не обучение конечно). Джун решил проблему — джун молодец. И не важно, что на 70% эффективности, нужно будет на 100 — задачу отдадут синьору.
Chelyuk
12.12.2018 13:07Менторство — это не мокание лицом в плохой код. Только у меня появился вопрос, а почему этот "крутой" программист не давал джуну на ревью свой код? Все люди учаться на примерах. И показывать надо не только как делать не надо, но и как делать надо, в том числе на примере своего "идеального" кода.
cyberly
12.12.2018 13:22Обучение — это объяснение почему именно плохой код плох. А использование/не использование «макания» при этом — вопрос эффективности подобного метода воспитания для конкретного подопечного, тут, видимо, преподавательский талант нужен, чтобы понять, когда «макнуть» полезно, а когда — наоборот.
JekaMas
12.12.2018 09:34Видимо вы были навыками не довольны и более глубокий и жесткий комментарий был вам в пользу. Это клево и хорошо, что вы встретили подходящих вам наставников.
Но как инженер, согласитесь, нет универсального инструмента для всех условий и всех людей, который будет одинаково хорошо работать. Этот более жесткий подход к откликам на код может быть крайне вреден да и просто неуместен, если программистом задача решена, решена приемлемо, и он не хочет, чтобы его отпрепарировали на ревью раз за разом.
elCreator
13.12.2018 12:28+1у чувака задача — построить первый этаж здания. Он делает стены из гипсокартона, отчитывается о скорости решения, о том, что стены получились ровными и их не надо много штукатурить. С точки зрения заказчика или менеджера — все ок, он возможно даже получает премию за достаточно хорошо решенную задачу, и переходит на новую фичу. А дальше сокомандникам, которым надо построить сверху еще три этажа, приходится либо сносить его постройку (и получать шишки сразу за потраченное «впустую, без ценности для бизнеса» время), либо делать кучу подпорок (и получать шишки за баги позже) — т.е. команда задачу решит недостаточно хорошо. В итоге:
— истинный виновник провала награжден
— невиновные сокомандики наказана
— тимлид, попытавшийся притормозить код виновника, получает общественное осуждение за это здесь, получает от менеджера, прочитавшего про токсичных ревьюеров и узнавшего его в них, получает вместе с командой за затягивание фичи.JekaMas
13.12.2018 12:40Аналогии прекрасны тем, что их можно придумывать любые.
Если просмотрите ветку комментариев, то там несколько раз упоминается, что если задача решена достаточно хорошо. Пересмотрите, ваша аналогия не подходитelCreator
13.12.2018 22:04в моей аналогии задача человека решена достаточно хорошо. Именно поэтому я против подхода, заключающегося в измерении результатов работы в рамках одной задачи. Задачу ставит заказчик, для которого понятия качество (расширяемость, чистота, интуитивность и прочие параметры) кода — вне его компетенции, и принимает результат без учета этого критерия, по результатам тестирования. И заказчика нельзя в этом винить. А вот человека, умышленно срезающего углы в надежде на то, что фиксить результат не ему — можно и нужно.
JekaMas
13.12.2018 22:10Аналогии можно придумывать.
Давайте ближе к делу — примеры задач, ревью, последствий. Хоть будет что обсуждать.
yurrig
11.12.2018 21:01+3Он подбросил человеку информацию к размышлению, и дал возможность расти, не травмируя его эго. Если вы растите цветок, его надо поливать, а не тащить вверх за стебель удавкой)
sergey-gornostaev
12.12.2018 07:16-3Я понимаю, что все люди очень разные, но в голове всё равно не укладывается аналогия между цветком и техническим специалистом. Что касается травмирования, например меня невозможно травмировать словами, и одновременно я всегда лучше понимал и запоминал то, что далось мне с трудом и через болезненные ошибки. Уверен, я не один такой. Без сурового наставничества какой-то процент джунов просто потеряет возможность сформироваться как специалист.
HerrDirektor
12.12.2018 07:58-1Давайте я более суровый вариант аналогии предложу?
Вариант 1: сказать джуну, что он тупой ишак и код у него говно.
Вариант 2: сказать джуну то же самое, но пояснить, почему вот этот кусок — говно, и показать как правильно.
В каком случае специалист вырастет быстрее и лучше?extempl
12.12.2018 08:06-1Отвечая только на этот коммент, а не на ветку — зависит.
Кроме очевидных последствий, есть тип людей, который во втором случае скопипастит, а в первом загуглит и поймёт. А может загуглит и скопипастит. Тут не знаеьш наверняка, надо быть немного психологом чтоб применять нужный подход с определённым человеком :)
sergey-gornostaev
12.12.2018 11:34-3Третий вариант забыли: вообще не сказать джуну про проблему, ласково ему улыбнуться, погладить по голове и сказать, что он самый умный и хороший в мире.
HerrDirektor
12.12.2018 12:20Нет, я написал именно то, что хотел. Третий вариант вы придумали сами. Он не годится для воспитания специалиста, разве что только для какого-нибудь умственно неполноценного.
batyrmastyr
12.12.2018 14:06+2Третий вариант, в его худшем варианте, выбрал автор статьи: сказал «поправить пару мелочей». Заставил править мелочи, несмотря на то, что и код, и исправления улетят на помойку, а о существенных ошибках умолчал.
slamon
12.12.2018 12:23При варианте номер 3: пояснить джуну, почему вот этот кусок — говно, и показать как правильно.
А за ишака может (и должно) прилететь в лицо.
Я в принципе не понимаю, как одни коллеги могут себе позволять негативно-личностные фразы в отношении других, для меня это что-то за гранью.HerrDirektor
12.12.2018 12:40Вы как-то странно реагируете на абстрактные вещи.
Если моя мысль непонятна, то разверну ее:
Условную фразу (подчеркну, это условная фраза) «тупой ишак» можно завуалировать 100500 способами, но смысл останется именно таким. Даже если просто сказать «твой код говно» — это многих обижает («они считают меня тупым» (С)).
Комментатор выше настаивает на том, что джунов нужно дрочить и только так они станут «настоящими», а все остальные пусть отсеиваются. Ну раз так с ним поступали и он «достиг», значит это «единственно верный путь».
Я же утверждаю, что эффективней будет не просто дрючить новеньких, но и объяснять, где и в чем проблема.
Поэтому вариантов в любом случае два — просто сказать, что «код говно», или показать, почему он говно и как его лучше исправить.
sergey-gornostaev
12.12.2018 16:53Если под «комментатором выше» вы имели ввиду меня, то вы ошиблись, я не предлагал никого «дрочить». Просто предлагаю не замалчивать ошибки, чтобы не ранить нежных чувств. Предпочитаю, слышать и говорить правду.
Stas911
13.12.2018 05:45В обоих вариантах сказавший бы вылетел с работы в любой нормальной компании в течение часа после того, как это станет известно руководству и HR (а это станет известно непременно и очень быстро).
saboteur_kiev
14.12.2018 01:50нет. Либо «нормальных» по вашему компаний в мире гораздо меньше, чем вам кажется.
Skerrigan
12.12.2018 09:46В чем-то с вами соглашусь и понимаю… себя не могу назвать тем, кто «с пол-оборота въезжает в тему». По внутренней шкале ставлю себя на 2-3 балла из 10 по «когнитивности». В итоге, по логике вещей, программист из меня не должен был получиться вообще и произошло это как через «огонь-воду-медные-трубы», так и «не благодаря, а вопреки».
gatoazul
12.12.2018 17:34У меня на голени и теперь еще виден след от зубов доктора Друсса; он укусил меня отнюдь не в припадке бешенства, а для того, чтобы мне лучше врезалась в память его теория спинов (иначе, закрутов) — не левых и не правых, но третьих. И точно, он своего добился: я запомнил все досконально.
Ст. Лем, «Осмотр на месте»
gasizdat
12.12.2018 07:30+1Не так давно на хабре было написано множество статей на тему собеседований. Было сломано множество копий по поводу глупости интервью и спесивости интервьюеров. Так вот, как по мне, то гораздо честнее и лучше для всех, завернуть подобных «кандидатов» еще на входе, чем потом строчить проникновенные статьи с покаянными историями всепрощения. Программирование это не девушка, а отрасль с довольно дорогой ценой ошибок (а в ответственных применениях, так и вообще запредельной) тут нет места чувствам.
GRaAL
11.12.2018 19:14+7Мне показалось это своеобразным ответом на ту статью про «токсичность». И местный посыл быть добрее мне нравится куда больше.
Но в этой истории мне не показалось, что кто-то выиграл от вашего решения. Если код действительно плох, то все-таки не стоит его пропускать. Думаю, ревьювируемый тоже это понимает и хочет научиться разрабатывать лучше, а без обратной связи это сложоно сделать. Достаточно было бы, возможно, сменить тон комментариев на более конструктивный.
У меня была похожая ситуация, когда мне надо было ревьювить новичков/стажеров. Боюсь, мои ревью были довольно грубыми. В конце концов я сам это понял, как и автор статьи, и отказался от работы со стажерами т.к. не видел в себе сил перестроиться прямо сейчас.
Сейчас я занялся спортом и иногда представляю себе, что было бы, если бы мой тренер вел бы себя так же, как я тогда. Не думаю, что мне бы это понравилось.selivanov_pavel
11.12.2018 21:37+6> если бы мой тренер вел бы себя так же, как я тогда
А вы занимаетесь спортом для собственного удовольствия или выступаете за деньги? И зависят ли деньги и работа других людей от того, насколько хорошо вы выступаете?
Хотели бы вы оперироваться у хирурга, чьи наставники вели себя максимально мягко и щадяще, танцуя на цыпочках вокруг его нежного как зефир в шоколаде эго? Ни в коем случае не критикуя за серьёзные ошибки, лучше самим потом молча поправить, ну если пациент ещё жив конечно.Hardcoin
11.12.2018 22:49+13В России пока только такой выбор. Или вы**ть за косяк или "танцевать на цыпочках вокруг его эго". Критика в позитивном ключе пока воспринимается как сумасшествие с запада, типа геев.
Однако исследования говорят, что результат от позитивного подкрепления выше. Хирург, которого направляли и учили, с большей вероятностью проперирует хорошо, чем тот, которого грубо ругали, потому что от него жизни зависят. А диплом получат скорее всего оба.
selivanov_pavel
11.12.2018 23:00+3А как выглядит критика в позитивном ключе? Я совершенно не против геев, но в случае с работой предпочитаю, чтобы мне прямо сказали «Здесь и здесь ты сделал совсем неправильно, потому так-то и так-то. А вот здесь терпимо, но можно лучше».
Вы**ть за косяк — это что-то в армейском стиле: кто-то на кого-то орёт, переходит на личность, унижает. Такое, конечно, недопустимо и неэффективно.
Но автор статьи не просто предлагает нормально общаться — тут я двумя руками за. Он пишет «Ничего страшного, если код плохой, я и сам могу его поправить». То есть новичок не получает нормальной обратной связи, чтобы не дай бог ни капельку не задеть его эмоционально. Гиперопека в чистом виде.Hardcoin
11.12.2018 23:06+2Ничего страшного, если код плохой, я и сам могу его поправить
Он просто ушел в другую крайность. Гиперопека, конечно, не хорошо. Но в данном случае видимо человеку дали слишком сложную задачу, раз он выдал так много плохого кода. Разносить в комментариях бесполезно, надо разбить задачу на две или дать другую, где косяков будет не много.
Позитивная обратная связь — сложный навык, нельзя просто решить, что теперь буду так общаться, этому ещё научиться надо. Как кататься на велосипеде. Но если автор захотел, то научится, конечно.
selivanov_pavel
11.12.2018 23:15+3Может быть, дали слишком сложную задачу. Может, у человека были какие-то личные неприятности и он не мог сконцентрироваться. Может, он плохо себя чувствовал в тот день. Я его, собственно, и не осуждаю. Но факт уже свершился — он получил эту задачу и отдал на ревью много плохого кода.
Так что теперь с ним делать? Что ему сказать? Как автор «всё хорошо, тут пара замечаний» и потом самому молча поправить? Или ещё как-то? Как всё-таки дать эту позитивную обратную связь, если код плохой? Я понимаю, как дать позитивную обратную связь, если код был достаточно хороший — похвалить, отметить улучшения по сравнению с прошлыми задачами.Nalivai
12.12.2018 02:00+6А что, правда не понятно что-ли? Не очевидно как указать на ошибку, не переходя на личности и не распылясь саркастическими пожеланиями вон из професии?
«В 143 строке ошибка, это работает не так а вот этак, поэтому правильно будет вот так вот» — хороший, полезный, нейтральный по тону фидбек, которого ждут от код ревьюера.
«Это тебя в твоей шараге научили такую хрень как в 143 строке писать? Это надо совсем нихера не понимать, чтобы такую херню придумать. Выкинь и переделай, быдлокодер.» — вредный кусок зла, не несущий никакой пользы никому, и преднозначенный только чтобы почесать эго.selivanov_pavel
12.12.2018 02:11+2Так я обеими руками за объективность, нейтральный тон и вежливость. А переход на личности вообще не допустим в обсуждении рабочих вопросов.
Но меня убеждают, что надо давать не объективный фидбек, а «позитивную обратную связь» — то есть каким-то чудесным образом указать на ошибку в 143 строке, но так, чтобы это подняло самооценку и настроение того, кто ошибку допустил.
А автор статьи вообще пишет в конце «Вместо этого дал чуваку комменты с вежливыми предложениями поправить пару мелочей. Ничего страшного, если код плохой, я и сам могу его поправить». То есть он дал необъективный фидбек, а потом молча исправил чужую ошибку.Nalivai
12.12.2018 03:42+1Ну во-первых, указать на ошибку так чтобы это подняло самооценку и оставило хорошее настроение не только возможно, но и правильно. Цель ревью же в том, чтобы плохой код не уходил в продашкн, а кодер стал лучше и писал меньше плохого кода. И вот этот вот момент, что его надо обязательно наказать, а хвалить вроде как не обязательно — это же его работа — этой цели не помогает, а мешает.
selivanov_pavel
12.12.2018 03:51-1> указать на ошибку так чтобы это подняло самооценку и оставило хорошее настроение не только возможно, но и правильно
Как, чёрт побери, это сделать? «Молодец, что ошибся»? Хвалить надо, конечно. Я никогда не писал, что не надо. За удачные решения, за хороший код. Как и главное зачем хвалить за ошибку?
Я не призываю никого наказывать, ошибки — это нормально, единственный способ их не делать — не писать никакого кода совсем. Но за ошибку должна следовать объективная критика, а не похвала.Nalivai
12.12.2018 04:11+3Да что ж за дихотомия-то такая, что за бинарное хвалить-ругать? Указать на ошибку или на лучшее решение можно под видом передачи сакральных знаний, или под видом "добро пожаловать в крутой клуб тех кто тоже так ошибался", или каким-нибудь "давай сменим приоритеты", да тысяча совершенно нормальных ежедневных перебросов информацией, не включающих в себя совершенно не работающее тыканье носом в лужу.
Предвосхищая "а чо я такой крутой буду перед дураками распинаться", ревью это все-таки менторская работа, а процесс передачи знаний должен быть приятным обоим участникам, иначе он неэффективен и может принести больше вреда чем пользы.selivanov_pavel
12.12.2018 17:53Но почему вы считаете внятное корректное указание на ошибку «тыканьем носом в лужу»? Вы считает, что нельзя сообщить об ошибке, как-то при этом не обозвав и не унизив человека?
> под видом передачи сакральных знаний, или под видом «добро пожаловать в крутой клуб тех кто тоже так ошибался»
В детском саду всем детям всегда говорят, что они молодцы, независимо от того, насколько удачная поделка из пластилина получилась. Просто за попытку. Это правильно, потому что это дети.
Но если человека наняли разработчиком — значит, как минимум он или она достиг 18 лет. Он обязан соблюдать законы, платить налоги, имеет полное право распоряжаться своей жизнью, право защищать себя и своих близких с оружием в руках в случае необходимости. Может быть, он всё же уже способен воспринять вежливое и корректное сообщение о своей ошибке, не получив при этом тяжёлых психологических травм?Nalivai
12.12.2018 19:22Вы мне приписываете что-то чего я не говорил. Есть внятное корректное указание на ошибку, а есть тыканье в лужу носом и прочее доминирование. И часто люди в позиции силы эти две вещи не разбирают, и считают «ртфм, нуб» внятным комментом на кодревью.
А при передаче знаний очень важно не выделываться и не вещать с олимпа дуракам, а просто рассказывать. И если чтобы этого добиться, есть вариант приободрить получающего, то лучше это сделать, от этого всем станет хорошо.
Еще раз: код ревью и предполагает вежливые корректные исправления ошибок, и очень важно оставаться в рамках вежливой корректности, и если уж выходить за их рамки, то только в положительную сторону, где начинается разговор двух приятелей о перепитиях сложного языка, и ни в коем случае не в ту, где строгий учитель отчитывает нерадивого разгильдяя.selivanov_pavel
12.12.2018 23:40Автор статьи предлагает скрывать ошибки и потом по-тихому их исправлять, что собственно меня так сильно и возмутило.
andreysmind
12.12.2018 20:01Очень хорошо работать с американцами из Калифорнии. Они мастера позитивного фидбека.
На ошибку обычно получаешь комментарий типа «В целом код отличный, хорошая работа, но вот в этом месте мне кажется можно было решить по другому: <описание проблемы и решения>».
На Восточном побережье они, правда, немного грубее и прямее.selivanov_pavel
12.12.2018 23:52Мне бы пожалуй такой подход не понравился: во-первых, ощущается некоторый обман — код отличный, но надо было делать по-другому. Какой же он тогда отличный? Во-вторых, если хвалят всегда, независимо от результата, даже это обесценивает похвалу. Гораздо приятнее, если тебя хвалит человек, который не стесняется выражаться прямо. Но, разумеется, дело вкуса.
u010602
13.12.2018 00:10Это не так. Есть такие люди, которым в целом оценивание кажется грубым, и эта вот «похвала того, кто всех ругает», тогда воспринимается как «ты что думаешь я за твою похвалу тут стараюсь? кто ты такой что-бы оценивать?» Потому эти в целом позитивные ни чего особо не значащие оценки воспринимают нейтрально с легким налетом позитива. А реальная похвала выражается в денежном эквиваленте, если я такой хороший — повысь мне зарплату или дай премию. Это даст мне возможность работать меньше, и больше времени проводить с семьей, за что я буду реально благодарен. А этот пустой треп, от такого-же как и ты, которые зачастую просто устроился в это место работы на пару лет раньше — воспринимаются смешно и наигранно.
Результатом ревью должна быть не оценка качества кода, а выявление мест, которые или содержат баги или могут быть реализованы иначе.
И по своему опыту скажу, что после работы в такой команде, где всегда позитивный фидбек. Отсутствие фидбека воспринимаешь просто как конец света: «почему он не сказал что все отлично? Может я накосячил где-то?» И уже сам начинаешь думать, анализировать, сам спрашиваешь что можно улучшить и т.д.
Другими словами такая схема лучше подходит для людей с внутренним локус контролем, и стимулирует его вырабатывать. А люди с внешним локс контролем в такой среде вообще работать не могут, они тупо сидят и пинают, неделю вторую, месяц. Потом или сами уходят или их мило так увольняют — мол не сработались, бывает.
JekaMas
12.12.2018 09:39Отличные примеры.
Можно пойти и чуть дальше "я думаю, что это работает вот так, а не так. Поэтому строка 143 выдаст результат, отличный от ожидаемого. Надо нам проверить это поведение по спеке, документации. А еще лучше, добавить тест на этот кейс".
Ревьюер может ведь и ошибаться...
webkumo
12.12.2018 02:13Много плохого кода может быть сильно разных уровней.
Если мне не нравятся локальные переменные final в java, объявленные так без необходимости (есть редкие случаи, когда иначе — нельзя), то для меня при первом столкновении с таким стилем кодирования это было натурально плохим кодом. При этом на проекте не было чёткого правила по этому поводу. И вот это для меня вроде как плохой код (визуальный шум и всё такое… а на java и без того сильно ругаются за многословность). Но требовать его изменить на код-ревью — я не буду (если нет строгих правил кодирования по этому пункту).
А бывают ошибки, которые с вероятностью 50% дают NPE | OOO или ещё какую-нибудь радость… там я, естественно, молчать не стану, но сперва постараюсь подать инфу так, чтобы человек сам допёр, что же получилось, и только если не получилось — буду говорить прямым текстом о проблеме.selivanov_pavel
12.12.2018 04:07+1В статье обсуждается момент, когда более опытный программист делает ревью кода менее опытного. Так что будем считать, что ошибки всё-таки достаточно серьёзные, а не вкусовщина.
В вашем ответе есть конструктивное предложение — «подать инфу так, чтобы человек сам допёр». Это уже по сути менторство — очень круто, но не всегда на это может быть время.
Но всё равно, даже в таком виде — это критика, а не позитив. А вдруг нежный и ранимый джуниор воспримет эти наводящие вопросы как изощрённое издевательство? Автор статьи вон призывает ошибки скрывать, а потом по-тихому самому править.Nalivai
12.12.2018 14:58Никто не говорит что любая критика — плохо. Даже в статье написано про распыление в саркастических замечаниях. Конечно, молча переписывать не очень продуктивно, не обучает, но вот переписать и ненавязчиво сказать об этом — типа, смотри как я себе это вижу, я считаю что так будет лучше, потому что вот и вот — это, в общем-то, уже нормально.
Arris
12.12.2018 04:18+1Критика в позитивном ключе:
Так писать плохо, вот почему: <в двух словах или ссылкой>. Лучше/правильнее писать вот так: <...>.
selivanov_pavel
12.12.2018 18:01Нет, это обычная вежливая и объективная критика, без всякого лишнего позитива. То, от чего автор статьи предлагает отказаться и по-тихому править чужие ошибки самому.
janson
11.12.2018 23:08Но жёсткое, до жестокости, наставление, с постоянным тыканием часто приводит к тому, чтобы в случае ошибки ориентироваться не на исправление последствий, а на то, чтобы никто не узнал.
Не про IT, но про РФ (скорее весь бывший СССР).
selivanov_pavel
11.12.2018 23:22+2Зачем тыкать? Это действительно лишнее. Просто объективно сказать «вот тут и тут — плохо; тут — ничего, но можно лучше; тут — хорошо». Автор в конце статьи призывает говорить, что всё хорошо, а потом самому молча исправлять. И очень гордится таким подходом.
CheatEx
12.12.2018 11:42Там выше уже говорили про отрицательный отбор. Для медицины кажется получится особо красочно.
Чувак оставшийся на месте где его 8 лет макали в дерьмо психопат практически наверняка. Дальше вопрос: ему сейчас карьерно выгоднее записать +1 успешную операцию на баланс или интереснее посмотреть что будет если вот эти пару нервов перерезать.selivanov_pavel
12.12.2018 18:09Но почему все считают объективную критику «маканием в дерьмо», «тыканьем носом в лужу»(из другого комментария) и прочими видами психологического насилия?
Неужели невозможно сказать «у тебя здесь такая-то ошибка», не добавляя к этому «потому что ты тупой до****б»?
Автор в конце статьи предлагает скрывать ошибки и потом по-тихому исправлять их самому. Вы хотели бы попасть к врачу, прошедшему такое обучение?CheatEx
12.12.2018 20:09Если так то всё норм. Но тогда я не понял что Вам в коменте начала ветки не понравилось.
> Ничего страшного, если код плохой, я и сам могу его поправить.
плохой код != содержит ошибкиselivanov_pavel
13.12.2018 00:01Мне не понравилось, что автор предлагает скрывать ошибки, не давая честной обратной связи, а потом по-тихому их исправлять. Очень гордится таким подходом, сравнивает с айкидо.
> плохой код != содержит ошибки
Код может корректно работать, но быть неудобным для дальнейшего использования и изменения. И лучше узнать об этом на ревью, чем через год выяснить, что ты так и не научился писать нормальный код, потому что за тобой всё исправляли.
Am0ralist
12.12.2018 15:11Сейчас я занялся спортом и иногда представляю себе, что было бы, если бы мой тренер вел бы себя так же, как я тогда. Не думаю, что мне бы это понравилось.
А теперь представьте, что вы имеете шансы на профессиональную карьеру спортсмена?
Где чаще всего решает именно психологический настрой и умение встать после провальной ошибки продолжить выступать?
Где, когда лидер вдруг на каком-то этапе сходит с соревнования, идущие после него не в силах совладать с нервами и начинают сыпаться, так что чемпионом вдруг становится не тот, кто смог круче всех, а кто смог совладать с чувствами?
Где у китайцев на 3 места в сборной есть тысячи кандидатов и если ты провалишься серьезно один раз — следующего уже не будет, потому что есть ещё 999 желающих оказаться на твоём месте?
Спорт — это очень хорошая ассоциация. Весь вопрос в том, какая цель итоговая.
Если у вас цель — кубики и внимание девушек, то тренер вас может и облизывать.
Если же цель стать лидером, то вначале вам нужны именно стальные нервы и умение из любой критики вычленять существенные факторы, игнорируя эмоции. Потому что даже если вас будет облизывать тренер — всегда найдутся те, кому будет выгодно макнуть вас в ваши ошибки.andreysmind
12.12.2018 20:05+2Там где карьера заканчивается в 30 лет из-за травм и превозмогания?
Вообще карьера спортсмена\певца\художника отличается от карьеры программиста.Am0ralist
12.12.2018 21:31Все же заканчивается борьба чаще всего (и то не во всех), а карьера может и продолжаться, переходом в тренеры, участием в каких либо шоу и т.п.
Но если программист в итоге выводится из строя на долго или даже на всегда от грубого ответа, едкого замечания и т.п., то что случится с ним, если в какой-то момент будет аврал и от него потребуется в достаточно психологически не простых условиях собраться?
Это хорошо, если пишешь игрушечки в плеймаркет, сайтики-визитки. А вот как только от результата начинает много зависеть — без эксцессов ничего не будет происходить.
Я ж не призываю всем программистам устраивать армейку для тренировки экстремальной психологической устойчивости (ха-ха-ха, мда). Я лишь указываю, что тренер в спорте ради спорта и тренер на результаты — будут вести себя совершенно по разному просто даже из-за вашей собственно мотивации.
dipsy
11.12.2018 19:17+2Так всё-таки, что в итоге выгоднее для бизнеса? Нормальное код-ревью или попытки ласково объяснять мальчику-дауну, что тыкать вилочкой котику в глазик не надо, ему же неприятно? Может совсем конченых в коллективе и нет смысла держать, далеко не все из них способны поднять свой скилл до уровня хотя бы вменяемости.
JekaMas
11.12.2018 20:52+9Могу привести пример проекта, откуда из одной команды в другую ноги унесли 2 спеца, а третий и просто ушел, из-за вот такого отношения, что кто-то "мальчик-даун", но мы сейчас его на ревью поправим под свои стандарты.
С чего это стало нормальным? Вроде задача продукт сделать, а не выделать конченных и не конченных, достойных своего уровня?bogolt
12.12.2018 01:58+2Если в ревью пишут явные или завуалированные оскорбления это повод идти к начальству, чтобы оно объясняло людям почему так делать нельзя.
Но это совершенно повод спускать явно плохой код на тормозах. Плохо нужно четко разделять
— проблемые места кода ( человек неправильно понимает как работает фича ЯП например )
— проблемы в архитектуре
— непривычный стиль написания кода
Третье имхо не проблема, хотя удобно когда команда пишет в более менее одном стиле. Но вот первые два должны быть четко завернуты после ревью на проработку столько раз сколько нужно чтобы код не вызывал претензий.
petuhov_k
12.12.2018 05:54+2Если нет консенсуса с одним ревьюером, приглашай в пулреквест другого члена команды. Если конфликты всегда со дним и тем-же ревьювером — доносите до руковдства, что с ним проблемы. Если ревью делает единственный диктатор — то это проблема не ревью, а вашего процесса.
wunderwaffel
11.12.2018 22:00+16Интересно, с каких пор под нормальным ревью понимают разнос и унижение.
О код ревью я узнал на первой полноценной работе — в университете такому не учили. За год ни разу не было разносов на ревью — комментарии всегда абсолютно кореектно и по делу, даже при очевидных глупых ошибках. Не боже мой попасть в команду с кем-то в чтиле автора статьи (до реинкарнации).
j_wayne
11.12.2018 19:27+5>> Вместо этого дал чуваку комменты с вежливыми предложениями поправить пару мелочей. Ничего страшного, если код плохой, я и сам могу его поправить.
Зачем тогда вообще code review нужен?
Понятно, что с людьми вежливо нужно обращаться и особенно вежливо с теми, кто ниже тебя по рангу.
Но ИМХО, посыл статьи кто-то может понять как призыв отменить code review вообще, как токсичный и обидный. Как вырванные из контекста слова Кнута про premature optimization, которые зачастую являются индульгенцией не думать наперед.Hardcoin
11.12.2018 22:51+6Зачем тогда вообще code review нужен?
Что бы на бой не попал плохой код. Если его поправит более знающий, это приемлимо (с точки зрения бизнеса).
j_wayne
12.12.2018 10:29Но это же даже если абстрагироваться, лишь оперативно-тактический уровень.
А как же стратегия? Как он будет обучаться без обратной связи?
А если не абстрагироваться, то у знающего и своя работа есть, а ЗП он только за себя получает.CheatEx
12.12.2018 11:51+1> Как он будет обучаться без обратной связи?
Читать чужой код, следить за PR в компоненты в которых что-то менял. Получать чужой код на ревью.
> знающего и своя работа есть, а ЗП он только за себя получает
Значет code review не нужен в этом проекте.j_wayne
12.12.2018 12:16+1И ради чего все это? Чтобы джуниору было комфортно? Так никто и не говорит, что нужно его оскорблять. В чем проблема в спокойном тоне указать на явные проблемы в коде и пояснить по всем вопросам?
> Получать чужой код на ревью.
И что это будет за ревью, если он свой код писать не умеет?Nalivai
12.12.2018 15:20+1Чтобы джуниору было комфортно?
А что, это плохо?
Но, конечно, фидбэк важен любой, отрицательный и положительный. И я бы сказал, что важен одинаково.j_wayne
12.12.2018 15:25> А что, это плохо?
ИМХО само по себе нет, если не возведено в абсолют («лучше сам перепишу, только бы не обидеть»).
Про фидбэк с вами согласен.
SamDark
11.12.2018 19:28+4Ощущения понятны, но итог печальный: новичок так и не узнал, как улучшить свой код, не прокачался, застрял в развитии. А ведь можно не разносить, а советовать, интересоваться, всё ли в ревью понятно и давать ссылок почитать-прокачаться.
Nalivai
12.12.2018 15:21Ну или прочитал исправленый код, и понял где был не прав. Всякое ж бывает
SamDark
12.12.2018 15:33Такие ребята в новичках долго не задерживаются :)
Nalivai
12.12.2018 17:30+1И таких, в общем-то, если не большинство, то приличная часть. И ради них можно и постараться, поиграть в хорошего ментора, для работы это, в целом, полезно.
SamDark
12.12.2018 20:09Всё так. Главное не перегибать. Ни в сторону "ой обижу" ни в сторону "я его уничтожу". Вежливо, по делу, с аргументами.
yukon39
11.12.2018 19:31+3Ни раз ловил себя на мысли, что после моего ревью впечатлительный человек может если не уйти из профессии, то, как минимум, написать заявление.
Но этого никогда не случалось. Почему? Потому что потом беру стул и построчно объясняю, где, как, и главное, почему разраб прокололся. Помогает? Не совсем. Кто-то просто механически поправит, кто-то сядет и перепишет так, что потом сияет — мол поймай меня теперь. К сожалению, первых сильно больше половины. Зато вторые уже через год бодро отлавливают баги в моем коде. Чем я очень горжусь (не багами, нет), а людьми. Что для них, как и для меня, написание хорошего кода не невозможная страшная вещь, а вдумчивая кропотливая работа над самим собой.
worldmind
11.12.2018 19:34-1Отказался от хорошего ревью — лишил человека возможности вырасти, а компанию хорошего кода. Вот же буквально вчера человек всё сказал про «доброту».
g6uru
11.12.2018 19:39- Нельзя пропускать коммиты если они содержут явные ошибки (Errors). Напр.: Забыл обернуть в транзакцию БД.
- Остальные замечания сделать рекомендательными (Warnings). Удобно делать их вопросами. Напр.:
Почему были использованны двойные кавчки вместо одинарных?. По факту это вкусовщина. Если инициатор коммита задумался после вашей рекомендации, то он скорее поправит код. Возможно это было осознаным решением. А возможно вам нужно забить на это замечание. - Ну и пулреквесты должны быть вменяемого объема, чтобы проверяющий их смог переварить. С 1000 строк я вероятнее отклонил PR.
alsii
11.12.2018 19:573. В суровом ынтырпрайзе какая-нибудь entity вполне может быть и поболе 1000 строк. А к ней еще будут всякие репозитории, контроллеры, вьюхи и проч. И часто для одной фичи нужно несколько новых entity. Не разбивать же это на несколько PR?
g6uru
11.12.2018 22:08+3Ну а почему бы и не разбить?
feature/epic_new_entity => feature/epicalsii
12.12.2018 12:34Коммитов может быть и несколько. Даже скорее всего будет несколько: entity1 + тесты, репо1 + тесты, и т.д. А вот PR зачем дробить? Мне кажется, что PR должен выразать нечто целостное — реализованую фичу, поправленный баг.
g6uru
12.12.2018 13:16Ну тут все зависит от того какое у вас flow, какие инструменты и самое главное как вы договорились.
Я смотрю на это так: PR это запрос на code review. Он должен быть удобным для code review. Мы используем гитхаб. Для большой фичи создается ветка 'feature/epic'. В эту ветку идут небольшие PR, из малых веток 'feature/epic_new_entity' поскольку они небольшие их удобно смотреть и проверять. В малые ветки коммиты используются как сохранения. После того как ветка 'feature/epic' стала осмысленной, мы ее обновляем по мастеру, сквошим, ее протестировали автотестами и руками. После этого делаем PR в мастер.
Поскольку в мастер отправляются засквошенные ветки коммиты в мастере выражают что-то целостное фичу, баг по истории комитов можно проследить историю проекта.
Малые ветки позволяют прогерам сохранятся также часто, как они жмут quick save в своей любимой игре.
PR в эпики делет code review удобным.
alsii
12.12.2018 17:56> Ну тут все зависит от того какое у вас flow, какие инструменты и самое главное как вы договорились.
Именно.
> После этого делаем PR в мастер.
И тут опять code review? Насколько я понимаю нет.
Hardcoin
11.12.2018 22:57+2Если эта энтити — генеренная (плюс генеренные контроллеры и т.п.), то да, без проблем может.
А если в ней сразу функционала на тысячу строк, то это немалая фича. Сразу возникает желание проверить на копипаст из соседнего класса.
А уж если новичок фичу такого размера запилил, то что-то, возможно, идёт не так.
g6uru
11.12.2018 23:09+1Я конечно не исключаю, что и такое может быть и по другому никак. Но обычно стоит разделить такую Entity на структуру, пару тройку другую сервисных объектов, интеракторов, фабрик.
alsii
12.12.2018 12:45Хм… Entity — это экземпляр имеющий уникальный id, отличающий его от других экземпляров класса. Его свойства хранят информацию о данном объекте. Зачем его разбивать? Как этот разбитый объект потом хранить? Наворачивать логику в репозиториях или таскладывать по разным таблицам, а потом нагружать сервер join-ами?
g6uru
12.12.2018 13:01У вас Entity это только структура или еще и БЛ?
alsii
12.12.2018 18:17Это класс со свойствами, конструктором(-ами), геттерами/сеттерами и логикой целостности данных. И еще бывает с аннотациями, комментариями разного рода и т.п. Большая часть часть этого генерится автоматически IDE или фреймворком, но это не избавляет все это от попадания в PR.
Не, ну вот если взять например Kotlin с его data class, где большая часть этого добра генерится компилятором и сразу в байткоде… Тогда, конечно, жизнь сразу заиграет совсем другими красками. А в моей суровой реальности только стандартные getter/setter для одно свойства — это 23 строки с аннотациями и комментариями. Плюс 5-10 строк на описание своего свойства. Ну пусть будет 30 строк на одно свойство суммарно. Можно представить класс с 30 свойствами? А это уже 900 строк суммарно.
Насчет бизнес-логики. Мне как-то по жизни больше нравятся «тощие модели», где бизнес-логика отдельно, данные — отдельно. Но это — лишь один из возможных подходов.
alsii
12.12.2018 14:47> Если эта энтити — генеренная
Ага. Но и в генеренной может быть что-то руками дописано. И это что-то нужно проверять. Правда я в таких случаях делаю для работы генератора отдельный коммит. И потом один или несколько для ручных «дописок». Чтобы ревьювер не тратил время на ревью работы генератора :)
CheatEx
12.12.2018 11:54> entity вполне может быть и поболе 1000 строк
Это значит что техлиду надо самому подкачаться, да книжки почитать. А не гнуть пальцы в review.
poxvuibr
11.12.2018 20:11Остальные замечания сделать рекомендательными (Warnings). Удобно делать их вопросами. Напр.:
Почему были использованны двойные кавчки вместо одинарных?.. По факту это вкусовщина.Просто настроить статическую проверку кода и запретить комитить то, что её не проходит. И вообще не париться по поводу вкусовщины и вот этих все мелочей.
g6uru
11.12.2018 23:19Ну собственно, да. С кавычками я утрирую, но вот бывает, что проверяющий парится на вкусовщине — тут важно чтобы решение оставалось за исполнителем таска. Могут вдвоем запарится и ничего плохого в этом тоже нет.
Hardcoin
11.12.2018 22:53+1Почему были использованны двойные кавчки вместо одинарных?
Надеюсь, это шуточный пример )
Arris
12.12.2018 04:31Не всегда.
Я могу представить ситуацию, в которой после вопроса «почему были использованы двойные кавычки вместо одинарных?» человек начнет писать вместо
$x = "{$name}'s car is {$color}"
такое:
$x = $name . '\'s car is ' . $color;
А если кавычек не одна, а 5 или это какая-нибудь регулярка (мне лень придумывать в полпятого пример ;) ) — код превратится в нечитаемый ужас.
ozonar
12.12.2018 08:18Почему были использованы двойные кавычки вместо одинарных?
А как правильно ответить на такой вопрос? Вы сами говорите это вкусовщина — у человека просто именно такой подход, ему нравится двойные кавычки.
Если нет гайдлайнов к которым можно отослаться, то новичка такой вопрос деморализует — он же не знает как правильно, и будет считать что правильно всегда писать одинарные, например.g6uru
12.12.2018 10:22+1Цель вопроса не деморализовать, а заставить задуматься.
- Человек не знает, что одинарные работают быстрее, поэтому они предпочтительнее, если нет обработки переменных. Он ищет информацию об этом, или спрашивает у проверящего. И вносит изменения в свой код.
- Человек знает об этом, но данный код представляет из себя кладбище домашних животных. Время на рефакторинг нет. И кавчки не решат ни чего. Ну и смысл тратить время на исправление?
- У вас идеальный код. Везде одинарные кавычки, все по гайдлайну. Вы объяснили человеку почему это так, и как это важно для вас лично. Человек занимается умышленным вредительством, осознано. Кастрируйте этого тупорылого #@удака, пока он весь мир не заразил.
ozonar
12.12.2018 11:46+21. Человек ищет информацию, и находит что одинарные кавычки не работают быстрее, если нет обработки переменных (если брать PHP). И в чём смысл комментария в этом случае? Заставить задуматься о квалификации своего тимлида?
2. В этом случае тем более не имеет смысла этот вопрос — никакого бонуса в изменении кавычек не будет.
3. У человека есть гайдлайн, и его нарушение — явная ошибка. В таком случае никакого вопроса не нужно — это нужно исправить.
В итоге получается, что есть всего два варианта:
— Заранее сказать программисту: «У нас принято везде писать одинарные кавычки» и указывать на это как на ошибку в код ревью.
— Не обращать внимания на кавычки.
А вопрос только собьет с толку начинающего.g6uru
12.12.2018 12:32+1Не соглашусь. Если рассматривать наш диалог, именно вопрос привел к тому, что мы выяснили:
— Мы кодим на php
— Для php кавычки не влияют на производительность.
Теперь нам только осталось договориться о том, какие кавычки использовать. И вероятнее мы будем исходить из того, какие кавычки уже использовались в остальном коде.
В данном случае использовать\не использовать одинарыне\двойные кавычки становится осознаным. Это гораздо лучше чем «У нас принято везде писать одинарные кавычки».
Nashev
12.12.2018 13:26stackoverflow.com/questions/4871065/what-is-faster-in-php-single-or-double-quotes — вроде, работают быстрее. Но, типа, очень незначительно быстрее.
alsii
12.12.2018 18:44+1Простите, но там 2011 год… Еще только PHP 5.3. А сейчас PHP 7. И все уже совсем не так. Вот тут первый пользовательский комментарий — человек все померял. Рискну процитировать
выводыSo the «highest code performance» style rules are:
1. Always use double-quoted strings for concatenation.
2. Put your variables in «This is a {$variable} notation», because it's the fastest method which still allows complex expansions like «This {$var['foo']} is {$obj->awesome()}!». You cannot do that with the "${var}" style.
3. Feel free to use single-quoted strings for TOTALLY literal strings such as array keys/values, variable values, etc, since they are a TINY bit faster when you want literal non-parsed strings. But I had to do 1 billion iterations to find a 1.55% measurable difference. So the only real reason I'd consider using single-quoted strings for my literals is for code cleanliness, to make it super clear that the string is literal.
4. If you think another method such as sprintf() or 'this'.$var.'style' is more readable, and you don't care about maximizing performance, then feel free to use whatever concatenation method you prefer!
nsinreal
11.12.2018 19:40+4И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души.
Необоснованная экстраполяция до добра не доведет. Проблема заключается в том, что не все такие как ты. Когда я делаю код-ревью, то я не кайфую от чувства собственного превосходства. Я отлыниваю, я не хочу делать код-ревью. Я не хочу читать код, я не хочу писать замечания. Мне приходится это делать — вместо того, чтобы взять и просто поправить код. Я бы с радостью работал в одно рыло вечно, да вот только не получится.
Твой мотив быть говном — он только твой.
Laney1
11.12.2018 19:43+5- не поручать человеку задач, с которыми он не справится
- писать отзывы в вежливом и конструктивном стиле. Этот участок вашего кода не годится, потому что то-то и то-то.
- если есть желание, вычленить в коде системные недостатки (например, "автор плохо применяет паттерны проектирования") и посоветовать, как их исправить. Почитать литературу, начать пользоваться линтерами, и т.п.
- если человек не развивается и продолжает делать те же ошибки, то извините. Хороший человек — не профессия.
JekaMas
11.12.2018 20:45+2И я бы добавил:
- Код ревью должно затрагивать только код реквеста +- пара строк выше и ниже нового кода
- Делайте ревью, как люди
evgenyk
11.12.2018 20:20+2Мечта:
— Сделать гайдлайны.
— Замечания делать в двух случаях:
— Нарушение гайдлайнов
— 2*2=5 (Грубая ошибка).knstqq
12.12.2018 10:58+2гайдлайны на 80-100% должны быть покрыты хуками в репозитории — пока код не по гадлайну, коммит никуда не прилетит.
mOlind
12.12.2018 14:54+1То что покроют хуки, скорее всего покроет и lint обычный. А как гайдлайнами проверить паттерны? Или пять раз вызов одной функции, где можно было сохранить ее результат работы. Или пять раз копирование куска кода, который мог бы быть одной функцией. Или не использование каких-то базовых паттернов.
alsii
12.12.2018 18:55Или вот такое:
$orders = $orderRepository->find(['employee' => $employeeId]); foreach($orders as $order) { echo "{$order->getId()} {$order->getClient()->getFullName()}"; }
reinvent
11.12.2018 20:23+7По поводу менталитета. Не являюсь разработчиком, но с некоторого времени технические вопросы задаю только на англоязычных форумах. Потому что там нет насмешек, тыканий носом, смотри мануал и т.д., все вежливо и с желанием помочь
GnuriaN
11.12.2018 20:39Так было, наверное, всегда… может я и не прав, но последнее место где помогали был FIDONet.
MacIn
11.12.2018 20:51-2Похожая история с автолюбителями. Задашь вопрос про то, как починить что-то на российском форуме — и подчас получишь ушат высокомерных помоев в стиле «нищий, что за колхоз» и так далее. Спросишь на белорусском или украинском форуме — напишут, посоветуют, поддержат. На британском — тоже.
sergey-gornostaev
11.12.2018 20:59+3Да, на англоязычных автофорумах троллят тоньше.
MacIn
11.12.2018 22:35-2Троллинг — другая категория. Здесь именно о нездоровой атмосфере речь, той самой «токсичности».
SergeyMax
11.12.2018 21:59На самом деле всё зависит от модерации. Где-то злобные модераторы следят, чтобы старожилы не рассупонивались, а где-то просто карма довлеет.
selivanov_pavel
11.12.2018 23:45+5Если задавать вопрос, предоставляя всё нужное для его решения: конфиги, логи, дебаг вывод, сетевой дамп наконец если надо — и этим показывая, что ты проделал работу, прежде чем отнимать время других людей — то вполне нормально отвечают и на русскоязычных форумах. На том же самом ЛОРе, которым тут всех пугают как жутким филиалом токсичного хейтерского ада, я получал вполне себе конструктивные советы.
А вопросы вида «у меня что-то сломалось как починить», без следа попыток самому решить проблему или хотя бы помочь её понять людям, к которым обращаешься за советом — ИМХО заслуживают насмешек, тыканий носом, смотри мануал и т.д.reinvent
12.12.2018 07:09+2Благородный знает о своем превосходстве, но избегает соперничества. Он ладит со всеми, но ни с кем не вступает в сговор.
Благородный помогает людям увидеть хорошее в себе и не поучает людей видеть в себе дурное. А низкий человек поступает наоборот
Будьте строги к себе и мягки к другим. Так вы оградите себя от людской неприязни.
Конфуцийselivanov_pavel
12.12.2018 17:36А при чём тут превосходство и соперничество? Никто из отвечающих не пытается показать, что он лучше задающего вопрос.
Отвечающие тратят на чужую проблему своё личное время и силы. Поэтому задающему вопрос стоит проявлять к ним некоторое уважение. Иначе получается как-то так: «мне лениво приложить даже минимальные усилия для решения своей проблемы, даже прочитать сообщение об ошибке или один раз ввести его в гугл, где ответ будет на первой строчке. Просто сделайте всю работу за меня».
Кстати, у Конфуция половина высказываний про уважение к старшим, к более мудрым и всё в таком духе.u010602
12.12.2018 17:44Желание тратить силы и время — это личное дело отвечающего. Если решил сделать благое дело — делай, а не требуй соблюдение некоторых условий обращения с тобой.
Если вам не нравится «ленивый вопрос» — не давайте ответ, не тратьте время. Ведь ВАС лично, ни кто не просил. А то выходит вы сделали больше чем хотели, хотя вас не просили, и теперь злитесь на ни в чем не повинного человека.
Даже если человек просит сделать всю работу за него — зачем на него злиться? Просто не делай. Тема постоит пустая и отправится в архив.selivanov_pavel
12.12.2018 17:58> Тема постоит пустая и отправится в архив.
А вот если автору объяснят, как правильно задавать вопрос — то его темы перестанут отправляться в архив пустыми. И он в итоге найдёт решение своей проблемы.
> зачем на него злиться?
Злиться не надо. Но «ленивые вопросы» превращают форум в свалку с минимумом полезного контента. Оттуда уходят способные ответить люди, потому что тратить время на такие вопросы неинтересно, даже если просто их читать и игнорировать. Так что вред от них всё же есть.
danfe
12.12.2018 18:37Будьте строги к себе и мягки к другим. — Конфуций
Очень хорошее изречение, ныне более известное в IT как правило (закон) Постела aka robustness principle.
lightman
12.12.2018 07:38+4все вежливо
Иногда даже слишком. Гуглишь ошибку, попадаешь на форумы Microsoft и начинается…
Автор: У меня ошибка 0x0000001 в чём может быть дело?
ТехПоддержка: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Попробуйте, пожалуйста, выключить и включить, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Попробовал, не помогло
ТП: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Скажите, пожалуйста, с чего началась ошибка, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Началась внезапно
ТП: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Пожалуйста, предоставьте логи, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Скажите, как тут прикрепить логи?
ТП: Здравствуйте, спасибо что обратились к нам…
А-А-А! И ещё это с бесячей майкрософтовской дизайнерской фишкой:
делать
километровые
расстояния
между
строками. Палец стирается в кровь пока ищешь наконец уже ответ, скролля тонны этого этикетного буллшита.reinvent
12.12.2018 12:32Тут, видимо, свой менталитет) У меня все вопросы по Линуху, такого безобразия нет. И перезапуск обычно не предлагают)
JekaMas
11.12.2018 20:41+13Тоже встречаю и в иностранных компаниях, если в них есть помешанные на своем эго — всречал ребят из России, Украины, Польши, кто-то давно уехал с родины, кто-то нет.
Довелось год работать с одним "светилом" golang, который регулярно на хабре минусами отоваривается за свою агрессивную точку зрения. До работы бок о бок думал, что просто есть такие люди с жесткой точкой зрения… Поработав могу сказать, что я понял, о чем говорят, когда борются с токсичностью в команде, и как инструментом этой токсичности становится код ревью.
Если раньше услышав о токсичности лумал "бред какой-то", то теперь думаю, что есть зерно правды в требовании нетоксичной атмосферы.
Fengol
11.12.2018 20:46-13Очень классно описан образ обычного обиды! Хочу вас разочаровать, это не лечится. Все ваши рассуждения, это рассуждения обычного среднестатистического обиды. И вы достигли того чего достигли не потому-что вас кто-то обижал, а потому, что прошло определенное время. Авот вели высебя как обида, потому-что обида в своей душе. Другой, не обида, за тоже самое время, достигнет тех же результатов, но останется не обидой. И везде таких пруд-пруди. И все как один — обиды, только оправдываются по разному.
ozver
11.12.2018 21:04+2А теперь представим что компилятор будет таким же сентиментальным :)
Ну а если серьёзно — нужно учиться общаться с людьми, и чем больше человек раздражает — тем спокойнее нужно оставаться. Правда очень сложно не перешагнуть грань высокомерия при таком подходе, у меня вот пока плохо получается :(Simplevolk
12.12.2018 08:39+1Слишком сентиментальный компилятор со временем превращается в интерпретатор.
Am0ralist
12.12.2018 15:32Ну а если серьёзно — нужно учиться общаться с людьми, и чем больше человек раздражает — тем спокойнее нужно оставаться.
Это да… когда третий год постоянно ловишь фейл за фейлом одного разработчика, но другого у нас не будет — то в результате можно хорошо в мантры и медитацию прокачать.
Ибо обижать — нельзя. Раз за разом фигню творить — можно, а вот обижать человека — нельзя… Оммм…
Хотя смешнее было, когда на другом месте читал только список исправление и нововведений в новой версии ПО, и сразу отмечал, в каких местах по-любому будут ошибки и скорей всего какого плана. И примерно до 60% этого списка к ним возвращалось с указанием в каких местах оно работает не верно. Это при том, что зачастую треть-четверть изменений были по факту — найденные тобой же баги или предложенные фичи…
Kelsink
12.12.2018 16:43Когда команда ровная — да, все хорошо. Можно быть спокойным. Есть ревью, которое дает результат. А вот когда в команде появляются плохо обучаемые новички…
Нам вот недавно «для веса» на проект подкинули группу индиских коллег. Попросили обучить. Это что-то с чем-то. Я не люблю быть говнюком и вообще стараюсь всегда объянять и все комменты делать со ссылками на доку (или просто делать ссылку на нужную доку), но они меня ненавидят. Т.к. в их коде и ревьюить нечего. Чаще всего это тупая не рабочая копипаста со всем известных сайтов.
Жалуются начальству. Мы тоже жалуемся. А их не убирают с проекта. Не Россия, но бюджеты тоже пилить умеют)) В итоге просто прикапываем PR за PRом, тимлид выдает им новую задачу, а их задача переходит к нормалному программисту.
Они ненавидят CodeReviw я его начинаю ненавидть, а иначе никак.
kalyukdo
11.12.2018 21:09+4Полностью поддерживаю автора! а самое интересное в этом опыте то, что человек написавший %такой%код вернется к нему спустя буквально 2-3 недели и будет полностью понимать где он был не верным, автор верно подметил, когда большинство программеров приходило в профессию, код ревью в команде почти не было, и все дружно критиковали друг друга на форумах, тем самым атмосфера внутри команды была дружелюбнее, и именно этот момент давал толчок в развитии команды, а имея токсичного код ревьюера в команде, хоть и талантливого не всегда идет на пользу команде.
З.Ы
Иногда лучше гавняк гавняк и в продакшин, чем по несколько недель вычищать код стори которая всеравно будет переписана через пол года, потому что правила бизнеса будут требовать другого подхода
x67
11.12.2018 21:17Аособенно это видно при сравнении нашего Тостера с ихним StackOverflow.
На тостере частенько отвечают надменно, с пренебрежением и брезгливостью, причем даже не по сути вопроса. Причем я говорю о действительно сложных вопросах, не тех, когда человеку лень гуглить. На СО в этом деле приятнее, хотя и не сказал бы что разница прям глобальная, на СО видимо везло. А как меня однажды с говном смешали на аскубунте… Это был единственный случай, когда потребовалось получить ответ задав вопрос по данной тематике.
feligz
11.12.2018 21:22+4Так зачем переписывать код, если можно отослать на доработку, просто выделив нужные места. Например, тут исправить, тут потенциальный баг, тут заменить на такую штуку. Ведь это обычные рабочие отношения, откуда вообще тут берется хейт именно к человеку. К тому же понятно, что код джуниора будет слабым, с багами и прочее, так вы когда нанимали этого человека, чем думали. В данном случае старший разработчик четко должен был понимать с чем придется иметь дело и реагировать адекватно.
BHYCHIK
11.12.2018 21:24+4Ревьювить нижестоящих должен не любой опытный разработчик. А только условный «лид». Он должен не столько быть идеальным разработчиком, сколько хорошим педагогом. Я много работал со стажерами, удавалось выращивать до вполне хороших разработчиков. Метод простой — вы сами должны ловить фан от обучения человека. Радоваться от его прогресса, как от своего собственного. Не нужно переставать жестко ревьювить, нужно просто этот жесткий ревью доносить адекватно, помогать чинить. Да, на это тратиться время. Но вы же лид, а не просто разработчик — это ваша работа. Откровенно профнепригодных я встречал очень редко. И это всегда вопрос — как они собеседование-то прошли?
selivanov_pavel
11.12.2018 21:33+2И вот вместо того, чтобы помочь новичку развиваться, автор убедил его что почти всё в порядке, и либо увеличил технический долг проекта, приняв недостаточно хороший код, либо потратил своё время на то, чтобы его переписать. Отличный результат: все проиграли.
Автор, а вы хотели бы попасть на операцию к хирургу, чьи наставники вели себя максимально мягко и щадяще, танцуя на цыпочках вокруг его нежного как зефир в шоколаде эго? «В основном конечно неплохо. Правда была пара грубых ошибок и ещё несколько мелких, но ты не расстраивайся, со временем научишься. Этот пациент умер — завтра следующего привезут, ничего непоправимого, главное в себя верить». А если не умер — то вообще сами всё молча исправят на дополнительной операции, лишь бы ученика не обидеть.selivanov_pavel
11.12.2018 22:06-2Окей, минусы и за коммент и в карму. Но может напишете, в чём же я не прав? Думаю, моё эго это как-нибудь выдержит.
MTyrz
12.12.2018 23:33Я вам минусов не ставил, но объяснить могу.
Ваша неправота в применении демагогического приема, именуемого ложной дихотомией. Если наставники вели себя мягко и щадяще, это вовсе не означает, что учили плохо (более того, чаще неадекватность наставника обратно пропорциональна результатам учеников): но ваша формулировка такого варианта не подразумевает.
Таким образом, создается впечатление, что вы неявно агитируете за вариант максимально жесткого наставничества с оскорблениями, переходом на личность обучаемого, регулярным его унижением, етц, етц.
Вот за это старательно вами созданное впечатление неявной агитации вы и получаете минусы. Как мне кажется.selivanov_pavel
12.12.2018 23:46-1Не просто мягко и щадяще, а скрывали ошибки ученика и потом по-тихому правили их, как призывает автор статьи. Очень гордится этой своей находкой и даже сравнивает её с айкидо.
Я ни в коем случае не за переход на личности, унижения и так далее. Не знаю, почему мой комментарий так восприняли. Но честная обратная связь — самое важное, что наставник должен давать ученику. А скрывать ошибки — это просто вредительство какое-то.MTyrz
13.12.2018 17:56+1С моей кочки зрения описанная ситуация выглядит несколько иначе.
Очевидно, что товарищу выдали задание несколько не по умениям. Да запросто: не в программировании, но сталкивался многократно. Поэтому действия: указываем на то, что товарищу посильно исправить самостоятельно, остальное он все равно не потянет.
При этом вашу-то реальную позицию я понимаю, вы про нее в комментах проговаривались, и ничего общего она с унижением не имеет. Просто почему-то вы формулируете так, что эта позиция умело скрыта, а без вдумчивого чтения в глаза лезет эта самая ложная дихотомия.
М-мм… Наверное, правильным будет добавить, что автор статьи тоже в значительной степени попытался обозначить именно такую дихотомию. Вместо хотя бы матрицы 2х2, которая там вообще-то напрашивается в минимально похожем на реальность случае.
s-kozlov
13.12.2018 18:54А скрывать ошибки — это просто вредительство какое-то.
Толерасты и в коде так делают:
try{...} catch (Exception e){}
CREATE TABLE IF NOT EXISTS ...
poxvuibr
13.12.2018 19:37+1CREATE TABLE IF NOT EXISTS
Это не скрытие ошибок, это создание идемпотентного скрипта.
s-kozlov
14.12.2018 09:27В случае миграций такая вот идемпотентность — самое что ни на есть вредительство.
1. Миграционный скрипт должен накатываться на базу один раз. Если он вдруг накатывается повторно, это косяк, и его надо обнаружить и исправить, а не делать на базе черт знает что и радоваться.
2. При миграции надо четко представлять начальное и конечное состояния базы. Если мы не знаем, есть ли таблица, в базе бардак. За бардак в базе надо больно бить, потому что это не баг в каком-нибудь stateless-сервере, который можно исправить в коде и перезапустить.poxvuibr
14.12.2018 09:42В случае миграций такая вот идемпотентность — самое что ни на есть вредительство.
В случае миграций, да, так лучше не делать.
striver
11.12.2018 21:34+2Хуже бывает когда нет возможности отправить на ревью. И у тебя странное ощущение, вроде как работает, а может там вообще полная лажа, которая вылезет через месяц…
Rukis
11.12.2018 21:34+1А где выдержки формулировок из вашего ревью для примера? Я возможно не правильно понял, но вы вроде как пишите, что в ревью гнобите людей, осознали что это плохо и решили ограничиваться отписками по мелочам, а остальное править самостоятельно. Что насчет идей всё же писать по максимуму, стараться передавать опыт, но не гнобить?
eugene_bb
11.12.2018 22:16Надо градус повышать.
И на динамику прогресса смотреть. Видно развитие, улучшение результатов, то значит ок. Если не очень, то можно и поддать пару.
Как мне видится, основная проблема не в том что «порчу разрабам жизни своими код ревью», а то что многим — положить с пробором на вас и на ваш код ревью и сколько бы вы бисер вокруг них не метали, толку не будет. Хоть ласково, хоть грубо.
И печалится по их поводу не стоит. За большими зарплатами в индустрию идут разные люди, в том числе и откровенные паразиты и лентяи.
Поэтому видно что человек прислушивается к советам, то надо давать больше и детальнее отвечать, помогать расти. По собственному опыту и читал где-то, что производительность разработчиков может отличаться на порядок, так что лучше поискать того, кому это надо и кто в результате будет приносить пользу.
Вы потрудились и объяснили что и как, это уже много стоит. Мне вот в большинстве случаев закрывают код-ревью вообще без комментариев, так это хуже чем если бы негативно ответили.
maslyaev
11.12.2018 22:29dev.motivation ? Motivation.Love
Да уж, стойкое целостное понимание того, что только любовь творит чудеса, ой как не просто и не сразу приходит.
babayota_kun
11.12.2018 22:33+4А вот я люблю код-ревью. И в роли ревьюера, и в роли написавшего код.
Мне интересно пробовать найти баг в коде до его релиза в мастер-ветку.
Мне интересно писать комментарии к коду в весёлом стиле, иногда с шутками и смайлами, не обижая разработчика.
Мне интересно читать чужие комментарии к своему коду, потому что они позволяют развиваться или хотя бы смотреть на свою логику со стороны (и, на мой взгляд,)
Я практически всегда провожу ревью собственного кода перед созданием PR (вот прямо открывают дифф веток в используемом на проекте bitbucket ui и делаю ревью).
Наверное, единственное, что может сделаеть мои комментарии «токсичными» — это наплевательское отношение разработчика к задаче, когда код явно даже не запускался (пару раз сталкивался с ситуацией, когда коммитится код заведомо неверный, любая мануальная проверка функционала подтвердит).
«Токсичные» злые дяди-сеньоры тоже были в моей практике, но ни разу не ударили по моему самомнению. Да, код плох, да, я полностью переписал всё раз (два, три). Но я стал лучше.
PR и code review — это инструмент самообразования. И по моему опыту, весьма действенный.
NBAH79
11.12.2018 22:37+1Есть другая сторона видения проблемы: берется подряд на разработку, и чем меньше людей и зарплаты тем меньше расходы. Нанять одного нормального, а остальных дешевле, ведь всё равно нормальный всё поправит. И начальник получит программу, и потратит минимум денег. Всё бы хорошо, да только потом у программистов зарплаты ниже чем у машиниста в метро ;)
HeaTTheatR
11.12.2018 23:09+1Присылать свой код одному засранцу, чтобы он гадил в него с довольной рожей кота… Да ну на хуй!
Izulle
11.12.2018 23:23+8Не надо бросаться из одной крайности в другую. Как ревьюер вы обязаны указать на все замеченные баги (которые приведут или могут привести к сбоям). Все прочее — по ситуации.
Если вы уже нашли 10 багов, то не стоит указывать на недостаточную гибкость, плохую читаемость и прочее в таком духе. Пусть сначала поправит баги, а там можно подумать — говорить ли об этих материях или отложить для следующего PR.
AlekDikarev
11.12.2018 23:29+1А у меня были добрые хорошие учителя, у меня всегда была возможность самому осознать низкое качество кода и самому устыдится, осознавая, что они все это знали, но все равно разговаривая со мной на равных. Спасибо им за это, а автору за статью, благодаря которой я об этом задумался )
Geograph
11.12.2018 23:44Сначала подумал, ничего себе, значит не только на русскоязычных форумах кодеров такая атмосфера, а потом увидел, что это не перевод.
Повезло теперешним новичкам — им не нужно обращаться на эти «площадки», ведь теперь есть stackoverflow и github. Да и форумы эти с нулевыми посещениями, я думаю, давно загнулись.
mAAriellla
12.12.2018 00:41+2«Каждый мой коммент на ревью к его коду был гвоздем в крышку гроба. Я почти слышал стук молотка, нажимая «submit review». »
Ну уволили, и что? Многих увольняют, на этом жизнь не заканчивается. Если человек получал замечания по существу и не делал выводы и не исправлялся, а продолжал выдавать все-такой же поганый результат, так значит правильно уволили? Зачем держать такого?
Ну да, парня жалко, всех жалко, но это не причина, чтобы держать в компании профнепригодного.
sergeymelnichuk
12.12.2018 00:46+3Автора по человечески жаль, выглядит будто человек застрял в тупике и не развивается. Из собственного опыта, профессионалам высочайшего класса не нужно никому ничего доказывать или кого-то «наказывать». Здоровые конкуренция и дух соперничества это полезно и важно, ударение на слове «здоровые».
Автору искренне желаю найти новые пути развития и перестать быть «чемпионом зала».
musuk
12.12.2018 00:55+1Человеку нужен был ментор, а не злые комменты в ревью.
Если у компании нет ресурсов на ментора, то надо было увольнять и брать более скилового и дорого сотрудника.
Комментами в ревью такие вопросы не решаются, ибо делают только хуже: люди начинают бояться писать код в принципе. В итоге имеем полный отказ от любых видов рефакторинга и инициативы.
emacsway
12.12.2018 01:40+2Мы, когда-то, сильно облегчили процесс Code Review тем, что внедрили в работу Online Catalog of Refactorings. Раньше он выглядел немного по другому, там была краткая информация, диаграмма, и в правом верхнем углу — номер страницы книги, на которой разработчик мог получить исчерпывающую информацию. Использование этого каталога сильно экономило время, достаточно быстро повышало общий уровень разработчиков, устраняло эмоциональность из процесса. После выпуска в этом году второго издания книги, каталог был переделан, по моему, сугубо субъективному, мнению, не в лучшую сторону. Но он все еще остается полезным для процесса Code Review. Так же заметно устранили эмоциональность из процесса каталоги Code Smells так как они вносили в разногласия достаточно авторитетную аргументацию, которую признавали все.
Tangeman
12.12.2018 01:42+2И если вы скажете, что научились исключать из себя корыстную радость от самоутверждения (как бы оно у вас ни проявлялось), то я розовый единорог.
Поздравляю — вы — розовый единорог. Или (всё ещё) очень неопытны. Хотя скорее всего, просто очень молоды. Даже если вам за 50.
Но не расстраивайтесь, либо это изменится через два-три десятка лет, либо вы придёте к этому в следующей жизни.
vassabi
12.12.2018 11:43А еще у меня почему-то странное впечатление, что проблема не у автора в код ревью, а у его ПМа в планировании работы — какой-то идиот поставил новичков писать много ответственного кода, а потом ревьювер страдает от того, что пишет простыни ругачек.
third112
12.12.2018 01:45+3200 комментов на 1000 строк, конечно, зашкал. И времени жалко. Но м.б. использовать подход солидных мат.журналов? Там железное правило: рецензент читает рукопись до первой ошибки. М.б. в случае кода, не до первой, а до 20-ой? После отсылать на доработку. Вряд ли все баги совершенно различные, наверное есть похожие, разраб увидев исправление в одном месте м.б. вспомнит, где похожие места и где м.б. похожее исправление и сам исправит остальные.
vassabi
12.12.2018 11:48+2у математиков в этом смысле жестче — статья описывает логически связанную цепь, поэтому первая же ошибка все ломает.
В пуллреквесте может быть несколько цепочек — т.е. бизнес логика, UI, логирование, еще что-то — и каждое из них может иметь свои назвисимые ошибки…third112
12.12.2018 15:47Ok, поэтому я и предлагаю не до 1ой, а до 20ой. Однако если человек одну цепочку криво написал, то остальные, скорее всего, напишет не сильно лучше.
heaven_born
12.12.2018 01:47+6— Как тебе удается столько успевать и относиться ко всему так спокойно?
— Я просто ни с кем не спорю.
— Да это же невозможно.
— Ну, невозможно так невозможно…
DarkV
12.12.2018 02:33+2Да, когда мы критикуем, то делаем это для самоутверждения, для того что бы подняться повыше в социальной лестнице. Это правда. Но это не важно.
Весь прогресс человечества — побочный эффект того, что люди самоутверждаются за счет друг друга.
Одни люди хотят утвердится в финансовых кругах и создают бизнес, развивают его.
Другие люди хотят подняться на вершину научных кругов и для этого создают научные теории.
Третьи хотят поставить на место коллег и создают новые механизмы.
Наши причины всегда эгоистичны. В текущей культурной парадигме эгоизм, самоутверждение — плохие штуки, и их вроде как нужно избегать. Но как вид мы прогрессируем именно из-за них.2PAE
12.12.2018 11:25+1Есть мнение, что ваша версия устарела. Человек так же альтруистичен как и эгоистичен. И без альтруизма развитие человек всё ещё было бы на уровне каменных скребков.
musuk
12.12.2018 15:49Весь прогресс человечества — побочный эффект того, что люди самоутверждаются за счет друг друга.
Оправдание свинского поведения, как есть.
Есть куча способов самоутверждаться, например, построить хорошую команду в которой приятно работать и делать хороший продукт.
truebest
12.12.2018 02:54-1Отличная статья. Спасибо. С удовольствием прочитал. Хочется оставить свой комментарий.
Как мне кажется, вы заморачиваетесь самоосуждением. Вы правильно подметили что желание самоутверждения, эмоционального подкрепления + логического обоснования действия, это круто, но не делает вас внутренне счастливым. Один профессор говорит что, смысл существования хомосапиенсов это еда, размножения и доминантность. Безделье, и тогда наступит полное счастье. В вашем же случае, случилась системная ошибка, которая многие годы заставляла вас становиться быть лучше, и стремиться собирать лучших возле себя. Посмотрите на некоторых известных людей, в них была эта «ущербность», но именно она позволяла добиться им высоких результатов в их деятельности, и стать лучшим и заставляла вас двигаться.
Кстати, некоторые помогают беднякам в метро или на улице, и они тоже от этого кайфуют. Делает ли это человека добрее — наверное да. А в мозгу тем временем эндорфинчики и канабиойды выделяются, и от доминирования и от «принятия слабости», и от помощи близкого, и от растерзания его в клочья. Уж слишком мы биологичны, приспособленцы.
Поэтому все говнокод кроме кода, хотя любой код и есть говнокод.
Ну а если хотите снова подкрепить свое новое Я, можно пойти церковными методами, в вас сидит глубоко грех гордыни, и можно поработать в этом направлении (все советы уже даны). У меня например, есть заглушка: каждый раз вступая в очередной спор, вы просто показываете что зависите от чужего мнения. Оно вам надо… Есть другой мир с другими эмоциями, и вы это поняли, он тоже приятный.
Не бегайте по кругу, осознайте себя и свое я, и что для вас действительно важно, может это делать лучший код ревью, агрессия, а может теплое общение с женой и воспитание дочери, ламповое настроение.
Кстати, маленький нескромный вопрос, есть ли у вас какие либо заболевания, связанные с жкт, поджелудочной, печенью?truebest
12.12.2018 22:46Хоть бы написали, почему заминусили коммент)) Ревьюеры)
u010602
12.12.2018 22:56Я так думаю за то, что вы считаете что «быть говнюком», это просто еще один вид хобби, как марки собирать. Подумаешь ты был всю жизнь говнюком и травмировал всех, зато тебе это нравилось.
truebest
13.12.2018 00:00Ну если за это, то я спокоен… На людях нужно обязательно говорить что, нельзя быть говнюком, всячески порицать плохое поведение. Но наедине с собой или близкими, делать то, что считаешь нужным. Где-то это я уже видел, ах да, кажется так делают политики, священнослужители, ну и в принципе многие другие. Л — лицемерие))
Сказки древних арабских кочевников являются очень удобным инструментом для лицемерного прикрывания пятой точки. Их можно подогнать под что угодно. Чуть что ? сразу находят отмазку. Все эти «праведники» проповедуют простым людям какие-то догмы, при этом сами, у кого есть деньги, уходят в отрыв и развратничают на полную катушку. Если ты богат, то весь разврат с женщинами, алкоголем и наркотиками можно скрыть или откупиться. А если беден, то попадаешь по полной программе. Забивают камнями, отрезают голову и т.д. Тотальное лицемерие. — Амиран Сардаров.
Вообще, я считаю что «быть говнюком» — это предназначение. Должен особым структурным образом быть организован головной мозг (железо), и по верх него положено ПО (процесс обучения нейронной сети), так, что человек стал таким. Где-то это хорошо (особенно когда действия выгодны обществу (альтруизм, дружелюбность, доброта и простота)), где-то плохо, особенно когда обществу поведение не выгодно (эгоизм, доминантность, агрессия, хитрость).u010602
13.12.2018 00:20Очень мило когда говнюк считает, что быть говнюком это предназначение. Почти все маньяки так-же говорят про свою деятельность. А вот пользу для общества от говнюков нужно еще доказать.
П.С. Не нужно путать лицемерие и самоконтроль. Наличие агрессивных посылов неоспоримо, это не повод идти у них на поводу.truebest
13.12.2018 01:04Быть гавнюком это — иметь особый мозг с ПО, тоже самое и с маньяками. Если ты родился и мысли и действия тебя привели к этому, можем ли мы считать что это предназначение, причинно-следственная связь? Я считаю что да.
Другое дело, что самые отбитые представители, как и гении кстати, с помощью тестов , 2, или других методов отбора, помечаются как угроза обществу, и отправляется подальше от обывателей.
Просто есть откровенная жесть с убийствами, и это плохо, а есть например Пушкин, который прекрасно знал чтоЧем меньше женщину мы любим, Тем легче нравимся мы
, но при этом не боялся очередной даме разбить сердце, что по отношению к ней он является гавнюком.u010602
13.12.2018 01:16Вы занимаетесь обоснованием низменностей и стиранием граней между хорошим и плохим. Занимайтесь этим без меня. Про человека, который теряет грань между добром и злом, и начинает ставить в один ассоциативный ряд агрессивное поведение и поведение альтруистическое, говорят «у него сломан моральный компас». Фактические это первый шаг к признанию человека психопатом. И хотя психопатия не считается психическим заболеванием, требующим принудительного лечения или изоляции индивида, но совершенно все психологи и психотерапевты дают одну рекомендацию — держитесь от психопата по дальше. С психопатом невозможно выстроить плодотворные и конструктивные отношения, любые отношения с психопатом идут в пользу только психопату. Для ВСЕХ остальных участников ВСЕГДА только УБЫТКИ.
Общество на протяжении всей истории изгоняло и изолировало психопатов и агрессоров, этот вектор будет сохраняться.truebest
13.12.2018 02:39Спасибо за годный комментарий. Кажется я понял о чем вы хотите сказать и какие эмоции вы испытываете и почему заминусили. С этой позиции безусловно вы правы.
jokser
12.12.2018 02:55+8Был у меня подобный опыт на одном проекте. Первый же пулл-реквест получил разнос в 100 комментов, некоторые из них вообще были в виде картинок «смех*чек». Через месяц я уже практически уволился, т.к. не мог уже больше терпеть такого необоснованно-агрессивного отношения. Благодаря уговорам своего менеджера с прошлого проекта, я все-таки остался, и сжав зубы, продолжил терпеть. Спустя какое-то время стало легче. Но через год я все равно уволился. Последней каплей стал коммит, где я реализовал графовый алгоритм, с помощью которого мы перебалансировали Кафку и сэкономили по 3 кора на каждой машине, который тех-лид ревертнул, когда вернулся из отпуска со словами «НИПАНЯТНА».
Спору нет, глядя на тот самый первый пулл-реквест сейчас, я понимаю, что с точки зрения дизайна кода, он был не очень. И за год на этом проекте я сильно прокачался в этом плане, за что я этим людям благодарен. Но этот год стоил мне тонну нервных клеток и, наверное, небольшой психологической травмы.
Сейчас я на новом проекте и новой команде. У нас все просто идеально с точки зрения морального микроклимата.Я делаю много ревью, и стараюсь максимально мягко относится к человеку, чей код я оцениваю. Придираюсь только к совсем уж явным косякам типа копи-пасты, нейминга, читаемости, но стараюсь давать свободу в реализации, если код решает проблему.
Недавно даже похвалил в одном пулл-реквесте человека за написанный код, так он в Слаке аж переспросил на всякий, не стеб ли это :D
Попробую перенести эту практику с похвалой на постоянную основу и буду нести добро в массы. А то, мне кажется, люди привыкли слушать только замечания.copist
12.12.2018 05:54+1если код решает проблему — ключевое для меня, это третья стадия оценки качества решения
anioutka
12.12.2018 09:18+1который тех-лид ревертнул, когда вернулся из отпуска со словами «НИПАНЯТНА».
Вот согласна, ничего не бесит так, как такое откровенно скотское отношение. Если есть замечания, опиши конкретно или хотя бы в общих словах, что именно не работает. Сам же в итоге не способствуешь процессу разработки, если заставишь других членов команды тратить время на разгадывание, что же ты имел в виду, и пустишь по ложному следу.
RuK
12.12.2018 03:30+5Не нужно превращать программирование в некий догматический культ. Не нравится стиль/приёмы того или иного программиста — объясните/направьте в нужную вам стезю. Лень перековывать кадры, просто увольте. А сама статья потенциально вредная для индустрии.
edogs
12.12.2018 03:44+5От статьи осталось странное ощущение. Статья о том, как автор унижает и доминирует других (со слов автора) своим кодом ревью и что надо быть добрее. Окей. Но что же жертва? А жертва «вместо того, чтобы качаться, спокойно уходил домой к детям»© Т.е. «жертва» по ходу просто не в курсе, что ее унижают и над ней доминируют. А если так, то в чем ошибка автора и зачем ему быть добрее?
Нет, мы бы поняли, если бы автор сказал что он довел до самоубийства трех сотрудников и еще пятерых до нервного срыва, но блин, если его жертвы спокойно идут после работы к детям даже не думая качаться — вопрос скорее стоит ставить об эффективности автора, а не о об отсутствии у него доброты.
Sabubu
12.12.2018 03:52+5Я сейчас вам устрою код-ревью.
> export const isAgoodDeveloper = () => {
Что за инвалид это написал? Попробуйте прочитать: экспортируется константа isAgoodDeveloper, которая равна отображению пустых скобок на блок кода. Ну маразм же. Инвалиды, если вы хотите объявить функцию, так возьмите слово function и не запутывайте читателя:
export function isAGoodDeveloper() {
Смотрите, как просто и понятно: экспортируется функция без аргументов.40 лет такой синтаксис всех устраивал, а тут вдруг появились фронтендщики, которые хотят быть не как все.
Эти идиоты увидели где-то в статье, что «в 2018» (если в заголовке цифра меньше 2018, они не будут читать статью) модно использовать слова const и стрелочку и начинают совать ее куда не попадя. Они ведь думать даже не пытаются. Запомните, инвалиды, слово const было придумано для констант, а стрелочка для использования с функциями вроде map:
var names = users.map(u => u.getName());
Также, после первых двух абзацев, понял, что перед нами графоман, и дальше читать не стал.otvorot2008
12.12.2018 07:07+1isAGoodDeveloper()
Добавлю также, что артикли в названиях — плохой стиль, так как а) замусоривает само имя б) не несет никакого смысла.
Вообще, стоит очень строго придерживаться naming'а, и если бы функция, предназначенная для кидания некоего стандартного exception'а (на пример, в Java), называлась бы throwAwayAnException, у меня был бы точно вопрос к качеству именования в таком PR.
puyol_dev
12.12.2018 11:09-1Проблема бездумного использования новомодных конструкций куда масштабнее, чем то, что описал автор статьи. Читаемость и понимание кода резко ухудшается, а результат выполнения программы не меняется
js605451
12.12.2018 04:02+3Меня бесило, что пока я сидел до ночи, изучая F#, моя дочь начала называть папами всех мужиков вокруг. А этот чувак вместо того, чтобы качаться, спокойно уходил домой к детям. И мне хотелось его наказать.
Сидеть до ночи изучая F# — это совсем не то же самое, что сидеть до ночи разгребая баги в коде того товарища. Качество вашего времени будет разным. Изучать F# — круто, а фиксить баги — это хрень. Люди вроде вас, автор, как раз в итоге и фиксят баги, и анализируют причины их возникновения, и исходя из этих годами накопленных знаний дают толковый фидбэк на код ревью. Это совершенно нормально — уважать себя, свои знания и опыт, ценить своё время и стараться избегать предсказуемых граблей.
gdt
12.12.2018 04:42+2Если 200 комментариев по существу на 1000 строк кода — значит задача слишком сложная, и надо давать что-нибудь попроще для начала. Если критика конструктивная (а не в стиле «я бы сделал по-другому») — значит всё правильно, обратную связь нужно давать и лучше сказать, что год говно, на этапе ревью, чем это выяснится после релиза. Если человека уволили из-за того, что он не справляется со своими прямыми обязанностями — это в основном его проблемы. «Каждый должен подтирать свою задницу».
copist
12.12.2018 05:44Интересно наблюдать когда лид передаёт функции код-ревью в команду, заставляет делать перекрёстный код-ревью.
Никто один не умнее кого-либо одного. У них разные ценности и разный способ мышления. Перекрёстный код-ревью позволяет обмениваться не только коду, но и ценностями и мыслями.
А лид выступает как фасилитатор процесса ревью.
Это полезно. Снимает с лида груз ответственности за боль. Даёт каждому в команде возможность стать лучше.oldschoolgeek
12.12.2018 18:24Это хорошо работает, когда в команде достаточно опытных разработчиков, которые способны эффективно эти ревью делать. В ситуациях «один опытный + толпа новичков» такой подход, к сожалению, не работает от слова совсем :(
copist
13.12.2018 12:03Новичкам надо учиться. Лид может научить их делать кодревью. Тем более если толпа новичков. Иначе лид сдохнет.
js605451
13.12.2018 07:57Никто один не умнее кого-либо одного
Это как если 10 человек будут играть в шахматы против чемпиона мира (по шахматам) путём голосования за каждый ход — что их 10, что 100, что 2 — разницы нет, точно сольют.
ainoneko
13.12.2018 12:50Может оказаться, что с голосованием у них получится даже хуже, чем у «среднего» из них.
puyol_dev
12.12.2018 06:02Бывал как-то на одном интервью в начальника отдела разработки одного из банков. Было ему лет 25+ и по внешности (подкаченный или даже перекаченный ботан) и по манере общения было похоже, что он постоянно самоутверждается. Спрашивал очень странные для меня вопросы — игрался ли я с новомодными фреймворками и прочие вопросы, которые не соотносились с решением задач на довольно древней платформе, которая стояла в этом банке. В общем, естественно, это был первый и последний раз, когда я видел этого человека
Мне кажется автор и тот, кто, как ему кажется, говнокодит, просто люди решающие разные задачи. Цыплят по осени считают. И, как показывает мой опыт, срывают сроки именно такие вот заносчивые молодые люди, которые пишут код ради кода и не понимают смысл программирования как такового
AndreyGaskov
12.12.2018 06:18+1Мне кажется, что на пост советском пространстве у людей есть врождённая потребность учить друг друга. Автомобилисты на дорогах учат других автомобилистов. Старослужащие учат «новослужащих». Раньше иной раз в поезде нельзя было проехаться без того, чтобы тебя не поучили жизни (каждый своей собственной). А так как опыта, педагогического образования, или желания прочитать статью «как учить за жизнь правильно» нет, то и учат зачастую резко тормозя перед новичками, тумаками, матом, ремнём, разносом на code review.
Хотя, возможно, я придираюсь, и в других странах так же.Stas911
13.12.2018 05:57В других странах часто другая проблема — можно банально не заметить обратной связи, которую тебе очень вежливо и аккуратно пытаются дать (ну не орут же матом, в самом деле) и обнаружить свой косяк уже при увольнении
Scrayer
12.12.2018 06:41Сам не разработчик (ПО), но Ваша ситуация похожа на то, как инженеров отправляют к стандартам. А при попытке объяснить отправителям эти стандарты начинаются крики о том, что там не это написано и они читают по другому.
Был случай — дошло до абсурдного, заказчик сказал, дословно «Это требование не написано, но оно само собой разумеется» и это то при 5-6 уровнях различной КД, и производственном цикле 1-2 года.
О преподавательском опытеОписанное в статье очень напоминает работу преподавателя — 2 недели разбираем тему, аудитория кивает, что все понятно и не задает вопросы, вызываемые к доске ученики ничего не могут ответить и каждому объясняешь вновь, сидя на рабочих местах те же самые ученики снова ничего не могут сделать и объяснения проводятся еще раз, списав с доски решение — вновь ничего не получается и вот уже 4 раз личное объяснение и снова нет вопросов.
Только вот даже в таких случаях токсичность недопустима, т.к. она не несет абсолютно ничего полезного.Stas911
13.12.2018 05:59У меня для таких случаев есть «отлитая в граните»(с) фраза одного из наших заказчиков:«да, мы говорили, но мы этого не просили». Это было сказано после того, как по результатам их длительного нытья нами была поправлена какая-то функция в программе без должного документирования хотелок (сами дураки, чо)
s-kozlov
12.12.2018 06:46+1Судя по комментам к вчерашней статье и сегодняшнему топику, кое-кто стал забывать, для чего мы вообще ходим на работу, что нам дает возможность ходить на нее и получать немаленькие деньги. Так вот, напоминаю:
ваша галераваше уютное рабочеестойломесто с печеньками существует ровно до тех пор, покуда продается ваш код. А продается он до тех пор, пока решает поставленные задачи и экономит кому-то деньги/время/etc. Заметьте: в этой формуле нет трудоустройства для всех желающих, сохранения нежной психики посредственностей и прочего левацкого говна.
И еще: система, не избавляющаяся от чуждых элементов, рано или поздно погибает.vassabi
12.12.2018 11:52при чем тут «левацкое говно» (или «правацкое» или еще какое)? Отличайте этику от политики. Или, как говорится в одной пословице: «джентельмен назовет кошку кошкой, даже наступив на нее в коридоре ночью».
Код плохой — скажите где. Зачем ругаться или самоутверждаться или расстраиваться и т.д.?
Берегите нервные клетки и себя и других — вот и вся мораль.s-kozlov
12.12.2018 12:38Отличайте этику от политики.
Так политика растет из этики.
джентельмен назовет кошку кошкой, даже наступив на нее в коридоре ночью
Моральные нормы у всех разные, знаете ли.
Код плохой — скажите где.
Так я и говорю. Но некоторые считают, что говорить такое нельзя, а надо молча править.
Stas911
13.12.2018 06:02Тем, кто платит деньги, вообще говоря совершенно пофигу на то, что там в коде, до тех пор пока он выполняет их требования…
aram_pakhchanian
12.12.2018 07:54+5Я по профессии учитель. То, что в разработке называется code review, у нас называется «формирующее оценивание». У него есть ясные правила: оно должно начинаться с позитива и в целом должно быть мотивирующим. Оно должно указывать и на успешные места и на недостатки, то есть должно быть сбалансированным. Оно должно сравнивать с прошлым уровнем и говорить, куда двигаться, то есть должно быть развивающим. Если цель code review- не разнести в пух и прах, а сделать так, чтобы на следующий раз все было лучше, то надо следовать этим очевидным правилам. А то, что у нас все так плохо, начинается со школьной скамьи, так как вся система образования нацелена на выявление ошибок и наказание за них. Мы ведём себя так, как с нами обращались учителя в школе.
istepan
12.12.2018 08:58Верно замечено, что на хорошие места нужно тоже обращать внимание. Иначе они при переписывании кода будут утеряны.
istepan
12.12.2018 08:03+1Если критикуешь, — предлагай.
Если в коде что-то неправильно, напиши почему и предложи лучшее решение.
megahertz
12.12.2018 08:06+1200 комментариев на 1000 строк кода — либо автоматический линтинг не настроен, либо у одной из сторон процесса действительно проблемы.
Если ревью вызывает бурные эмоции то стоит отложить его не на долго и вернуться к нему позже, чтобы проанализировать — действительно ли все так плохо с кодом или просто появляются придирки из-за плохого настроения, усталости, привычки решать задачу иным способом.
eshirshov
12.12.2018 08:09А статический анализатор испытывает муки совести, после того как поглумится над разработчиком?))
Druu
12.12.2018 08:21Ничего страшного, если код плохой, я и сам могу его поправить.
А зарплату этому человеку за что тогда платить, если у него код с замечанием на каждые несколько строк, который надо переписывать? И ведь это не первое ревью? То есть человеку уже не раз на ошибки указали, а он их повторяет. Человек плюет вам в лицо, а мы за него бесплатно делаете его работу.
s-kozlov
12.12.2018 08:35А зарплату этому человеку за что тогда платить
Как это за что? Ему же надо что-то кушать!
А если серьезно:
Риарден указал на людей в дыму от доменной печи.
– Сможешь делать то, что они?
– Не понимаю, что ты…
– Что случится, если я поставлю тебя туда, и ты загубишь плавку?
– Что важнее: разливка твоей стали или то, как мне кормиться?
– Как ты собираешься кормиться, если сталь не будет разливаться?
KirillGuzenko
12.12.2018 08:42Мне хорошо, а мое левое полушарие все за меня объяснит, как пиарщик за накосячившего политика.
Прям смак
anioutka
12.12.2018 09:13А я-то думаю, от чего некоторые джуны прям в истерику впадают, когда я им код после ревью на переделку отдаю. Оказывается, они этот процесс рассматривают вот так же только с позиции самоутверждение через унижение других. А дальше уже и не видят, что рядом с замечанием есть описание и указание, как переделать.
И вот оказывается, что движет людьми, которые тривиальные задачи на 15 не принимают часов по 5 из-за количества пробелов и положения скобочек. :facepalm:Carbonade
12.12.2018 09:26А нет инструментов, которые позволят автоматически проверять/исправлять код-стайл ДО коммита, например, как Resharper/StyleCop/etc?
anioutka
12.12.2018 09:47На все вкусы не направишься. Особенно, если предпочитаемый подход меняется у проверяющего с фазой Луны.
mAAriellla
12.12.2018 13:24-1del
anioutka
12.12.2018 13:35Вы точно мне отвечали или комментом ошиблись?
Вообще-то я писала, что ревью джунского кода провожу я. Значит, квалификация, опыт и познание у меня есть. Спасибо.Naglec
12.12.2018 14:17+1Вообще-то я писала, что ревью джунского кода провожу я. Значит, квалификация, опыт и познание у меня есть. Спасибо.
но это не точно
Nikoobraz
12.12.2018 09:26+1Ну, факт наличия личных эгоистических мотивов никак не отменяет факта, что это на самом деле часть твоей работы и ты действительно обязан разносить такой код.
Но если чувство вины терзает, то не лучше ли поговорить с этим человеком напрямую? Узнать собирается ли он вообще исправлять свое положение и совершенствовать свои навыки, и если ответ положительный, то посоветовать литературу, курсы, форумы, разобрать с ним подробно несколько грубейших ошибок. Или может просто приставить к нему кого-нибудь в качестве наставника, раз уж есть проблемный новичок.
workless
12.12.2018 09:41+1>>Ничего страшного, если код плохой, я и сам могу его поправить
Такое поведение прибавит вам работы за другого и отберет у человека «экспу»
Лучше постараться объяснить в чем проблема, лучше голосом. Когда говорим — эмпатическую связь установить проще.
dagen
12.12.2018 10:15+1Статья действительно хорошо написана, но в ней разбирается субъективный опыт частного человека в частном случае. Просто напоминалка: эту статью нельзя рассматривать как обобщённый опыт.
И то, как автор преподносил свои код-ревью и зачем он делал такие разносы, никак не соответствует тому, что код-ревью должно давать команде/продукту.
Убираем токсичность из ревью, убираем личностные негативные отношения, делаем так, что далеко не все комментарии блокируют. Да что говорить, в интернетах гора статей с советами. По этому поводу делал для команды короткое руководство в конфлуенсе и его обсуждение на внутреннем митапе. Обучение код-ревью гораздо полезнее, чем игнор код-ревью, а автор как раз стал игнорить.
shurkandak
12.12.2018 10:16На мой взгляд причина не программистах, такой паттерн поведения идет от руководства. Любой руководитель при желании может переломить этот тренд, но по моим наблюдениям большинство считает, что нужно поддерживать «культ силы».
worldmind
12.12.2018 10:18Не имеет значения какая у тебя мотивация внутри, если она приводит к нужному результату (люди растут, проект развивается в верном направлении и т.п.), то нет повода менять поведение, хотя думать об улучшении своей мотивации можно.
inferrna
12.12.2018 10:23+1Очень часто причина говнокода, как ни странно, кроется в менеджменте. Когда разработчиков торопят, кидают с проекта на проект, когда схожий на 90% функционал делают 2 разных разработчика, когда постановку задачи и разбивку на подзадачи делают не в нормальных системах, типа redmine, а в самопальных crm в костыльно прикрученном режиме общего чата, просто потому, что манагеры так привыкли, ну и т.д.
(я ни разу не разработчик, но где-то рядом, и вижу, к чему такой workflow приводит)
jehy
12.12.2018 10:30Очень хорошо вас понимаю.
Каждый день занимаюсь ревью кода команды примерно из 10 человек.
Понимаю, что я не слишком вежливый человек, и мои комментарии могут кого-то обидеть.
Но видите ли в чём проблема…
У меня просто нет ресурса на то, чтобы переписать этот гавнокод. Ни у меня, ни у других сениоров.
И я не могу допустить появление этого кода, потому что часто проще написать заново, чем править лапшу.
Поэтому либо я выдаю джуниору какой-то небольшой отдельный проект, стабильность которого меня не слишком волнует, и я могу закрыть на него глаза (такое бывает редко) — либо мне приходится отфутболивать пулл рек столько раз, сколько нужно, чтобы код стал хотя бы приемлемым.
Да, я при этом не хочу погрузить в печаль и депрессию бедного джуна. Так что взял за практику периодически брать своё кресло, откатывать его к только что отревьювленному, и сидеть минимум полчаса, поясняя подробности ошибок и вместе их исправляя. По моему опыту — вот такое личное общение и помощь отлично сглаживает эффект от сухих комментариев к пулл реку. Но такая акция должна проходить не слишком часто — максимум раз в несколько дней. Иначе — опять же время, да и человек на шею сядет.
Ну и ещё — помогают CI процессы, которые не позволяют пропустить совсем плохой код, и проверяют линтинг, тесты и покрытие. На CI никто не обижается, как бы сухо он не комментировал пулл рек.
ILya63
12.12.2018 10:46Такая модель поведения встречается не только у программистов. Линуксойды через одного такие же.
Учителя ин. языка страдают токсичностью не меньше. Эти вообще могут покалечить человека так что он потом «немым» станет.
lingvo
12.12.2018 11:01В статье описан интересный феномен, который развился в последний десяток лет. Но прошу заметить, в статье много раз упоминается слово «разработчик», в контексте разработчик-программист, хотя разработчики бывают разные — электронщики, механики, дизайнеры и т.д и думаете у них не бывает design review? Да бывают, конечно. Только это обычно оффлайн совещание в кругу серьезных людей, к которому разработчики и ревьюеры готовится неделями и там вот такой номер не пройдет.
Быть может все в этой самой кнопочке Submit Review? Т.е вы сидите в своем комфортном кабинете, скрываясь за ником в скайпе, зная, что никто не сможет ответить на вашу критику, не скажет в лицо «ну че ты прицепился?» или еще хуже «а че ты в прошлый раз к Васе не цеплялся, а в этот раз ко мне придрался?» и это на глазах у всех присутствующих — коллег и даже менеджмента. А кнопочку нажать — это ведь очень просто, легко, часто не надо обьяснять, не заботясь, что тебя поймут правильно или нет.
Не напоминает поведение водителей престижных металлических шкарлупок, со своим суперзавышенным эго? Вот я думаю, это самое то — кнопка, легкость и безнаказанность развращает.
vindy123
12.12.2018 11:28Такое ощущение, что мы в середине цикла статей, иллюстрирующих т.н. «четыре благородные истины»?
1. Жизнь есть страдание.
2. Существует причина страданий.
3. Страдание может быть прекращено.
4. Существует путь, ведущий к прекращению страданий.truebest
12.12.2018 11:44Здорово подмечено. Помоем любая деятельность, связанная с затратой любых ресурсов организма на действия — страдания, вопрос в том, перекрывает ли получаемое удовольствие это страдание.
vindy123
12.12.2018 12:26Привязанность к источникам удовольствий — это такой же источник страданий, как и отторжение того, что не нравится)
midday
12.12.2018 11:29+4С самого начала какой-то бред. Ревьювер увольняет чувака? Что за бред, а нахрена ревьювер вообще нужен, это вроде его работа — не пропускать плохой код. Я отправляя на ревью свой код всегда благодарен ревьюверу за все найденные ошибки и никогда не думал, что он оказываться !(SIC! ОКАЗЫВАЕТСЯ!) тыкает меня НОСОМ в моё дерьмо! Я просто искренне благодарен ему за найденные ошибки. Как в школе соседке по парте даешь прочитать своё сочинение.
kisskin
12.12.2018 11:29+1Главное помнить, что излишняя толерантность к быдлокодерам вещь опасная — сегодня ты делаешь им поблажки, а завтра весь мир пользуется браузером, в котором одна страница жрет по 3 ГБ памяти. Автора прессовали и он стал хорошим кодером.
ZakharS
12.12.2018 11:30Мне пришлось подобное преодолевать во взаимоотношениях с детьми. Когда ребенок делает уроки или учится чему-то новому — все время возникает соблазн ему сказать, что он делает неправильно и вообще что за глупые ошибки. Ты ведь умнее, не правда ли? Но если вдруг срываешься, то очень быстро понимаешь, к чему приводят подобные слова. Потом долго приходится исправлять, потому что ребенок начинает более нервно реагировать на критику. И надо много времени, чтобы опять научить его конструктивно воспринимать любые поправки.
Со взрослыми, конечно, немного проще — они реже ведут себя как капризные обидчивые дети, реже реагируют эмоционально. Но все равно, унижение и негативный настрой влияют. И те, у кого порог чувствительности низкий, могут не выдержать такого в долгосрочной перспективе.
В общем, разумная сдержанность и вежливость, как правило, приносят большие плоды. Нам ведь нужен результат, в конце концов.truebest
12.12.2018 11:38Здесь есть большая разница, своего ребенка вы любите, несмотря на его ошибки.
К разрабу же, на которого по большему плевать, лучшим случае можно испытывать суррогат любви — жалость.
ua30
12.12.2018 12:22+1Дети — это совсем другая история. Там действительно стоит избегать прямой критики. Даже советы не всегда будут уместны. Лучше делать в стиле: «смотри, а это сделать можно еще и вот так...».
Дело даже не в том, чтобы не ранить чувства и стремления ребенка. Взрослые, ввиду своего опыта и ощущения «да я все это 100 лет уже знаю», часто мыслят узко и шаблонно. Поэтому взрослым часто сложно понять и услышать что-то, что выходит за рамки их мышления.
Так же не стоит уберегать их от ошибок. Я очень люблю поговорки. Пожалуй, кроме одной: «умный учится на чужих ошибках, дурак — на своих» и все ее разнообразия (про мудрого, про дурака который вообще не учится и т.д.). Я просто не верю, что на чужих ошибках вообще возможно чему-либо научиться. Более того, большинство людей совершенно неспособны учиться даже на своих ошибках. В добавок, кто читал Rework, там очень хорошая есть мысль про обучение на ошибках. Что ценность такого опыта сильно преувеличена. Т.к. человек в лучшем случае поймет как не надо делать, но все равно не будет знать как именно делать надо. Но конкретно для детей, без своих маленьких ошибок — ни как.
В целом, дети — это отдельная, другая тема.
Fenzales
12.12.2018 11:35Зачем сравнивать «токсичные» русскоязычные форумы со Stackoverflow? В одном месте уже сложившееся коммунити, где все друг друга знают, иногда даже лично, в другом — миллионы свежих аккаунтов, зарегистрированных ради одного вопроса.
И если на SO повторяющиеся/тупые вопросы закрывают модераторы, то на том же ЛОРе такого нет. Ну и отвечать на 100500-ый «как взломать асечку с Kali Linux» вежливо всех задалбывает, это очевидно.
AVI-crak
12.12.2018 11:40Что-то жутко пафосное прочитал, про человека которому не нравится своя работа.
Уж если доверили проверку кода, да ещё и платят за это — работай. Там не важно какие чувства появляются к себе или к автору кода — платят за найденный баг.
У палача тоже работа не сахар, но если он будет переживать за каждую отрубленную голову — то скоро наймут нового палача.
lmp59
12.12.2018 11:41Давно уже заметил, что стремление к самоутверждению можно легко эксплуатировать. Ещё во времена ДОС и когда сообщения форума читались через почту, я увидел вопрос, на который не отвечали неделю. Будучи совсем неопытным я дал совет рабочий (который тщательно проверил), но абсолютно неоптимальный, проблема решалась в разы короче. Вот что это было я даже не помню через столько лет. И через день я увидел десяток комментариев на мое решение типа да ты дурак можно в Париж через Владивосток ехать — вот как надо и т.д. Я редко пишу на форумы, но если пишу, то бывает завожу два аккаунта и с одного задаю вопрос, а с другого себе же и отвечаю с дурным советом. Находится много желающих поучить. И другое — замечали, что в незнакомом городе когда идешь куда-нибудь с местным, который хорошо знает дорогу, путь совсем не запоминаешь, хотя и стараешься, потому что назад идти одному. А когда ищешь дорогу один, обратный путь очень легкий. Это я к тому, что если человека постоянно поучать и поправлять, то он привыкнет к тому что есть поумнее и всё равно поправят, как ни старайся. В баги критичные для проекта нужно ткнуть, но вот стиль вырабатывается, когда задача на ходу меняется и если писал неправильно, то переделки обходятся очень трудоемко, а если не поленился и сделал ini файлы и т.д. то не так трудоемко. Можно задачу ставить частично-упрощенную, а полную информацию давать потом, сам поймет что пишет не так, ещё и прибежит спрашивать как лучше чтобы потом не переделывать всё.
SvetaH
12.12.2018 11:41Автор! ОГРОМНОЕ спасибо за статью!
В подробности сейчас вдаваться не хочу, но многое мне в людях и ситуациях стало понятнее :-)
Спасибо еще раз!
Perlovich
12.12.2018 11:51Потому что мой мотив на ревью — самоутверждение.
Печально. Надеюсь, процент людей с такой мотивацией в индустрии не очень велик.
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души.
Не проецируйте на других свои комплексы. В индустрии много адекватных людей, которые занимаются код-ревью исключительно потому, что верят, что это благо для проекта и коллег.
grt_pretender
12.12.2018 11:58С одной стороны — я же научился разработке из-за того, что за мой счет самоутверждались. Во мне будили злобу, и эта злоба заставляла меня становиться лучше.
Вот здесь и начинается искажение мышления. Не злоба двигает прогресс (рождая при этом тех самых неуверенных в себе эгоманьяков), а понимание, что не так, как сделать так и куда двигаться. Постоянный самомониторинг. Ощущение своего прогресса.
И все же мне кажется, что доброжелательное отношение при ревью кода – это тоже навык, даже искусство. Это иная картина мира, способность увидеть потенциал там, где его пока немного, наметить путь, помочь советом. Найти баланс между критикой и советом в зависимости от задачи и человека. Конечно, это больше про менторство, но если хочешь не просто исправить проект, а сформировать крепкую команду надолго – без этого никуда.
Культура взаимопомощи, ее не построить за один день, просто ругая себя за «кайф от чувства собственного превосходства». Так что автор поста еще в начале пути.
sergey_z777
12.12.2018 12:07Не вижу проблемы. Ну тешит человек своё самолюбие, делая код-ревью джуниорам, ну ок. Не ленится, пишет подробные комментарии. В конечном итоге джуниор учится писать более качественный код, а автор удовлетворяет свое эго :). Вин-вин, не?
ua30
12.12.2018 12:07ИМХО. Учитель или тренер не обязательно должен быть добрым. Может — отлично! Нет — главное чтоб был результат. Тем более, в данном случае Вы не учитель, и не тренер.
tretyakovpe
12.12.2018 12:14По моему опыту надо иногда таких людей выводить в область, где они могут «получить по мордасам» и ощутить свою никчемность по сравнению с унижаемыми ими коллегами.
Так мы взяли одного нашего заносчивого сисадмина-«знатока военной науки» с собой на страйкбол. Мало того, что он пересмотрел свои теоретические взгляды на ведение боевых действий и тактику, заодно стал по человечески общаться с коллегами. Просто потому, что не выполнил приказ (да он был скучным и не позволял продемонстрировать свои теоретические познания в тактике) и привёл команду к полному провалу.
tangro
12.12.2018 12:25200 комментов на 1000 строк — в любом случае слишком. Если это вот реально баги, то с человеком нужно и правда прощаться. Или переводить на менее ответственную и более простую работу. А если это стилистические придолбоны — то 200 комментов не выполнят задачу «научить человека писать лучше». Никто не в состоянии за один раз воспринять и запомнить 200 способов улучшить код.
Я бы откоментил явные баги, а потом в личном разговоре указал на 5-10 мест, которые можно было бы сделать лучше. В этом был бы смысл.shevmax
12.12.2018 12:41+1Чем человек опытнее, тем тупее ему кажутся остальные. Как бы вы хорошо не рисовали, профессиональный художник будет расценивать ваши рисунки очень плохими, только потому что он бы нарисовал лучше. В общем синдром бабулек на лавках — сидеть умудренным опытом на лавка и обсуждать кто наркоман, а кто проститутка.
cyberly
12.12.2018 13:32Ну, бывает и другая стадия: «ну а что, вариант рабочий, все потенциальные проблемы легко правятся по мере возникновения, стоимость и простота реализации вполне окупает недостаток изящества».
alsii
12.12.2018 19:30В идеальном мире критические ошибки в коде комментируются в review, а «запахи» обкладываются TODO в стиле «убрать копипасту». А все джуны садятся на год такие TODO вычищать. И поймут как нельзя, и начатся как надо. И стиль команды изучат. И ничего катастрофического не натворят (при условии хорошего тестирования). Но вот где купить билет в этот идеальный мир?
spam312sn
12.12.2018 12:30+1А мне нравится, когда мой код критически оценивают за каждую мелочь — это очень сильно помогает развиваться и многие недочёты исправлять в коде и вообще, на будущее запоминать. Конечно, это не совсем корректно, когда переходят на личности при этом, но с таким пока не сталкивался — здоровая критика, она всегда мною приветствуется и сам стараюсь платить той же монетой. Критика должна быть направлена на улучшение кода и разработчика, а не на его унижение. Самоутверждение за чужой счёт — удел закомплексованных, слабохарактерных и неуверенных в себе людей.
shevmax
12.12.2018 12:36Всё оно так, но если человеку не указывать на его ошибки, то у него не будет стимула становиться лучше. А с годами из таких людей появляется начальство которое тупое, но при этом считающие себя самым умным.
Так же и у автора, если бы ему не показывали его ошибки, то маловероятно что через 5 лет что-то изменилось, т.к. его бы всё устраивало и он дальше бы писал говнокод.
EvilsInterrupt
12.12.2018 12:37Жесткая обратная связь вполне нормальное явление. Но именно жесткая, а не переходящее в оскорбления.
denixx
12.12.2018 13:30-1После прочтения решил оставить тут в комментариях ссылку на эту историю.
ithappens.me/story/10297
Она у меня в закладках, иногда перечитываю, чтобы не забывать.
amarao
12.12.2018 13:32+5Очень странное отношение к code review. Я даже не про момент рефлексии автора (что похвально), а про то, что ожидается от code review.
Я всегда считал, что code review — это такой метод передачи знаний в реальном контексте. Человек пишет глупость, а ему в ответ говорят «надо вот так и вот так делать» — и человек теперь знает, как надо.
Иногда это основы языка (в этом месте надо использовать словари, а не списки, потому что у словарей асимптоматическое время доступа o(1) и они более семантичны), иногда это бездны business knowledge: «поменяй эту красоту на вот такой вот ужас. Мы пробовали красоту, но она ломает кейсы такие-то, такие-то и такие-то», или поднятие культуры: «обязательно используй осмысленные имена для переменных, например, cnt лучше переименовать в years или years_cnt, потому что любому понятно, что это счётчик, но редко кто догадается, что это годы».
code review без совета как исправить — говно, а не review.
mAAriellla
12.12.2018 13:44-1У меня вызвали диссонанс рассуждения про «звезду Альфа Центавра», самоутверждение и розовых единорогов. Но если абстрагироваться от этого… специалист же не случайно получает эту позицию в компании? Должны быть необходимая квалификация, опыт, познания.
Следовательно, вряд ли его code review сплошь состоит из мелких придирок и несущественных замечаний? Или бывает по-разному? Но тогда насколько долго человек может продержаться на этой позиции (тимлида) при такой стратегии, когда из-за мелких придирок (не дающих серьезного улучшения кода) тормозится общий процесс работы?
anioutka
12.12.2018 16:20Тут может зависеть от отношения руководства к такому лиду. К сожалению, никто не отменял нахождение на позициях из-за дружбы с ПМ или тех.директором. В таких ситуациях вся вина перекладывает на спецов, которые создают повод для придирок, неважно, насколько они обоснованны. Вот и начинаются бесконечные смены членов команды, пока лиду не надоест (он же для руководства супер спец, к его мнению прислушиваются), или проект окончательно не загнется. Если бы такого не было, конторы по разработке ПО не прогорали бы на пустом месте.
mrbig66
12.12.2018 13:51Наш менталитет зациклился на культе силы и превосходства.
Мне всегда казалось, что американцы гораздо сильнее зациклены на этом.
stel_lest
12.12.2018 13:52Хочу зайти с такого бока:
Иногда 10 лет опыта с конкретной технологией могут мешать принимать что-то новое в свой мир. Все мы стареем и мозг не тот, что раньше.
Если мы научились пользоваться молотком — то все вокруг кажется гвоздем.
К автору статьи не относится, но, в целом, встречается не редко.
AlexandrNn
12.12.2018 13:53Чувство превосходства лечится у психиатра!
Это доказанный факт шизофрении. Раньше это стабильно считалось смертным грехом свершив который в Ад уже не попасть.
«Альфа» — это у собак тип характера, те кто первый готов бежать в неизвестность. Скорее такая «гамма» сидит и распугивает нанимающихся на работу «альф»
«Тролль» — это когда человек гадит ради конфликта, испытывает счастье создав конфликт. В современном обществе, тролли вылезли из болот. Грамотный руководитель увольняет тролля если заведётся.
Есть еще и экономика, в ней говорится, что главное не «совершенный код», а заменяемость исполнителей, простота и понятность для новых сотрудников. Большое количество подготовленных кадров которые могут выполнить эту работу.
Если Вашу работу можете выполнить только Вы!? Вы или «Арнольд Шварц из фильмов» или надо бросать Ваше направление и делать так, что бы исполнителей такой работы было завались!hd_keeper
12.12.2018 16:31> считалось смертным грехом свершив который в Ад уже не попасть.
>> смертным грехом
>> в Ад не попасть
Шта?
Perfecter
12.12.2018 13:54У меня была позиция, что геи — это плохо. Я не думал об этом особо, просто когда-то очень давно батя сказал, что плохо, и я запомнил. Однажды я выпивал с толпой либералов, и всплыла эта тема. Я сразу же ознакомил их со своей позицией, и они такие «нет Фил, ты не прав». Ну, начали спорить. Никогда не думал об этом всерьез, у меня и аргументов толком не было. Да и в целом, мне совершенно насрать, хорошо геи, или плохо. Но я не мог себе позволить перестать спорить. Моим главным мотивом было — победить и сохранить лицо. Я не знаю зачем.
Такое бывает, когда человек считает убеждения частью своего Я — он воспринимает противоположные убеждения как нападки на Я и отбивается по максимум, даже если и осознает что аргументов для поддержки его убеждений у него нет
misato
12.12.2018 14:26+1Никогда даже близко не испытывал кайфа и удовлетворения от комментирования плохого кода. Наоборот, меня это искренне расстраивает, потому что каждый хреновый пул реквест — это в первую очередь показатель того, как работает команда, в которой я — тимлид.
Если я вижу существенные недостатки в работе разработчика, это означает, что теперь мне нужно потратить время на их фиксацию, на разъяснения, потом мне придётся потратить время на переключение обратно в свою работу, а ему придётся потратить время на исправление проблем, на преодоление негатива и так далее, и тому подобное.
И всё это время — это чистые издержки. Поэтому я вообще не понимаю, как в этой ситуации можно находить повод для самоутверждения. Если в твоей команде люди делают говно, это значит что ты сам плохо работаешь.
sotnikdv
12.12.2018 14:31+6У меня просто рандомно назначались два человека для код ревью. Таким образом джуниор ревьюил мой код, принципала. И ничего, корона не облезла.
Иногда он находил что-то. И я за него искренне радовался, комментарии в духе «зашибись нашел, спасибо, ты спас мою жопу от факапа в проде» — лучшая реакция ИМХО. Это добавляло гораздо больше авторитета, чем отрицать очевидные вещи. Иначе ты понимаешь, что он прав, он понимает, что «король голый, да еще и боится». А так демонстрировалась сила, а не страх признать ошибку.
Чаще он просто учился на нашем коде.
Но самое главное, это держало дисциплину и атмосферу в команде:
1. Если лид команды спокойно относится к тому, что его код ревьюится и это обязательная процедура, то остальным тем более стоит следовать правилам
2. Если джун ревьюит лида, то важна не личность, а замечания по делу. «В бане все равны». Нашел проблему — «вай маладца».
3. Железное правило — ревьюер помогает ТЕБЕ. Поэтому диалог начинается с «поревьюй плз» и заканчивается «спасибо». Это же соответственно выводило код ревью на совсем другой уровень, более профессиональный, когда ревьюер приходит не с «я умнее, я нашел», а с «я тут потенциальных проблем нашел, давай обсудим».
Токсичное поведение такая же проблема, как и техническая некомпетентность. И ведет к тому же результату — увольнение.
Только в последнем случае мы пытались вытянуть человека и, если не получалось, говорили, что «Смотри, ты не дотягиваешь до уровня команды пока. Банальное несовпадение твоего текущего уровня и наших требований. Видимо мы накосячили с собеседованием. Но мы по тебе будем очень сильно скучать и надеемся, что ты подтянешь знания и вернешься».
А в случае неоправданного токсичного поведения — немедленное увольнение, т.к. это разрушает команду. И увольнение с неформальным фидбеком «вел себя по отношению к коллегам плохо, негативно влиял на отношения в команде», а за фидбеком придут рано или поздно.
P.S. Кстати, оставлять комментарии типа «Вот это удачное решение» или «О, расскажешь про этот алгоритм, это круто» сильно улучшали атмосферу.
P.P.S Менеджер автора явно пропустил момент помочь и затем, возможно, автора уволить.
P.P.P.S. «Мы давно уже убиваем без всяких условий. Новые времена — новые веяния.»
Мы увольняем людей без колебаний, если не смогли помочь стать им эффективными. Но не устраиваем из них мальчиков и девочек для битья и удовлетворения своего эго.
u010602
12.12.2018 17:18+1Нехватку технических скилов вы подтягиваете. А за нехватку гуманитарных скилов сразу увольняете да еще и потом плохие отзывы даете. Где логика?
Если технические скилы это то, что человек сам учит, и их нехватака по сути 100% его вина. То особенности характера — это во много врожденное и навязанное внешней средой.
Это как людей с метеоризмом увольнять немедленно, и отзывы еще давать.
Как по мне, так стоит пытаться решить проблему в любом случае сначала словами. А плохие отзывы давать, только из-за реальных и осознанных косяков, например вранья, систематических прогулов, воровства и т.д.singalen
13.12.2018 11:51Логика вот где: недостаток техскилов точно проходит почти всегда — если у человека есть мозг. Недостаток гумскилов проходит почти никогда, если да — то спустя много лет и сломанных отношений.
Вы отталкиваетесь от вопроса «кто виноват». Извините, никому не интересно, кто его обижал в детстве, что он вырос таким чудаком. Компания и начальник смотрят не в прошлое, а в будущее: каким будет влияние человека на работу команды.
И да, конечно, любую проблему надо решать словами. Сначала. Если же, например, после двух серьёзных разговоров человек не смог поменять свой «стиль», то увы, жаль, мы не смогли помочь этому человеку стать нормальным коллегой (и справки вовремя не навели).
Foreglance
12.12.2018 14:47Возможный конфликт в целях мотивации и различии восприятия ситуации. См. также «модель братьев Дрейфус»
en.m.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition
DikUl
12.12.2018 16:04+1Хочется сказать спасибо автору. Статья заставила задуматься, теперь я пожалуй тоже пересмотрю то как делаю код ревью.
Gargo
12.12.2018 16:17ув автор, а теперь на секунду представь, что не ты ревьювишь чужой код, а тот другой разработчик, который любит говнокодить, ревьювит твой. Что бы ты делал в таком случае?
ZLBRSTN
12.12.2018 16:18-3Статья хорошая и полезная, но!
Есть куча статей, практик и философий о том как делать код-ревью. Перед тем как начать бычить Вы удосужились прочитать и понять хотя бы ОДИН? Как тогда человек может быть на руководящей должности с настолько низкими социальными навыками и скудным психологическим познанием, закомплексованный и по-глупому эгоцентричный? Вроде все кричат про софт-скиллз, устраивают асессменты, а на деле «я начинаю думать как сделал бы я». Понятно, все должны сидеть и угадывать как сделал бы один человек.
Имхо, корень зла — автора вообще не должны были принимать на его работу и позволять ему оказывать такое влияние на других сотрудников. Сейчас он просто отказался от замечаний, что тоже плохо. Проблема не решена, компания страдает, автор в унынии, люди мучаются.Foreglance
12.12.2018 16:35Все это замечания в ревью должны быть аргументированы. Например у нас были гайдлайны и референты на бест-практики (книги Refactoring, Design patterns). К сожалению некоторые разработчики предпочитают только собственный «авторский стиль» в общем коде (особенно грустно, когда просто поток мыслей накодирован), одновременно бывает, что считают код-ревью — «слежкой». Встречался с вопросом в ответ на код ревью: «Зачем ты мой код смотрел — я его проверял и он уже в репозитории» (и это от разработчика с многолетним опытом).
ZLBRSTN
12.12.2018 16:39+1одновременно бывает, что считают код-ревью — «слежкой»
wtf?)))) я «работал» в шаражке, где вообще никакого ревью не было и любой мог коммитить прямо в мастер. Это ж аццкий ад, так вообще жить нельзяu010602
12.12.2018 17:31Под любой подход, можно найти задачу, где он будет работать хорошо. Если вы будете сами писать свой маленький проект, вы будете делать кучу веток, создавать пуллреквесты и постоянно их мержить? Я думаю нет. И думаю что даже если вы будете это делать с другом — вам хватит одной ветки.
Это все средства кооперации, если нет кооперации — то и средства бесполезны. А работа с ними превращается в фарс.
Относительно слежки — я уже выше писал, по сути кодревью — это ревью, а ревью это ревизия, а ревизия это «к нам едет ревизор». А зачем у нас ездят ревизоры? Что-бы кого-то премии лишить. Соотв человек ощущает угрозы, что если его работу вдруг начали проверять, то за этим что-то последует. И естественно что ни чего хорошего не последует, в коде нельзя найти ни чего хорошего, если код идеальный то ревью просто ни чего не даст и будем там, где были. Если код не идеальные — будет куча замечаний, которые потом попадут начальнику, который снимет премию или не даст повышение.
Ведь работа это не только писать код и выпускать продукты, это еще получать зарплату и тратить ее на свою жизнь. Автор поста как раз и пишет, что это стандартное обоснование своего желания унижать и контролировать и самоутвреждаться, со словами «я всего лишь хочу качественный код и продукт». А человек просто хочет спокойно делать свою работу и получать зарплату, и по меньше душевных и волевых сил тратить на работу, а по больше на семью скажем.
А истина где-то по середине.ZLBRSTN
12.12.2018 17:54Если вы будете сами писать свой маленький проект, вы будете делать кучу веток, создавать пуллреквесты и постоянно их мержить?
ДА
по сути кодревью — это ревью, а ревью это ревизия, а ревизия это «к нам едет ревизор». А зачем у нас ездят ревизоры? Что-бы кого-то премии лишить.
Витьеватый поток предрассудков.
u010602
12.12.2018 18:01ДА
Значить вы кайфуете от процесса и формализма. Это не абсолютное достоинство, и не стоит думать что все кто не такие как вы — хуже вас. Это просто ваш личный таракан, и пока вас не наделили властью натравливать этого таракана на людей — все хорошо.ZLBRSTN
12.12.2018 18:20+1Ну… любой, кто меня знает, расскажет как я ненавижу формализм) Но пул-реквест, ограничители, документация, наименование коммитов, система контроля версий вообще, CI, тесты, линтеры — это все ограничители, которые способствуют порядку. Чем больше беспорядка, тем сложнее делать изменения, вводить новых людей в проект, сильно снижается кол-во времени, через которое забывается почему тут сделано так а не иначе. В общем-то хорошая архитектура начинается со ввода ограничений, это касается и архитектуры кодовой, и архитектуры нашего воркфлоу, работы над кодом и тд.
Есть такая мудрость, что нужно как можно дальше отойти от дома, чтобы вернуться потом в него и ценить то, что до этого не могло быть замечено. Всем противникам формализма и всего такого очень советую поработать в хаосе, где 40 человек херачат в мастер, нет линтеров, нет тестов, слово «архитектура» вызывает смех и люди просто пишут код, так шоб работало. А то ощущение, что вы как дети «нихачу есть кашу убигу», «нихачу спать мама гонит заставляет». А потом однажды эти дети начинают очень ценить то, что они могут это делать, и радоваться таким вещам. В студенчестве напримерu010602
12.12.2018 18:54-1вводить новых людей в проект,
где 40 человек херачат в мастер
люди
Если вы будете сами писать свой маленький проект
сами
маленький проект
Это все средства кооперации, если нет кооперации — то и средства бесполезны. А работа с ними превращается в фарс.
—«нихачу спать мама гонит заставляет»
Детей кладут спать не ради детей, а ради родителей, которые хотят отдохнуть от детей. А дети (мои например) хотят спать весь день в саду (т.к. там скучно), и не спать всю ночь дома (т.к. есть папа, и он не спит ночью, и много игрушек и мультики, и вообще дома классно). И я их кладу спать исключительно потому, что мне нужно время без них — для работы скажем или времени с женой. Ни каких логичных и выгодных с позиции ребенка аргументов ложиться спать нет. Если дать ребенку спать как он хочет, т.е. уставать до предела. То он то-же начнет сам ценить возможность поспать. Мои в три года, на каникулах от сада, спят как им вздумается. Ложатся в час ночи, встают в 10, не спят днем. При чем сами выключат свет, идут и ложатся спать. И попробуй им помешать :)
«нихачу есть кашу убигу»
Это значит что ребенка кормят чем-то вкуснее каши. У него переизбыток калорий из вкусной еды. Проголодается — поест. Ни чего не логичного в отказе от не вкусной еды, когда ты не голоден — нет. В каше нет ни чего полезного. Единственный аргумент за поедание каш — забить желудок медленными углеводами, что-бы не забить его быстрыми углеводами и транс жирами. Так-что все вопросы к взрослым. Дети полностью рациональны в этом вопросе.
puyol_dev
13.12.2018 09:12Полностью согласен. Чтобы быть руководителем недостаточно быть хорошим программистом. Хороший руководитель больше наверно психолог, чем специалист в своей отрасли. Ему нужно создать команду из разрозненных людей, у каждого из которых свои интересы и взгляды, замотивировать их. А у автора статьи серьезные психологические проблемы и комплексы и эти комплексы он транслирует на своих подчиненных через процедуру код ревью в частности. И самое неприятное, что автор еще бахвалится своими комплексами публично. Автор не просто не может создать команду, он разрушает ее своими методами. Гнать его вшею с этой должности — мой солирный вердикт. Не дорос еще
vvv123vvv
12.12.2018 17:49Автор постарел. Начал думать о душе Думаешь покаялся и тебе котел в аду перестали греть? Да шучу я нет ни какого котла. Мы уже в аду.
kalya
12.12.2018 17:49+1Автор приводит пример о том, как он ревьюит джуна. Для меня это кажется несколько странным, когда сильный разработчик ревьюит заведомо менее скилованного разработчика, при этом испытывая какие негодования. По моему опыту я крайне редко испытываю разочарование/горечь от кода разработчика уровня слабее твоего. Банально потому ожидания такие. И делать ревью для таких ребят очень даже легко, так как они намного чаще прислушиваются к твоим рекомендациям. Очень часто я пишу псевдокод, чтобы джун уловил мою идея о том, как улучшить данный код и почему.
Другое дело, когда идет ревью senior-senior. Вот мне интересно, как автор расправлялся с этим? Для меня здесь вылазят куда более серьезные проблемы как личные, так и профессиональные. Зачастую (опять же из моего опыта) в таком случае каждый пытается пропихнуть именно свой стиль, как бы он это сделал — «А вот я абстракцию бы по-другому сделал», «Я бы заюзал то-то и то-то» и тд. Интересно то, что проблема решена и код рабочий, но появляются вопросы «А вот если через N лет бизнес скажет нам сделать это, данный код уже не будет гибким и нам надо переписывать» и тд. Преждевременная оптимизация, пушинг своих личных предпочтений и все остальное делает ревью иногда невыносимым.
Конечно, бывает так, что ты «совпадаешь» с видением другого сеньора и тогда ревью проходит идеально, строится на вопросах, а не на пушинге, например «А что если бы мы заюзали вот это, давай подумаем вместе, какие плюсы-минусы можем получить». Можно порисовать на доске и за 15-20 минут найти классное решение, которое удовлетворить обоих.
А как у вас проходят ревью между сеньорами? Часто ли сталкиваются лбами?
ustas33
12.12.2018 18:55Ждем, когда AI будет проводит code review и писать в review «человечишко, что за дичь ???»
borv
12.12.2018 19:11А можно взгляд с другой стороны? Один из моих учителей рассказывал "однажды, еще в советские годы, я читал доклад на конференции; и, когда я закончил, в зале на 200 человек наступила гробовая тишина, а потом все разошлись. Следующие 5 лет мою работу не цитировал только ленивый, но это было худшее выступление в моей жизни".
Ревьювер, на время ревью, — это не начальник, это коллега. Даже если вы джун а он СТО компании. То, что он ревьювит ваш код ставит вас на одну полку. Поэтому когда я получаю много негативного фидбека по поводу своего PR, я мысленно квалифицирую ситуацию как один из двух вариантов.
- придирки в духе "офромить это в стратегию, использовать такой-то паттерн, разве вы не читали великого ХХХ, это не канонично" и критика в основном не конструктивная, на мотив "так положено". Скорее всего, ревьювер — самодовольный индюк. Допилите ревью как он хочет, чтобы отвязался, и больше ему не подавайтесь с серьезными изменениями. Со временем он или сам сольется с процесса заколебавшись ревьювить однострочники, или будет индючить интернов до пенсии. Пофигу, главное чтобы был занят и не мешал. Инженеры из них как правило никакие.
- замечания конструктивные и действительно по делу, чаще всего оформлены в виде вопросов или контр-примеров. Это золото профессии. Получить по рогам от мэтра приносит больше пользы чем семестр в МИТ. Наоборот когда получаешь +2 с пол оборота, это значит что либо ревьювер не особо разбирается в теме, либо ты занимаешься фигней ему (а может и всем вообще) не интересной, либо вся практика в компании вообще профанация. Повод задуматься.
Так что если вы ревьювер — не стесняйтесь завернуть PR 10 раз, вы таки помогаете человеку. Просто помните, что пока PR открыт вы с ним равны. Вы не мастер йода и он не ваш юный падаван. Вы его не учите. Вы вместе думаете как улучшить его идею. Больше задавайте вопросов, меньше комментируйте, больше диалога, меньше понтов. Если переписываете PR код — спросите согласен ли оппонент. В общем не будьте задницей и все будет отлично!
befart
12.12.2018 19:41Давно заметил в Айтишниках излишний пафос и ЧСВ. Люди умные, достойно оценены финансово, живут в состоянии успеха, а успех портит, пример -спортсмены и артисты портятся еще сильнее. Все объяснимо и понятно.
Вот автор говорит, что это он в работе такой чудак на букву М, а в жизни нормальный, но так не бывает, мы такие, какие есть, везде и всегда. Автор же и признается, что и вне работы спорил ради спора с друзьями, ради самоутверждения. Так что это уже черта характера. Но то, что признал проблему — уже хорошо. «Не суди, да не судим будешь», «Кто сам без греха, пусть первый бросит камень», «Будь проще, и люди к тебе потянутся» — это проверенные рецепты, пользуйся.
Heian
12.12.2018 22:53-1Автор был прав в своем подходе изначально, но кончил за упокой. Ох, как бы я хотел такой разгромный code review даже сейчас! Как бы я хотел, чтобы мне не вежливо указывали на некоторые моменты, а провели по каждой строчке, рассказывая, что не так и с ней, и с моей логикой. Потому что я бы это учел, и следующий код был бы на порядок лучше. А поправив «некоторые мелочи», я не вырасту ни на йоту. В общем-то мой код объективно неплох, и я отчаянно тоскую по — пусть злой, но объективной, — его критике. Потому что сейчас все code review обычно не дают мне ничего нового.
Слабакам нет места в боксе. Неспособным выносить критику нет места в IT.
shtaked
12.12.2018 23:23+1У автора хороший слог. И доля истины есть в его словах. Но, если честно, напрягает один момент, который очень нынче популярен везде и вокруг: с каких пор «быстрее, выше, сильнее» стало чем-то постыдным? Почему общество все больше ценит посредственность? Разве не стремление развиваться, опережать, быть лучше сделало человека человеком?
saboteur_kiev
13.12.2018 01:39Я согласен, что ревью это довольно хитрая штука.
Но если вы вдруг решили стать добрым, то это не значит, что нужно игнорировать «Код не масштабируется, не тестируется, набит багами под завязку. „
Просто если таких ревью много, нужно внедрять в SDLC автоматическое сканирование кода инструментами, чтобы хотя бы первоначальную проверку делал не человек.
Нужно описывать best practice, пояснять программистам требования к коду, приводить примеры, проводить тренинги.
Если сложно нанять лучших из лучших, развивайте своих.
skapral
13.12.2018 10:18-1Ну вот щас резко осознаем проблему, и перестаем вообще давать ремарки. Стыдно ему стало…
Большой вопрос не раскрытый в статье — что за ремарки это были, что их было на один PR настолько много, что прям люди ломались. Небось ревьювер делал работу типичного статического анализатора, аля «здесь четыре пробела вместо двух», или «переставь скобки — так на полмилисекунды быстрее, я в микробенчмарках видел». То есть статический анализатор приделать было влом, тесты писать было влом, объективных критериев оценки солюшена — ноль, и видите ли ревьюеры распоясались — самоутверждаются на новичках. Решение — пусть не самоутверждаются, все логично. Ага. То что львиную часть их самоутверждения можно пофиксить установив статические анализаторы, да так чтоб они билд фейлили, не допуская на ревью и не оскорбляя чьих то чуств — не, тогда синьорам самоутверждаться негде будет. Тогда уже придется докапываться по архитектуре, дизайну, а это уже сложнее, там сотни ремарок не найдешь.
И у новичков типа яиц по определению нет — ответить по существу ремарки. Отстоять свой солюшен, отвечая на ремарку объективной контраргументацией. А еще июнь прям ранимая душа, весь изведется же, в то время как фикс ремарки — одна строчка. Че за тупые комплексы? Если согласен с ремаркой — фиксь и мотай на ус экспириенс от знающего спеца. Не согласен — пиши ответ, либо спусти на тормозах и пофиксь как просят, если спор о мелочах. Че комплексовать то?
Отдельно хочется отметить того персонажа, который уволил человека из-за синьорских ремарок на ревью в начале статьи (нелепость). Хочется надеяться что реальная причина все же была в некомпетентности, а не в ремарках, а то как то совсем грустно становится.
TheSima
13.12.2018 10:19-1Очень хочется увидеть хотя бы один его код ревью… Прям вот хочу увидеть какой он спец.
nlog
13.12.2018 14:03Оказалось, вместо того, чтобы становиться по-настоящему крутым, достаточно убедить всех, что ты крутой.
Не хочу никого обидеть, но автор это только недавно понял?
Alex_At_Net
13.12.2018 18:44+3В процессе обсуждения статьи с коллегами встал вопрос примера токсичного 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 — всё одно тёмный лес.
> Почему ты считаешь, что в твоём нежелании пошевелить мозгами и рещшить задачу по аналогии, виноват я?
> посмотри в любой статье для чайников, как работать с БД. я понятно объясняю?
> лучше вообще не флудить бессмысленно, как это делаешь ты
Вот такой пример токсичной среды.
altrus
Вам сегодня еще 1000 строк кода исправлять, а вы такие большие и важные статьи пишите
Вы молодец!!!
doesritsucode
Видимо пишет, пока ждёт новые порции быдокода.