Comments 504
Вы молодец!!!
Но в статье куча моментов, которые смущают по мелочам.
Основной вот этот:
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души. И если вы скажете, что научились исключать из себя корыстную радость от самоутверждения (как бы оно у вас ни проявлялось), то я розовый единорог.
Топ разработчик (ревьюит и видимо давно, не новичок явно), который не верит даже, что кто-то может делать свою работу хорошо — это жуть как страшно.
ПС: искренне надеюсь, что тут кругом преувеличения.
Я бы сказал, что это встречается повсеместно, и вряд ли это специфика России :). Синдром самозванца, только наоборот :).
Я не могу сказать, что я согласен со всеми доводами и решениями в статье, я все-таки на ревью стараюсь в первую очередь ориентироваться даже не на то, нравится мне выбранный подход или нет (в конце концов, все люди разные и не надо пытаться их исправлять :)), а то, работает ли данные решение и выполняет ли свою функцию, есть ли у него очевидные проблемы (например, что оно сломается под нагрузкой или его мне потом будет сложно поддерживать, если возникнет такая необходимость). Но это относится к коду «сеньоров»-коллег. Новичку, вероятно, стоит давать менее критичные компоненты и давать ошибаться и учиться на своих ошибках — это намного эффективнее, чем пытаться «закрыть» его с помощью ревью, да ещё и потратив много своих сил.
Но, в целом, среди действительно крутых разработчиков, с которыми мне приходилось работать, было довольно мало таких «заносчивых м*даков» и больше весьма скромных и адекватных людей. Не уверен, есть ли взаимосвязь, но скорее да, чем нет :). Чрезмерная самоуверенность и «ощущение собственного величия» ослепляет и не дает стимула человеку развиваться дальше, даже если ему это необходимо, так что я согласен, что, особенно в плане ревью, пытаться самоутверждаться за счёт коллег не стоит (осознанно или нет) — вряд ли вы этим помогаете компании, в которой работаете :).
В любом случае, спасибо за оригинальную статью на русском языке!
P.S.: пункт про РФ под конец статьи пропустил, естественно.
Ситуация с русскими как-то тихонько начала меняться и мне нравится этот сдвиг.
Когда человек набрался смелости сказать "я ошибся и виноват в этом не кто-то, а я сам" испытываешь к нему больше уважения, чем если бы искал оправдания или замалчивал инцидент.
В прошлый раз у меня такое ощущение вызвала статья про глупейшую ошибку в серьёзной системе наведения спутниковой антенны (извиняюсь за статью в твиттере).
Стать «не таким» на самом деле довольно сложно — если не дрочить работников, то они и развиваться (как правило) не будут. А если дрючить сильно, то будет как с первым чуваком из статьи — он и понял, что код у него говно, а толку-то — уже уволили.
Поэтому «добрый дедушка» должен не только дрючить «духов», но и помогать им стать лучше. Держаться «золотой середины», где нет места излишним эмоциям и собственным комплексам (неполноценности), в чем собственно и сложность.
Тяжелые времена создают сильных людей,Не будет естественного отсева слабых — будет
Сильные люди создают хорошие времена,
Хорошие времена создают слабых людей,
Слабые люди создают тяжелые времена.
10: Чем ниже порог вхождения, тем больше говнокода
20: Чем больше говнокода — тем больше создается абстракций чтобы его писать не приходилось.
30: Чем больше абстракций — тем ниже порог вхождения.
40: GOTO 10
А производители процессоров и рады стараться :D
абстракции zero-cost бывают.Постарался как можно сильнее выделить главное. Потому что бывают они нулевыми по стоимости действительно редко. Но даже нулевая стоимость их не спасет — понижение порога вхождения порождает еще больше говнокода.
Скорее нет, чем да. Абстракции имеют свойство быть дырявыми, что только добавляет необходимость в компетенции.
Сейчас дешевле купить новый процессор и докупить памяти
Насколько я помню, эти выводы впервые были озвучены военными в 60х. И когда программа реализует каких-нибудь сложные вычислений по уже известному хорошему алгоритму, то, наверное, действительно дешевле докупить железо, чем убрать каждый лишний такт. А ещё железо и программы, о которых тогда шла речь, поставлялись вместе с общим ценником, так что докупить железо можно было "не отходя от кассы".
А сейчас не всегда понятно, где же взять такое железо, чтобы иной сайтик из текста и двух кнопок не тормозил.
Поэтому «добрый дедушка» должен не только дрючить «духов», но и помогать им стать лучше.
Извините, я всегда думал, что это не две самостоятельные задачи, а части одной — обучения и развития «духов», когда «дрочево» не является самоцелью, а только как инструмент для донесения знаний, их закрепления, выработки нужных навыков через наиболее эффективные практики.
И если нарушить баланс между ними, то получится либо как в первом случае в статье (чувака просто задрочили и уволили из-за ЧСВ автора), либо как во втором (указали на незначительные ошибки, пропустив самое серьезное — обучить человека тому, чтобы не делать ошибки крупные).
И в результате наш пафосный автор, внезапно почувствовавший приступ раскаяния, сделал минимум 2 неправильные вещи.
Быть «добрым дедушкой» (мне больше нравится термин «наставник») — это сложно, еще раз повторю.
Человек может быть сколько угодно «специалистом», но если он решит именно «дрючить» новичков, а не помогать им, у нас например он в короткие сроки вылетит как минимум с проекта с книжкой «Не работайте с мудаками» в подарок.
Подобные агресивные «учителя» наносят вреда проекту и компании вцелом никак не меньше, а иногда даже и больше чем не добросовестные ньюкамеры.
И следить за этим всем это работа менеджера, как за неадекватными «специалистами», которые поносят всех вокруг своими коментами (кстати не обезательно код ревью, и обсуждение кого-то в курилке тоже сюда походит) и отправляют атмосферу в команде, так и за новичками, которые не хотят улучшать свои навыки и не прислушиваются к адекватным советам более опытных коллег.
Всё вышесказанное основано на личном опыте, видел я и как «опытный» разработчик изжил всю команду целиком и как команда якобы «безнадёжных» ньюкамов расцветала под руководством грамотного лида.
Мне кажется, что нельзя работу в ИТкомании сравнивать с армией, не все в армию идут добровольно, а в ИТ никого пока повестками не загоняют. Поэтому термин «дедушка» и дрючить тут не приемлим вообще.
Дело не в повестках, а в том «как тут заведено». Такой принцип действует везде, просто армия — самый яркий символ такого подхода, поэтому я такую терминологию и применяю.
Я такой подход не приветствую как раз по озвученной вами причине — здесь не армия, нет нужды воспитывать роту самых разномастных призывников, с разными уровнями образования, взглядами на жизнь и социальными статусами.
Есть хорошие коллективы, где старшие помогают младшим, а есть типы, как автор статьи — вместо оказания помощи в первом описанном случае, подвел работника под увольнение. Я конечно могу допустить, что автору попался необучаемый человек, но в статье это никак не раскрыто, да и судя по предыдущим статьям (если это не очень-очень тонкий троллинг), у автора есть серьезные проблемы с ЧСВ.
Затем автор «якобы раскаялся» и сделал вторую глобальную ошибку. Вместо того, чтобы разъяснить, почему генерируемый код плох и как этого избежать, он "дал чуваку комменты с вежливыми предложениями поправить пару мелочей". А «чувак» и дальше будет генерить неоптимальный код и перестанет развиваться.
Т.е. ни первый, ни второй случай я не нахожу правильным. Поэтому и пишу, что «быть т.н. „дедушкой (наставником, ментором, итп)“ — сложно».
Задаешь вопрос на англоязычном форуме тебе отвечают, задаешь вопрос на израильском (еврейском) форуме тебе отвечают вопросом на вопрос, задаешь вопрос на русскоязычном форуме и тебе долго и нудно объясняют какой ты мудак.
Это не так. Год назад был проведён следственный эксперимент: Взялся вопрос с тостера, к которому не было никаких негативных нареканий, но, объективно — он был глупым. Этот самый вопрос был переведён на англ. и запощен на стековерфлоу. Аккаунт тут же отхватил с пяток минусов, народ в комментах повозмущался, но ответ всё же был дан. На тостере, если не путаю, ответ тоже был дан, без какой-либо критики или унижений.
Если хотите — можете повторить этот эксперимент самостоятельно, предполагаю, что поведение пользователей будет в рамках нормального распределения. Где-то будут поливать говном, кое-где будут относиться нормально.
Этот миф про англоязычные формы может и не совсем миф а может и миф — но прямо говоря, разница между stackoverflow на русском (или — на тостере, который вы приводите в пример) и большим so очень хорошо видна но в другом.
На en so так много вопросов, что количество некачественных вопросов многократно выше, чем на русском. Поэтому за плохой вопрос на русском so можно отхватить меньше минусов, чем на большом so — но вот я совершенно не уверен, что причина в менталитете, а не тупо в разнице аудиторий. Вот если бы на русском so было столько же вопросов и пользователей в те же самые часовые пояса — тогда бы ваш опыт чётко показал бы разницу менталитетов, а так… ну да, что-то померяли, но что?
И на обоих so я видел что и нормальные люди есть и чудаки на букву W, наверное распределение близко к нормальному. Хочешь увидеть лес и не увидеть за лесом деревья — всегда увидишь, то же самое и с всеми мифами про всех американцев или всех русских: можно смотреть на среднее по палате или видеть человека в тех людях с которыми ты лично взаимодействуешь.
PS Я кстати не лично про вас это писал, не воспринимайте на свой счёт.
Я думаю что дело не в людях, а в самом языке. Английский как-то к ругани не располагает, а на русском токсичные обороты одни за одни цепляются и передаются в виде крылатых выражений. Типа «здрасьте… покрасьте», «и вам не хворать», «вашими молитвами», «как дела — не дождетесь», «красивая как кобыла сивая». И все в этом духе. Это все культивирует злобу на подкорке. И я заметил, что чем больше у человека подобных крылатых оборотов — тем он более злой и раздражительный в целом по жизни.
Схожая ситуацию и в рабочих отношениях случалась со мной. Если работаешь с русскоговорящими — то у них очень важно соблюдать такт подчиненного-начальника. Если у человека положение выше — он обязательно будет разговаривать с тобой иначе, ни каких Вы не будет, как будто вы с ним всю жизнь дружили и с одного стакана пили. Англоязычные тиммейты и начальники меньше меняются от получения преимущества, иногда даже начинаешь путаться кто главный, а кто нет. Если начальник что-то говорит сделать, он обязательно сделает это в форме просьбы, как если бы тебя просил коллега, а то и переспросит «есть ли смысл в его идее». В русской среде это больше происходит в декларативном виде — «надо», «сделай», «такая задача».
Я конечно понимаю, что на самом деле отказывать Англ боссу и отказывать рус боссу — в принципе одинаково. В итоге уволят что там, что там, но в одном случае наорут еще, а во-втором нет. Т.е. результат и цель — совпадают, а вот комфорт несравненно не на русскоязычной стороне.
Мое мнение, все дело в интенсивности внутривидовой конкуренции. В развитых странах все довольно спокойно, можно работать в кафе и иметь жену, детей, дом и машину. А у нас конкуренция очень остро стоит, горстка профессий где ты обеспечен, а в целом если застрял в «пролетариях», то живешь плохо. И вот это желание вырваться из болота и привычка толкаться локтями сохраняется на всю жизнь, даже если уже и вырвался.
В английском два слова — шит и фак.
Я даже не знаю, как это комментировать.
У нас бы в таком случае перешли на личность, сказали-бы «ты — кусок ...»
Это очень зависит от того, где именно «у вас». Я переходы на «ты — кусок...» вообще никогда не встречал на профессионально ориентированных форумах. Они для начала сплошь модерируемые. Пренебрежение — да, подколки — да, но вот чтобы натурально куском г называть? За этим надо идти в клоаки вроде комментариев на Ютубе.
а в английском сказала «в тебе есть ...». Что-то типа, не ты тупой, а только лишь твои вопросы, и то не все, а только этот. Нет этих токсичных обобщений.
В первый раз сталкиваюсь со столь благостной интерпретацией словосочетания «you're full of shit». Вообще-то это означает «ты несёшь х*ню». Что-то мне подсказывает, что скажи вам подобное на русскоязычном форуме, вам это очень не понравится.
Если работаешь с русскоговорящими — то у них очень важно соблюдать такт подчиненного-начальника. Если у человека положение выше — он обязательно будет разговаривать с тобой иначе, ни каких Вы не будет
Похоже, вы экстраполируете свой личный опыт. Я двадцать лет работаю в русскоговорящих коллективах — и в роли начальника, и в роли подчиненного. Сплошное «вы».
Англоязычные тиммейты и начальники меньше меняются от получения преимущества, иногда даже начинаешь путаться кто главный, а кто нет.
Это очень сильно зависит от корпоративной культуры в конкретном месте.
А у нас конкуренция очень остро стоит, горстка профессий где ты обеспечен, а в целом если застрял в «пролетариях», то живешь плохо.
Не совсем понял связь. На профессиональных форумах люди вроде как из одной профессии. Отношения «начальник-подчиненный» тоже не про это.
Относительно перевода фразы, даже зная что она значит, она звучит менее оскорбительно чем русский аналог с матами.
Между проф форумами и ютубом, есть еще всякие продуктовые форумы и форумы по интересам. И зачастую они модерируются с большим запозданием если вообще модерируются. Разве что автоматические фильтры стоят.
На профессиональных форумах люди вроде как из одной профессии. Отношения «начальник-подчиненный» тоже не про это.
это желание вырваться из болота и привычка толкаться локтями сохраняется на всю жизнь, даже если уже и вырвался.
Быть начальником — то-же желание вырваться. Быть самым умным в этой комнате, на этом форуме, в этой ветке комментариев — это все подсознательное желание вырваться, быть лучшим, т.к. «повышение получит только один». Соперничество, которое у нас начинается с детского сада и подогревается в обществе до самой смерти.
Я не экстраполирую, я описываю свой опыт.
Ну а я описываю свой. Они не совпадают. Какие выводы можно тут сделать, кроме «бывает по-всякому»?
Относительно перевода фразы, даже зная что она значит, она звучит менее оскорбительно чем русский аналог с матами.
Я именно об этом. Абсолютна та же ругань на чужом языке звучит менее оскорбительно — просто потому, что она на чужом языке.
Соперничество, которое у нас начинается с детского сада и подогревается в обществе до самой смерти
Ну почему только у нас? Есть еще места, где «being competitive» является одной из базовых ценностей. По удивительному совпадению, в тех местах говорят на том самом языке, примеры ругани на котором вы приводите, как менее оскорбительные.
Какие выводы можно тут сделать, кроме «бывает по-всякому»?
Зависит от того, кто хочет сделать выводы. Обычно у человека уже есть вопрос, на который он ищет ответ. У меня вопроса нет, соотв я ни каких выводов сделать не могу. Ваш опыт для меня выглядит как статистическая погрешность, т.к. я подобного доселе не слыхал. Может если я буду это слышать чаще, то когда-то в будущем задумаюсь попробовать дать русскоязычным работодателям шанс. На данный момент у меня есть теория которая работает и во всем меня устраивает.
Абсолютна та же ругань на чужом языке звучит менее оскорбительно — просто потому, что она на чужом языке.
Она не та-же, она становится той-же когда вы ее переводите на свой язык. А если не переводить?
По удивительному совпадению, в тех местах говорят на том самом языке, примеры ругани на котором вы приводите, как менее оскорбительные.
У них наоборот засилье «победили все, ни кто не проиграл» и прочие избегания соперничества в самом раннем возрасте. Начиная с подросткового возраста конечно соперничество нужно, но еще важна грань этого соперничества. Если тебе нужно бороться что-бы быть лучше нормально-комфортного — это одно. Если тебе нужно бороться что-бы выжить — это другое. Чем выше ставки — тем на большее ты готов пойти. Я об этом говорю.
Ваш опыт для меня выглядит как статистическая погрешность, т.к. я подобного доселе не слыхал.
Ну вот, услыхали. В любом случае, статистические показатели из двух противоположных личных опытов выводить рановато, как мне кажется.
Она не та-же, она становится той-же когда вы ее переводите на свой язык. А если не переводить?
Если не переводить, тогда постановка вопроса «там менее оскорбительно, чем у нас» смысла не имеет вообще, поскольку мы соорудили на пути «тамошней» ругани фильтр.
У них наоборот засилье «победили все, ни кто не проиграл» и прочие избегания соперничества в самом раннем возрасте.
Не знаю, что у них там за засилье — охотно верю, что с яслей не вбивают «человек человеку — волк», но совершеннолетние у них ан масс очень жёсткие в плане отстаивания своих интересов.
Если не переводить, тогда постановка вопроса «там менее оскорбительно, чем у нас» смысла не имеет вообще, поскольку мы соорудили на пути «тамошней» ругани фильтр.
Как раз наоборот. Перевод — это фильтр, вернее преобразователь. Переводя текст НЕ дословно — мы меняем эмоциональную окраску под нашу культуру. Я же предлагаю воспринимать их ругань без перевода. Не в смысле игнорировать, а просто не переводить. Вы же русский не переводите что-бы его понять, вот и английский не переводите. Как вы на русском языке понимаете насколько оскорбительна фраза? Насколько она токсичная и агрессивная? Я вам скажу честно, я матерные слова не понимаю практически, и не использую, для меня они загадка. Я их воспринимаю исключительно по не вербальным сигналам от человека. А в письменной речи всегда предполагаю худшее из того что видел ранее. Комбинации матов которые не встречал в реальности не понимаю вовсе.
Аналогично я воспринимаю и ругань на английском. Т.е. для меня они в чем-то ровны в плане восприятия, просто я мало видел ругани на английском вживую.
Как можно понять «full of shit» не переводя, имея восприятие как у меня? Например изучая видеозаписи людей, говорящих эту фразу, изучая их мимику, и мимику людей вокруг.
Коллекция гифок.
Я вижу что злость конечно есть. Но у женщин, говорящих эту фразу, доминирует разочарование, возможно отвращение. А у мужчин призрение, обесценивание обьекта.
Со схожими эмоциями в русском языке произносят оскорбления вида балабол, пустозвон, брехло.
Также есть связанные выражения типа load of shit, bullshit, no shit. Которые спокойно произносятся при детях, на телешоу, при родителях. И по токсичности близки к словам — брехня, чушь, не гони\без брехни.
Из примеров видно, что эту фразу могут сказать друг другу близкие друзья в неформальной обстановке. В моем кругу это может быть «да ладно» или «не гони», а если кто-то скажет вариант вида «харе пи… деть», то скорее всего я с ним больше общаться не буду.
Я эмоционально воспринимаю эти фразы именно так. И вижу что люди их воспринимают спокойнее. И говорящие их произносят спокойнее, чем матерные варианты перевода.
. В любом случае, статистические показатели из двух противоположных личных опытов выводить рановато, как мне кажется.
Я вывожу не из двух, я вывожу из нескольких десятков случаев, которые суммарно имели место быть со мной и моими знакомыми\коллегами. Более того все млекопитающие, начинают строить зависимости с первого травматического опыта. Стоит один раз пнуть кошку — она сразу-же начинает опасаться всех, кто физически может ее пнуть. Стратегия конечно очень грубая, но действенная. Что-бы кошке понять, какие люди пнут, а какие не пнут, ей нужно стать намного сложнее, такой-же сложной как человек. Я вот и сам не всегда понимаю какие люди угроза, а какие нет. В итоге кошка решает эту проблему иначе — она ищет обстоятельства, где ее не пинают и придерживается их. Моя личная кошка например, меня на улице не узнает, бегает от меня, как будто я ей вред хочу причинить. А когда мы в квартире — она не боится ни меня, ни гостей. Она не пытается понять людей или различать их, ей достаточно различать где она, в доме или на улице. И эта кошка самая живучая их всех, что у меня были. Коты с другими стратегиями — умерли вне дома — попадали в передряги.
Я это к чему. Я не хочу становиться ближе к группе лиц, которая причиняла мне дискомфорт постоянно из раза в раз, и у меня есть запасной план — другая группа лиц, которая за 7 лет ни разу мне не причинила дискомфорт.
Если бы у меня запасного плана не было, я бы тогда конечно начал усложнять свою модель русскоговорящего босса, старался бы как-то по собеседованию понять какой он человек, и что от него ждать, НО запасной план есть, а мотивации усложняться — нет.
Из примеров видно, что эту фразу [you're full of shit] могут сказать друг другу близкие друзья в неформальной обстановке. В моем кругу это может быть «да ладно» или «не гони», а если кто-то скажет вариант вида «харе пи… деть», то скорее всего я с ним больше общаться не буду.
А ведь совсем недавно вы говорили, то она означает — «ты несёшь х*ню».
Ну и вот вам варианты трактовки (со слов автора) «не пи… ди»/«пи… шь», которые в кругу друзей — могут быть вполне себе норм, а обращенные в чужого да на форуме каком — вполне себе оскорбление.
Наши разногласия не в том, оскорбительна ли фраза. Она определённо груба.
Я хотел сказать, что значение фразы не нести чушь (в матерном эквиваленте "нести х*ню"), а врать (в матерном эквиваленте "пи… деть"). И я хотел отметить, что нашёл противоречие в комментариях u010602.
Увы, что эта фраза означает — «ты несёшь х*ню» говорил не u010602, а ctc, я банально перепутал авторов комментариев ((. Прошу прощения.
В первый раз сталкиваюсь со столь благостной интерпретацией словосоче тания «you're full of shit». Вообще-то это означает «ты несёшь х*ню».
Эта фраза означает — я тебе не верю. Ну или ты врешь. Матерный эквивалент в русском подберите сами. Совершенно точно эта фраза не означает — ты говоришь глупости.
© urbandictionary.com
Приятно, что вы самостоятельно нашли подтверждение моих слов.
Вот отличная иллюстрация того, что ругательство на чужом языке не воспринимается как ругательство, и «you're full of shit» превращается в мозгу человека иной культуры в строгое «I don't believe you»
Да? И чем конкретно это превращение проиллюстрировано? Наверное, моей просьбой подобрать матерный эквивалент самостоятельно.
Ругательная коннотация испарилась полностью.
Она, конечно могла испариться, но только, если вы не смогли подобрать матерный эквивавлент из русского языка. Я думал у вас с этим проблем не будет.
poxvuibr вы возражаете не тому человеку, и вам за это кидают минусы
Я возражаю тому человеку с мнением которого я не согласен. Тому самому, кто неправильно перевёл you're full of shit.
ctc: Вообще-то это означает «ты несёшь х*ню».
poxvuibr: Эта фраза означает… ты врешь.
ctc: what they are telling you is a big steamy pile of smelly bullshit
poxvuibr: Приятно, что вы самостоятельно нашли подтверждение моих слов.
Вообще-то он нашёл подтверждение *своих* слов, не сильно вникая в ваши.
Если вы даже сейчас не видите тут яркий случай miscommunication… ну тогда я зря потратил 15 минут моей жизни. Грустно…
Вообще-то он нашёл подтверждение своих слов, не сильно вникая в ваши.
Он привёл цитату из urbandictionary, которая подтверждает мои слова. Вот она, эта цитата.
A personal conjecture towards another informing them that you do not believe what they are saying.
ctc думал, что нашёл подтверждение своей позиции, а я указал ему, что на самом деле он нашёл подтверждение моей.
Не там смотрите. Вот хороший словарь английского слэнга, недавно открыли бесплатный доступ:
greensdictofslang.com
В ФИДО такого не было при том же самом языке.
Не согласитесь с кем-нибудь на хабре. Ещё лучше — не согласитесь с компанией в блоге компании. Карма станет резко отрицательной.
Но есть и хорошие русскоязычные площадки. В том же ods.ai на LMGTFY пошлют только если ну совсем банальные вопросы пачками забрасывать.
Ещё лучше — не согласитесь с компанией в блоге компании. Карма станет резко отрицательной.Да ладно? Сколько раз посты компаний чморили в их же собственных блогах.
Создается впечатление, что там пасутся либо сборища пафосных мудаков, либо пафосных ничего_не_знающих_по_теме мудаков, задача которых — что-нибудь кукарекнуть в форум.
У буржуев же все чинно — спросил->ответили, еще и рассказали, что в твоем случае лучше вообще вот так, а не так.
С программерскими ресурсами, кстати, дела получше — дельные советы встречаются чаще, пафоса на порядки меньше (но встречается).
Однако, англоязычный сегмент разумеется больше (опять же на порядки), поэтому шанс найти то, что нужно (на английском), стремится к 100%.
общаться в клоповниках, вроде того же LOR, где всем всё должны и все, что не вписывается в их мировоззрение — «ненужно».
Ну конечно, все что вам лично не нравится так сразу клоповник. Это клоповник имеет историю и почти любой профессионал в этой области возрастом за 30 имеет там аккаунт. Просто мир меняется. Для меня, как человека, который линукс не скачивал, а заказывал по почте, люди не способные прочитать man как минимум не понятны, а уж привычка сначала задать вопрос, а потом думать неприятна. А "ненужно" это местный мем, что-то типа "здрасте в этом чате".
Спасибо, не надо!
И мне совсем не радостно, когда аудитория двача селится на технических ресурсах (да и вообще на любых, хоть форумов по кулинарии), превращая их в пристанище пафосных мудаков с «ЧСВ овер 9к».
типа хаха новичок сам должен будет хлебнуть красных глаз с гентой, пока не поймёт, что это не его или он не тянет. А смысл? Вместо того, чтобы сказать человеку, как проще и быстрее добиться результата, его посылают огребать головняк ради радости посылающих. Это и есть дедовщина и компенсация собственной неуверенности.
Встречалась и обратная ситуация. Когда в одном месте доходило до маразма и туда-сюда пинаний код-ревью, просто потому, что чуваку, на другом конце экрана не нравились «именования переменных». Вот это уже клиника. Фамилий, мест работы не называю (на всякий случай). Но не дай Бог вам таких «сильных разработчиков».
Болеет индустрия, по крайней мере в РФ.
Да ладно — «индустрия»… Если в этом тексте заменить «наша команда» на «наша рота», а «этот парень» на «этот салабон», то получится жизнеописание солдата срочной службы, от духа до дембеля.
Тем не менее статья классная, обожаю такие истории переосмысливания своего пути.
Моя личность сегодня — это симптом не моей болезни. Болеет индустрия, по крайней мере в РФ. Наш менталитет зациклился на культе силы и превосходства. И вот что нужно сделать: надо перестать быть такими. Это на самом деле очень просто.
Хмммм… А буквально вчера один чувак тут утверждал ровно противоположное. Что его бесит слишком вежливое общение разработчиков между собой (в конце, правда, послал всех в жопу, а потом в комментариях не мог понять отчего его называют трамвайным хамом).
Так какова на самом деле реальность? :)
Да, могли испить с коллегами пива на рабочем месте вечером. Да, было веселее, тимбилдинг был почти каждый день. Но жесткости никогда не было, всегда было уважительное отношение друг к другу. Засранцы долго не задерживались.
А вчерашняя статья скорее всего была ответом на эту, точнее на ту ее часть, где культуре разработки в условной России ставилась в упрек ее токсичность.
По некоторому опыту общения с англичанами, французами и немцами — могу сказать, что наши люди часто принимают вежливость за хорошее отношение.
Претензия в стиле «эй ты автор а поясни-ка мне», означает, что читающий данного автора видит, что автор мог бы лучше — но не постарался, или о чем-то важном умолчал и… наш читающий не считает нужным это скрывать.
Где та тонкая грань между вежливостью и лицемерием?
читающий данного автора видит, что автор мог бы лучше — но не постаралсяДа, это тоже достаточно характерная черта русскоязычных комментаторов: уверенность в том, что автор тебе чем-то должен, если пользуешься результатами его труда. Да, не ты должен, а именно автор, и именно тебе. Не постарался, умолчал, вообще какую-то фигню непонятную рассказывает непонятно зачем… К ногтю оборзевшую шоферню!
ошибся веткой
Комментарий:
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.
Там дальше еще есть, лень копировать.
Инстаграмм, кстати, такой же, если пост не про чизкейк.
Но если серьезно, я думаю что ощущения человека в основном зависят от его же самого. Если кто-то рассказывает о кознях в коллективе, то как правило смена коллектива на это не влияет, и человек продолжает видеть их везде, где бы не работал. Другой человек, наоборот, будет видеть только дружелюбное к себе отношение. Хотя исключения, конечно, бывают.
Т.к. у автора преобладает негатив, то ему лучше избегать любого коллектива, и работать в одиночку, например фрилансером
Этот IT прямо какой-то беспросветный ад, наполненный злобой, ненавистью и страхом…
Ну так люди, которые большую часть жизни провели в статусе мальчиков для битья, дорвались до общества, в котором они не только таковыми не являются, но и могут быть ориентиром и примером для подражания. Вот тут-то все говно наружу и вылазит. Уверенные же в себе люди, которых такие проблемы в юности не затронули, работают себе работу спокойно и без какой-либо злобы наставляют нижестоящих в пищевой цепи.
Может достаточно по задаче мерить? Достаточно хорошо решена задача и решена ли? Если да, то зачем углубляться и без спроса делать кого-то лучше? Может он доволен своими навыками и их достаточно для определенного класса задач?
Это смотря какую цель преследовать. Если вы обучаетесь — наставник должен умеренно окунать вас лицом в говнокод. Если вы работаете — в первую очередь нужно смотреть на умеренно ли код решает проблему, а не на "он не совпадает с тем, как написал бы я, а вот тут можно было было бы упростить" и т.д.
Работа + обучение — это менторство, на которое не всегда хватает бюджета и времени в компаниях.
Как выше сказали, нужно ставить посильные задачи, если ты джун, то не нужно ставить сложную задачу и потом разносить решение (если это не обучение конечно). Джун решил проблему — джун молодец. И не важно, что на 70% эффективности, нужно будет на 100 — задачу отдадут синьору.
Менторство — это не мокание лицом в плохой код. Только у меня появился вопрос, а почему этот "крутой" программист не давал джуну на ревью свой код? Все люди учаться на примерах. И показывать надо не только как делать не надо, но и как делать надо, в том числе на примере своего "идеального" кода.
И еще задело — «он не совпадает с тем, как написал бы я» как будто у задачи существует единственное решение.
Видимо вы были навыками не довольны и более глубокий и жесткий комментарий был вам в пользу. Это клево и хорошо, что вы встретили подходящих вам наставников.
Но как инженер, согласитесь, нет универсального инструмента для всех условий и всех людей, который будет одинаково хорошо работать. Этот более жесткий подход к откликам на код может быть крайне вреден да и просто неуместен, если программистом задача решена, решена приемлемо, и он не хочет, чтобы его отпрепарировали на ревью раз за разом.
— истинный виновник провала награжден
— невиновные сокомандики наказана
— тимлид, попытавшийся притормозить код виновника, получает общественное осуждение за это здесь, получает от менеджера, прочитавшего про токсичных ревьюеров и узнавшего его в них, получает вместе с командой за затягивание фичи.
Если просмотрите ветку комментариев, то там несколько раз упоминается, что если задача решена достаточно хорошо. Пересмотрите, ваша аналогия не подходит
Вариант 1: сказать джуну, что он тупой ишак и код у него говно.
Вариант 2: сказать джуну то же самое, но пояснить, почему вот этот кусок — говно, и показать как правильно.
В каком случае специалист вырастет быстрее и лучше?
Отвечая только на этот коммент, а не на ветку — зависит.
Кроме очевидных последствий, есть тип людей, который во втором случае скопипастит, а в первом загуглит и поймёт. А может загуглит и скопипастит. Тут не знаеьш наверняка, надо быть немного психологом чтоб применять нужный подход с определённым человеком :)
А за ишака может (и должно) прилететь в лицо.
Я в принципе не понимаю, как одни коллеги могут себе позволять негативно-личностные фразы в отношении других, для меня это что-то за гранью.
Если моя мысль непонятна, то разверну ее:
Условную фразу (подчеркну, это условная фраза) «тупой ишак» можно завуалировать 100500 способами, но смысл останется именно таким. Даже если просто сказать «твой код говно» — это многих обижает («они считают меня тупым» (С)).
Комментатор выше настаивает на том, что джунов нужно дрочить и только так они станут «настоящими», а все остальные пусть отсеиваются. Ну раз так с ним поступали и он «достиг», значит это «единственно верный путь».
Я же утверждаю, что эффективней будет не просто дрючить новеньких, но и объяснять, где и в чем проблема.
Поэтому вариантов в любом случае два — просто сказать, что «код говно», или показать, почему он говно и как его лучше исправить.
А HR-ы всё это время будут сидеть и не отсвечивать. Потому что недопонимания между разработчиками — это не их собачье дело.
Ст. Лем, «Осмотр на месте»
Но в этой истории мне не показалось, что кто-то выиграл от вашего решения. Если код действительно плох, то все-таки не стоит его пропускать. Думаю, ревьювируемый тоже это понимает и хочет научиться разрабатывать лучше, а без обратной связи это сложоно сделать. Достаточно было бы, возможно, сменить тон комментариев на более конструктивный.
У меня была похожая ситуация, когда мне надо было ревьювить новичков/стажеров. Боюсь, мои ревью были довольно грубыми. В конце концов я сам это понял, как и автор статьи, и отказался от работы со стажерами т.к. не видел в себе сил перестроиться прямо сейчас.
Сейчас я занялся спортом и иногда представляю себе, что было бы, если бы мой тренер вел бы себя так же, как я тогда. Не думаю, что мне бы это понравилось.
А вы занимаетесь спортом для собственного удовольствия или выступаете за деньги? И зависят ли деньги и работа других людей от того, насколько хорошо вы выступаете?
Хотели бы вы оперироваться у хирурга, чьи наставники вели себя максимально мягко и щадяще, танцуя на цыпочках вокруг его нежного как зефир в шоколаде эго? Ни в коем случае не критикуя за серьёзные ошибки, лучше самим потом молча поправить, ну если пациент ещё жив конечно.
В России пока только такой выбор. Или вы**ть за косяк или "танцевать на цыпочках вокруг его эго". Критика в позитивном ключе пока воспринимается как сумасшествие с запада, типа геев.
Однако исследования говорят, что результат от позитивного подкрепления выше. Хирург, которого направляли и учили, с большей вероятностью проперирует хорошо, чем тот, которого грубо ругали, потому что от него жизни зависят. А диплом получат скорее всего оба.
Вы**ть за косяк — это что-то в армейском стиле: кто-то на кого-то орёт, переходит на личность, унижает. Такое, конечно, недопустимо и неэффективно.
Но автор статьи не просто предлагает нормально общаться — тут я двумя руками за. Он пишет «Ничего страшного, если код плохой, я и сам могу его поправить». То есть новичок не получает нормальной обратной связи, чтобы не дай бог ни капельку не задеть его эмоционально. Гиперопека в чистом виде.
Ничего страшного, если код плохой, я и сам могу его поправить
Он просто ушел в другую крайность. Гиперопека, конечно, не хорошо. Но в данном случае видимо человеку дали слишком сложную задачу, раз он выдал так много плохого кода. Разносить в комментариях бесполезно, надо разбить задачу на две или дать другую, где косяков будет не много.
Позитивная обратная связь — сложный навык, нельзя просто решить, что теперь буду так общаться, этому ещё научиться надо. Как кататься на велосипеде. Но если автор захотел, то научится, конечно.
Так что теперь с ним делать? Что ему сказать? Как автор «всё хорошо, тут пара замечаний» и потом самому молча поправить? Или ещё как-то? Как всё-таки дать эту позитивную обратную связь, если код плохой? Я понимаю, как дать позитивную обратную связь, если код был достаточно хороший — похвалить, отметить улучшения по сравнению с прошлыми задачами.
«В 143 строке ошибка, это работает не так а вот этак, поэтому правильно будет вот так вот» — хороший, полезный, нейтральный по тону фидбек, которого ждут от код ревьюера.
«Это тебя в твоей шараге научили такую хрень как в 143 строке писать? Это надо совсем нихера не понимать, чтобы такую херню придумать. Выкинь и переделай, быдлокодер.» — вредный кусок зла, не несущий никакой пользы никому, и преднозначенный только чтобы почесать эго.
Но меня убеждают, что надо давать не объективный фидбек, а «позитивную обратную связь» — то есть каким-то чудесным образом указать на ошибку в 143 строке, но так, чтобы это подняло самооценку и настроение того, кто ошибку допустил.
А автор статьи вообще пишет в конце «Вместо этого дал чуваку комменты с вежливыми предложениями поправить пару мелочей. Ничего страшного, если код плохой, я и сам могу его поправить». То есть он дал необъективный фидбек, а потом молча исправил чужую ошибку.
Ну во-первых, указать на ошибку так чтобы это подняло самооценку и оставило хорошее настроение не только возможно, но и правильно. Цель ревью же в том, чтобы плохой код не уходил в продашкн, а кодер стал лучше и писал меньше плохого кода. И вот этот вот момент, что его надо обязательно наказать, а хвалить вроде как не обязательно — это же его работа — этой цели не помогает, а мешает.
Как, чёрт побери, это сделать? «Молодец, что ошибся»? Хвалить надо, конечно. Я никогда не писал, что не надо. За удачные решения, за хороший код. Как и главное зачем хвалить за ошибку?
Я не призываю никого наказывать, ошибки — это нормально, единственный способ их не делать — не писать никакого кода совсем. Но за ошибку должна следовать объективная критика, а не похвала.
Да что ж за дихотомия-то такая, что за бинарное хвалить-ругать? Указать на ошибку или на лучшее решение можно под видом передачи сакральных знаний, или под видом "добро пожаловать в крутой клуб тех кто тоже так ошибался", или каким-нибудь "давай сменим приоритеты", да тысяча совершенно нормальных ежедневных перебросов информацией, не включающих в себя совершенно не работающее тыканье носом в лужу.
Предвосхищая "а чо я такой крутой буду перед дураками распинаться", ревью это все-таки менторская работа, а процесс передачи знаний должен быть приятным обоим участникам, иначе он неэффективен и может принести больше вреда чем пользы.
> под видом передачи сакральных знаний, или под видом «добро пожаловать в крутой клуб тех кто тоже так ошибался»
В детском саду всем детям всегда говорят, что они молодцы, независимо от того, насколько удачная поделка из пластилина получилась. Просто за попытку. Это правильно, потому что это дети.
Но если человека наняли разработчиком — значит, как минимум он или она достиг 18 лет. Он обязан соблюдать законы, платить налоги, имеет полное право распоряжаться своей жизнью, право защищать себя и своих близких с оружием в руках в случае необходимости. Может быть, он всё же уже способен воспринять вежливое и корректное сообщение о своей ошибке, не получив при этом тяжёлых психологических травм?
А при передаче знаний очень важно не выделываться и не вещать с олимпа дуракам, а просто рассказывать. И если чтобы этого добиться, есть вариант приободрить получающего, то лучше это сделать, от этого всем станет хорошо.
Еще раз: код ревью и предполагает вежливые корректные исправления ошибок, и очень важно оставаться в рамках вежливой корректности, и если уж выходить за их рамки, то только в положительную сторону, где начинается разговор двух приятелей о перепитиях сложного языка, и ни в коем случае не в ту, где строгий учитель отчитывает нерадивого разгильдяя.
На ошибку обычно получаешь комментарий типа «В целом код отличный, хорошая работа, но вот в этом месте мне кажется можно было решить по другому: <описание проблемы и решения>».
На Восточном побережье они, правда, немного грубее и прямее.
Результатом ревью должна быть не оценка качества кода, а выявление мест, которые или содержат баги или могут быть реализованы иначе.
И по своему опыту скажу, что после работы в такой команде, где всегда позитивный фидбек. Отсутствие фидбека воспринимаешь просто как конец света: «почему он не сказал что все отлично? Может я накосячил где-то?» И уже сам начинаешь думать, анализировать, сам спрашиваешь что можно улучшить и т.д.
Другими словами такая схема лучше подходит для людей с внутренним локус контролем, и стимулирует его вырабатывать. А люди с внешним локс контролем в такой среде вообще работать не могут, они тупо сидят и пинают, неделю вторую, месяц. Потом или сами уходят или их мило так увольняют — мол не сработались, бывает.
Гораздо приятнее, если тебя хвалит человек, который не стесняется выражаться прямо
Если честно, не встречал таких людей. Люди, говорившие прямо, которые попадались мне, обычно говорили прямо «все говно, иди отсюда», а когда было хорошо, молчали или хмыкали.
Отличные примеры.
Можно пойти и чуть дальше "я думаю, что это работает вот так, а не так. Поэтому строка 143 выдаст результат, отличный от ожидаемого. Надо нам проверить это поведение по спеке, документации. А еще лучше, добавить тест на этот кейс".
Ревьюер может ведь и ошибаться...
Много плохого кода может быть сильно разных уровней.
Если мне не нравятся локальные переменные final в java, объявленные так без необходимости (есть редкие случаи, когда иначе — нельзя), то для меня при первом столкновении с таким стилем кодирования это было натурально плохим кодом. При этом на проекте не было чёткого правила по этому поводу. И вот это для меня вроде как плохой код (визуальный шум и всё такое… а на java и без того сильно ругаются за многословность). Но требовать его изменить на код-ревью — я не буду (если нет строгих правил кодирования по этому пункту).
А бывают ошибки, которые с вероятностью 50% дают NPE | OOO или ещё какую-нибудь радость… там я, естественно, молчать не стану, но сперва постараюсь подать инфу так, чтобы человек сам допёр, что же получилось, и только если не получилось — буду говорить прямым текстом о проблеме.
В вашем ответе есть конструктивное предложение — «подать инфу так, чтобы человек сам допёр». Это уже по сути менторство — очень круто, но не всегда на это может быть время.
Но всё равно, даже в таком виде — это критика, а не позитив. А вдруг нежный и ранимый джуниор воспримет эти наводящие вопросы как изощрённое издевательство? Автор статьи вон призывает ошибки скрывать, а потом по-тихому самому править.
Так писать плохо, вот почему: <в двух словах или ссылкой>. Лучше/правильнее писать вот так: <...>.
Но жёсткое, до жестокости, наставление, с постоянным тыканием часто приводит к тому, чтобы в случае ошибки ориентироваться не на исправление последствий, а на то, чтобы никто не узнал.
Не про IT, но про РФ (скорее весь бывший СССР).
Разве что я обычно стараюсь написать в начале что хорошо (просто потому что это тоже обратная связь. если я напишу только про одну строчку кода, которая плоха, то неясно — остальное ок или я остальное даже не смотрел), а там где плохо — указывать почему и при каких условиях я считаю это плохим. Редко бывает 100% объективно плохо (goto и дублирование могут быть уместными в некоторых местах и для определенных условий), я могу ошибиться (а то напишу я резко «тут неправильно и точка», а мне распишут почему правильно — и как-то уже некрасиво получается) или не знать всего контекста.
Чувак оставшийся на месте где его 8 лет макали в дерьмо психопат практически наверняка. Дальше вопрос: ему сейчас карьерно выгоднее записать +1 успешную операцию на баланс или интереснее посмотреть что будет если вот эти пару нервов перерезать.
Неужели невозможно сказать «у тебя здесь такая-то ошибка», не добавляя к этому «потому что ты тупой до****б»?
Автор в конце статьи предлагает скрывать ошибки и потом по-тихому исправлять их самому. Вы хотели бы попасть к врачу, прошедшему такое обучение?
> Ничего страшного, если код плохой, я и сам могу его поправить.
плохой код != содержит ошибки
> плохой код != содержит ошибки
Код может корректно работать, но быть неудобным для дальнейшего использования и изменения. И лучше узнать об этом на ревью, чем через год выяснить, что ты так и не научился писать нормальный код, потому что за тобой всё исправляли.
оперироваться у хирурга, чьи наставники вели себя максимально мягко и щадяще
Конкретно в такой формулировке — почему нет. Потому что «мягко и щадяще» !== «не критикуя за серьёзные ошибки». Я указал в своем комментарии, что замалчивание ошибок, как это сделал автор — не выход.
Я точно не хотел бы оперироваться у хирурга (читай — оказаться в полной его власти), которого шпыняли за малейшую провинность и на котором вымещали злость коллеги постарше.
Вообще карьера спортсмена\певца\художника отличается от карьеры программиста.
Но я скорее описываю ситуацию когда новичок только пришел в сферу А (спорт, IT — не суть). Можно сразу начать «глумиться» над новичком (ахаха, салабон, не знает нифига), а можно быть более профессиональным и научить даже самого-пресамого новичка.
облизывать
Быть вежливым !== угождать. Просто сказать на 100500 попытку выполнить упражнение «Бывает. Давай еще немного упростим, чтобы технику отработать, а потом нагрузим обратно» вместо «Полная херня, ну сколько можно уже одно и тоже».
Тренеру-то деньги за это платят. Воспитателю в детском саду — тоже. А программисту — нет. Результат работы программиста — это его код, а не обученный джун. Обучать кого-то себе во вред — это вообще иррационально.
Вежливость
А при чем тут вежливость? Тратить свое время на то, за что людям обычно платят деньги — это с вежливостью никак не связано.
Нету никаких таких норм вежливости, согласно которым надо работать за бесплатно.
Если работодатель хочет, чтобы программист выполнял обязанности преподавателя/тренера/воспитателя детского сада/няни — пусть делает соответствующую ставку и трудоустраивает туда человека.
Как правило, для бизнеса выгоднее быстрые изменения. Если ревью занимает не две недели, а час, это, в среднем, гораздо полезнее.
Могу привести пример проекта, откуда из одной команды в другую ноги унесли 2 спеца, а третий и просто ушел, из-за вот такого отношения, что кто-то "мальчик-даун", но мы сейчас его на ревью поправим под свои стандарты.
С чего это стало нормальным? Вроде задача продукт сделать, а не выделать конченных и не конченных, достойных своего уровня?
Но это совершенно повод спускать явно плохой код на тормозах. Плохо нужно четко разделять
— проблемые места кода ( человек неправильно понимает как работает фича ЯП например )
— проблемы в архитектуре
— непривычный стиль написания кода
Третье имхо не проблема, хотя удобно когда команда пишет в более менее одном стиле. Но вот первые два должны быть четко завернуты после ревью на проработку столько раз сколько нужно чтобы код не вызывал претензий.
Интересно, с каких пор под нормальным ревью понимают разнос и унижение.
О код ревью я узнал на первой полноценной работе — в университете такому не учили. За год ни разу не было разносов на ревью — комментарии всегда абсолютно кореектно и по делу, даже при очевидных глупых ошибках. Не боже мой попасть в команду с кем-то в чтиле автора статьи (до реинкарнации).
Зачем тогда вообще code review нужен?
Понятно, что с людьми вежливо нужно обращаться и особенно вежливо с теми, кто ниже тебя по рангу.
Но ИМХО, посыл статьи кто-то может понять как призыв отменить code review вообще, как токсичный и обидный. Как вырванные из контекста слова Кнута про premature optimization, которые зачастую являются индульгенцией не думать наперед.
Зачем тогда вообще code review нужен?
Что бы на бой не попал плохой код. Если его поправит более знающий, это приемлимо (с точки зрения бизнеса).
А как же стратегия? Как он будет обучаться без обратной связи?
А если не абстрагироваться, то у знающего и своя работа есть, а ЗП он только за себя получает.
Читать чужой код, следить за PR в компоненты в которых что-то менял. Получать чужой код на ревью.
> знающего и своя работа есть, а ЗП он только за себя получает
Значет code review не нужен в этом проекте.
> Получать чужой код на ревью.
И что это будет за ревью, если он свой код писать не умеет?
Ощущения понятны, но итог печальный: новичок так и не узнал, как улучшить свой код, не прокачался, застрял в развитии. А ведь можно не разносить, а советовать, интересоваться, всё ли в ревью понятно и давать ссылок почитать-прокачаться.
Но этого никогда не случалось. Почему? Потому что потом беру стул и построчно объясняю, где, как, и главное, почему разраб прокололся. Помогает? Не совсем. Кто-то просто механически поправит, кто-то сядет и перепишет так, что потом сияет — мол поймай меня теперь. К сожалению, первых сильно больше половины. Зато вторые уже через год бодро отлавливают баги в моем коде. Чем я очень горжусь (не багами, нет), а людьми. Что для них, как и для меня, написание хорошего кода не невозможная страшная вещь, а вдумчивая кропотливая работа над самим собой.
- Нельзя пропускать коммиты если они содержут явные ошибки (Errors). Напр.: Забыл обернуть в транзакцию БД.
- Остальные замечания сделать рекомендательными (Warnings). Удобно делать их вопросами. Напр.:
Почему были использованны двойные кавчки вместо одинарных?. По факту это вкусовщина. Если инициатор коммита задумался после вашей рекомендации, то он скорее поправит код. Возможно это было осознаным решением. А возможно вам нужно забить на это замечание. - Ну и пулреквесты должны быть вменяемого объема, чтобы проверяющий их смог переварить. С 1000 строк я вероятнее отклонил PR.
feature/epic_new_entity => feature/epic
Ну тут все зависит от того какое у вас flow, какие инструменты и самое главное как вы договорились.
Я смотрю на это так: PR это запрос на code review. Он должен быть удобным для code review. Мы используем гитхаб. Для большой фичи создается ветка 'feature/epic'. В эту ветку идут небольшие PR, из малых веток 'feature/epic_new_entity' поскольку они небольшие их удобно смотреть и проверять. В малые ветки коммиты используются как сохранения. После того как ветка 'feature/epic' стала осмысленной, мы ее обновляем по мастеру, сквошим, ее протестировали автотестами и руками. После этого делаем PR в мастер.
Поскольку в мастер отправляются засквошенные ветки коммиты в мастере выражают что-то целостное фичу, баг по истории комитов можно проследить историю проекта.
Малые ветки позволяют прогерам сохранятся также часто, как они жмут quick save в своей любимой игре.
PR в эпики делет code review удобным.
Если эта энтити — генеренная (плюс генеренные контроллеры и т.п.), то да, без проблем может.
А если в ней сразу функционала на тысячу строк, то это немалая фича. Сразу возникает желание проверить на копипаст из соседнего класса.
А уж если новичок фичу такого размера запилил, то что-то, возможно, идёт не так.
Это значит что техлиду надо самому подкачаться, да книжки почитать. А не гнуть пальцы в review.
Остальные замечания сделать рекомендательными (Warnings). Удобно делать их вопросами. Напр.:
Почему были использованны двойные кавчки вместо одинарных?.. По факту это вкусовщина.
Просто настроить статическую проверку кода и запретить комитить то, что её не проходит. И вообще не париться по поводу вкусовщины и вот этих все мелочей.
Почему были использованны двойные кавчки вместо одинарных?
Надеюсь, это шуточный пример )
Я могу представить ситуацию, в которой после вопроса «почему были использованы двойные кавычки вместо одинарных?» человек начнет писать вместо
$x = "{$name}'s car is {$color}"
такое:
$x = $name . '\'s car is ' . $color;
А если кавычек не одна, а 5 или это какая-нибудь регулярка (мне лень придумывать в полпятого пример ;) ) — код превратится в нечитаемый ужас.
Почему были использованы двойные кавычки вместо одинарных?
А как правильно ответить на такой вопрос? Вы сами говорите это вкусовщина — у человека просто именно такой подход, ему нравится двойные кавычки.
Если нет гайдлайнов к которым можно отослаться, то новичка такой вопрос деморализует — он же не знает как правильно, и будет считать что правильно всегда писать одинарные, например.
Цель вопроса не деморализовать, а заставить задуматься.
- Человек не знает, что одинарные работают быстрее, поэтому они предпочтительнее, если нет обработки переменных. Он ищет информацию об этом, или спрашивает у проверящего. И вносит изменения в свой код.
- Человек знает об этом, но данный код представляет из себя кладбище домашних животных. Время на рефакторинг нет. И кавчки не решат ни чего. Ну и смысл тратить время на исправление?
- У вас идеальный код. Везде одинарные кавычки, все по гайдлайну. Вы объяснили человеку почему это так, и как это важно для вас лично. Человек занимается умышленным вредительством, осознано. Кастрируйте этого тупорылого #@удака, пока он весь мир не заразил.
2. В этом случае тем более не имеет смысла этот вопрос — никакого бонуса в изменении кавычек не будет.
3. У человека есть гайдлайн, и его нарушение — явная ошибка. В таком случае никакого вопроса не нужно — это нужно исправить.
В итоге получается, что есть всего два варианта:
— Заранее сказать программисту: «У нас принято везде писать одинарные кавычки» и указывать на это как на ошибку в код ревью.
— Не обращать внимания на кавычки.
А вопрос только собьет с толку начинающего.
— Мы кодим на php
— Для php кавычки не влияют на производительность.
Теперь нам только осталось договориться о том, какие кавычки использовать. И вероятнее мы будем исходить из того, какие кавычки уже использовались в остальном коде.
В данном случае использовать\не использовать одинарыне\двойные кавычки становится осознаным. Это гораздо лучше чем «У нас принято везде писать одинарные кавычки».
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души.Необоснованная экстраполяция до добра не доведет. Проблема заключается в том, что не все такие как ты. Когда я делаю код-ревью, то я не кайфую от чувства собственного превосходства. Я отлыниваю, я не хочу делать код-ревью. Я не хочу читать код, я не хочу писать замечания. Мне приходится это делать — вместо того, чтобы взять и просто поправить код. Я бы с радостью работал в одно рыло вечно, да вот только не получится.
Твой мотив быть говном — он только твой.
— Сделать гайдлайны.
— Замечания делать в двух случаях:
— Нарушение гайдлайнов
— 2*2=5 (Грубая ошибка).
Так было, наверное, всегда… может я и не прав, но последнее место где помогали был FIDONet.

А вопросы вида «у меня что-то сломалось как починить», без следа попыток самому решить проблему или хотя бы помочь её понять людям, к которым обращаешься за советом — ИМХО заслуживают насмешек, тыканий носом, смотри мануал и т.д.
Благородный помогает людям увидеть хорошее в себе и не поучает людей видеть в себе дурное. А низкий человек поступает наоборот
Будьте строги к себе и мягки к другим. Так вы оградите себя от людской неприязни.
Конфуций
Отвечающие тратят на чужую проблему своё личное время и силы. Поэтому задающему вопрос стоит проявлять к ним некоторое уважение. Иначе получается как-то так: «мне лениво приложить даже минимальные усилия для решения своей проблемы, даже прочитать сообщение об ошибке или один раз ввести его в гугл, где ответ будет на первой строчке. Просто сделайте всю работу за меня».
Кстати, у Конфуция половина высказываний про уважение к старшим, к более мудрым и всё в таком духе.
Если вам не нравится «ленивый вопрос» — не давайте ответ, не тратьте время. Ведь ВАС лично, ни кто не просил. А то выходит вы сделали больше чем хотели, хотя вас не просили, и теперь злитесь на ни в чем не повинного человека.
Даже если человек просит сделать всю работу за него — зачем на него злиться? Просто не делай. Тема постоит пустая и отправится в архив.
А вот если автору объяснят, как правильно задавать вопрос — то его темы перестанут отправляться в архив пустыми. И он в итоге найдёт решение своей проблемы.
> зачем на него злиться?
Злиться не надо. Но «ленивые вопросы» превращают форум в свалку с минимумом полезного контента. Оттуда уходят способные ответить люди, потому что тратить время на такие вопросы неинтересно, даже если просто их читать и игнорировать. Так что вред от них всё же есть.
Будьте строги к себе и мягки к другим. — КонфуцийОчень хорошее изречение, ныне более известное в IT как правило (закон) Постела aka robustness principle.
все вежливоИногда даже слишком. Гуглишь ошибку, попадаешь на форумы Microsoft и начинается…
Автор: У меня ошибка 0x0000001 в чём может быть дело?
ТехПоддержка: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Попробуйте, пожалуйста, выключить и включить, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Попробовал, не помогло
ТП: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Скажите, пожалуйста, с чего началась ошибка, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Началась внезапно
ТП: Здравствуйте, спасибо что обратились к нам. Приносим свои извинения что наш продукт не удовлетворил вашим ожиданиям. Пожалуйста, предоставьте логи, с уважением, сотрудник технической поддержки Раджеш Кутрапали.
А: Скажите, как тут прикрепить логи?
ТП: Здравствуйте, спасибо что обратились к нам…
А-А-А! И ещё это с бесячей майкрософтовской дизайнерской фишкой:
делать
километровые
расстояния
между
строками. Палец стирается в кровь пока ищешь наконец уже ответ, скролля тонны этого этикетного буллшита.
Тоже встречаю и в иностранных компаниях, если в них есть помешанные на своем эго — всречал ребят из России, Украины, Польши, кто-то давно уехал с родины, кто-то нет.
Довелось год работать с одним "светилом" golang, который регулярно на хабре минусами отоваривается за свою агрессивную точку зрения. До работы бок о бок думал, что просто есть такие люди с жесткой точкой зрения… Поработав могу сказать, что я понял, о чем говорят, когда борются с токсичностью в команде, и как инструментом этой токсичности становится код ревью.
Если раньше услышав о токсичности лумал "бред какой-то", то теперь думаю, что есть зерно правды в требовании нетоксичной атмосферы.
А теперь представим что компилятор будет таким же сентиментальным :)
Ну а если серьёзно — нужно учиться общаться с людьми, и чем больше человек раздражает — тем спокойнее нужно оставаться. Правда очень сложно не перешагнуть грань высокомерия при таком подходе, у меня вот пока плохо получается :(
Нам вот недавно «для веса» на проект подкинули группу индиских коллег. Попросили обучить. Это что-то с чем-то. Я не люблю быть говнюком и вообще стараюсь всегда объянять и все комменты делать со ссылками на доку (или просто делать ссылку на нужную доку), но они меня ненавидят. Т.к. в их коде и ревьюить нечего. Чаще всего это тупая не рабочая копипаста со всем известных сайтов.
Жалуются начальству. Мы тоже жалуемся. А их не убирают с проекта. Не Россия, но бюджеты тоже пилить умеют)) В итоге просто прикапываем PR за PRом, тимлид выдает им новую задачу, а их задача переходит к нормалному программисту.
Они ненавидят CodeReviw я его начинаю ненавидть, а иначе никак.
З.Ы
Иногда лучше гавняк гавняк и в продакшин, чем по несколько недель вычищать код стори которая всеравно будет переписана через пол года, потому что правила бизнеса будут требовать другого подхода
Аособенно это видно при сравнении нашего Тостера с ихним StackOverflow.
На тостере частенько отвечают надменно, с пренебрежением и брезгливостью, причем даже не по сути вопроса. Причем я говорю о действительно сложных вопросах, не тех, когда человеку лень гуглить. На СО в этом деле приятнее, хотя и не сказал бы что разница прям глобальная, на СО видимо везло. А как меня однажды с говном смешали на аскубунте… Это был единственный случай, когда потребовалось получить ответ задав вопрос по данной тематике.
Автор, а вы хотели бы попасть на операцию к хирургу, чьи наставники вели себя максимально мягко и щадяще, танцуя на цыпочках вокруг его нежного как зефир в шоколаде эго? «В основном конечно неплохо. Правда была пара грубых ошибок и ещё несколько мелких, но ты не расстраивайся, со временем научишься. Этот пациент умер — завтра следующего привезут, ничего непоправимого, главное в себя верить». А если не умер — то вообще сами всё молча исправят на дополнительной операции, лишь бы ученика не обидеть.
Ваша неправота в применении демагогического приема, именуемого ложной дихотомией. Если наставники вели себя мягко и щадяще, это вовсе не означает, что учили плохо (более того, чаще неадекватность наставника обратно пропорциональна результатам учеников): но ваша формулировка такого варианта не подразумевает.
Таким образом, создается впечатление, что вы неявно агитируете за вариант максимально жесткого наставничества с оскорблениями, переходом на личность обучаемого, регулярным его унижением, етц, етц.
Вот за это старательно вами созданное впечатление неявной агитации вы и получаете минусы. Как мне кажется.
Я ни в коем случае не за переход на личности, унижения и так далее. Не знаю, почему мой комментарий так восприняли. Но честная обратная связь — самое важное, что наставник должен давать ученику. А скрывать ошибки — это просто вредительство какое-то.
Очевидно, что товарищу выдали задание несколько не по умениям. Да запросто: не в программировании, но сталкивался многократно. Поэтому действия: указываем на то, что товарищу посильно исправить самостоятельно, остальное он все равно не потянет.
При этом вашу-то реальную позицию я понимаю, вы про нее в комментах проговаривались, и ничего общего она с унижением не имеет. Просто почему-то вы формулируете так, что эта позиция умело скрыта, а без вдумчивого чтения в глаза лезет эта самая ложная дихотомия.
М-мм… Наверное, правильным будет добавить, что автор статьи тоже в значительной степени попытался обозначить именно такую дихотомию. Вместо хотя бы матрицы 2х2, которая там вообще-то напрашивается в минимально похожем на реальность случае.
dev.motivation ≡ Motivation.LoveДа уж, стойкое целостное понимание того, что только любовь творит чудеса, ой как не просто и не сразу приходит.
Мне интересно пробовать найти баг в коде до его релиза в мастер-ветку.
Мне интересно писать комментарии к коду в весёлом стиле, иногда с шутками и смайлами, не обижая разработчика.
Мне интересно читать чужие комментарии к своему коду, потому что они позволяют развиваться или хотя бы смотреть на свою логику со стороны (и, на мой взгляд,)
Я практически всегда провожу ревью собственного кода перед созданием PR (вот прямо открывают дифф веток в используемом на проекте bitbucket ui и делаю ревью).
Наверное, единственное, что может сделаеть мои комментарии «токсичными» — это наплевательское отношение разработчика к задаче, когда код явно даже не запускался (пару раз сталкивался с ситуацией, когда коммитится код заведомо неверный, любая мануальная проверка функционала подтвердит).
«Токсичные» злые дяди-сеньоры тоже были в моей практике, но ни разу не ударили по моему самомнению. Да, код плох, да, я полностью переписал всё раз (два, три). Но я стал лучше.
PR и code review — это инструмент самообразования. И по моему опыту, весьма действенный.
Если вы уже нашли 10 багов, то не стоит указывать на недостаточную гибкость, плохую читаемость и прочее в таком духе. Пусть сначала поправит баги, а там можно подумать — говорить ли об этих материях или отложить для следующего PR.
Повезло теперешним новичкам — им не нужно обращаться на эти «площадки», ведь теперь есть stackoverflow и github. Да и форумы эти с нулевыми посещениями, я думаю, давно загнулись.
Автору искренне желаю найти новые пути развития и перестать быть «чемпионом зала».
Если у компании нет ресурсов на ментора, то надо было увольнять и брать более скилового и дорого сотрудника.
Комментами в ревью такие вопросы не решаются, ибо делают только хуже: люди начинают бояться писать код в принципе. В итоге имеем полный отказ от любых видов рефакторинга и инициативы.
И если вы скажете, что научились исключать из себя корыстную радость от самоутверждения (как бы оно у вас ни проявлялось), то я розовый единорог.
Поздравляю — вы — розовый единорог. Или (всё ещё) очень неопытны. Хотя скорее всего, просто очень молоды. Даже если вам за 50.
Но не расстраивайтесь, либо это изменится через два-три десятка лет, либо вы придёте к этому в следующей жизни.
В пуллреквесте может быть несколько цепочек — т.е. бизнес логика, UI, логирование, еще что-то — и каждое из них может иметь свои назвисимые ошибки…
Весь прогресс человечества — побочный эффект того, что люди самоутверждаются за счет друг друга.
Одни люди хотят утвердится в финансовых кругах и создают бизнес, развивают его.
Другие люди хотят подняться на вершину научных кругов и для этого создают научные теории.
Третьи хотят поставить на место коллег и создают новые механизмы.
Наши причины всегда эгоистичны. В текущей культурной парадигме эгоизм, самоутверждение — плохие штуки, и их вроде как нужно избегать. Но как вид мы прогрессируем именно из-за них.
И да, есть мнение, что мнение которое вы упоминаете, ошибочно! ;)
Причём Докинз возводит именно этот вид эгоизма в абсолют (ну учёные любят подавать свои теории как единственные и абсолютно верные). А на практике работают все уровни одновременно — и особь, и популяция, и вид, и ген.
Альтруизм — действия которые укорачивают вашу жизнь.
Всё четко и однозначно. И никаких игр, мол альтруизм это скрытый эгоизм.
Ведь всякие действия типа помощь, меценатство и так далее, без мысли о вознаграждении — никак они прямо жизнь не укорачивают. Но часто тоже называются альтруизмом.
Весь прогресс человечества — побочный эффект того, что люди самоутверждаются за счет друг друга.
Оправдание свинского поведения, как есть.
Есть куча способов самоутверждаться, например, построить хорошую команду в которой приятно работать и делать хороший продукт.
Как мне кажется, вы заморачиваетесь самоосуждением. Вы правильно подметили что желание самоутверждения, эмоционального подкрепления + логического обоснования действия, это круто, но не делает вас внутренне счастливым. Один профессор говорит что, смысл существования хомосапиенсов это еда, размножения и доминантность. Безделье, и тогда наступит полное счастье. В вашем же случае, случилась системная ошибка, которая многие годы заставляла вас становиться быть лучше, и стремиться собирать лучших возле себя. Посмотрите на некоторых известных людей, в них была эта «ущербность», но именно она позволяла добиться им высоких результатов в их деятельности, и стать лучшим и заставляла вас двигаться.
Кстати, некоторые помогают беднякам в метро или на улице, и они тоже от этого кайфуют. Делает ли это человека добрее — наверное да. А в мозгу тем временем эндорфинчики и канабиойды выделяются, и от доминирования и от «принятия слабости», и от помощи близкого, и от растерзания его в клочья. Уж слишком мы биологичны, приспособленцы.
Поэтому все говнокод кроме кода, хотя любой код и есть говнокод.
Ну а если хотите снова подкрепить свое новое Я, можно пойти церковными методами, в вас сидит глубоко грех гордыни, и можно поработать в этом направлении (все советы уже даны). У меня например, есть заглушка: каждый раз вступая в очередной спор, вы просто показываете что зависите от чужего мнения. Оно вам надо… Есть другой мир с другими эмоциями, и вы это поняли, он тоже приятный.
Не бегайте по кругу, осознайте себя и свое я, и что для вас действительно важно, может это делать лучший код ревью, агрессия, а может теплое общение с женой и воспитание дочери, ламповое настроение.
Кстати, маленький нескромный вопрос, есть ли у вас какие либо заболевания, связанные с жкт, поджелудочной, печенью?
Сказки древних арабских кочевников являются очень удобным инструментом для лицемерного прикрывания пятой точки. Их можно подогнать под что угодно. Чуть что ― сразу находят отмазку. Все эти «праведники» проповедуют простым людям какие-то догмы, при этом сами, у кого есть деньги, уходят в отрыв и развратничают на полную катушку. Если ты богат, то весь разврат с женщинами, алкоголем и наркотиками можно скрыть или откупиться. А если беден, то попадаешь по полной программе. Забивают камнями, отрезают голову и т.д. Тотальное лицемерие. — Амиран Сардаров.
Вообще, я считаю что «быть говнюком» — это предназначение. Должен особым структурным образом быть организован головной мозг (железо), и по верх него положено ПО (процесс обучения нейронной сети), так, что человек стал таким. Где-то это хорошо (особенно когда действия выгодны обществу (альтруизм, дружелюбность, доброта и простота)), где-то плохо, особенно когда обществу поведение не выгодно (эгоизм, доминантность, агрессия, хитрость).
П.С. Не нужно путать лицемерие и самоконтроль. Наличие агрессивных посылов неоспоримо, это не повод идти у них на поводу.
Другое дело, что самые отбитые представители, как и гении кстати, с помощью тестов , 2, или других методов отбора, помечаются как угроза обществу, и отправляется подальше от обывателей.
Просто есть откровенная жесть с убийствами, и это плохо, а есть например Пушкин, который прекрасно знал что
Чем меньше женщину мы любим, Тем легче нравимся мы, но при этом не боялся очередной даме разбить сердце, что по отношению к ней он является гавнюком.
Общество на протяжении всей истории изгоняло и изолировало психопатов и агрессоров, этот вектор будет сохраняться.
Спору нет, глядя на тот самый первый пулл-реквест сейчас, я понимаю, что с точки зрения дизайна кода, он был не очень. И за год на этом проекте я сильно прокачался в этом плане, за что я этим людям благодарен. Но этот год стоил мне тонну нервных клеток и, наверное, небольшой психологической травмы.
Сейчас я на новом проекте и новой команде. У нас все просто идеально с точки зрения морального микроклимата.Я делаю много ревью, и стараюсь максимально мягко относится к человеку, чей код я оцениваю. Придираюсь только к совсем уж явным косякам типа копи-пасты, нейминга, читаемости, но стараюсь давать свободу в реализации, если код решает проблему.
Недавно даже похвалил в одном пулл-реквесте человека за написанный код, так он в Слаке аж переспросил на всякий, не стеб ли это :D
Попробую перенести эту практику с похвалой на постоянную основу и буду нести добро в массы. А то, мне кажется, люди привыкли слушать только замечания.
который тех-лид ревертнул, когда вернулся из отпуска со словами «НИПАНЯТНА».
Вот согласна, ничего не бесит так, как такое откровенно скотское отношение. Если есть замечания, опиши конкретно или хотя бы в общих словах, что именно не работает. Сам же в итоге не способствуешь процессу разработки, если заставишь других членов команды тратить время на разгадывание, что же ты имел в виду, и пустишь по ложному следу.
Нет, мы бы поняли, если бы автор сказал что он довел до самоубийства трех сотрудников и еще пятерых до нервного срыва, но блин, если его жертвы спокойно идут после работы к детям даже не думая качаться — вопрос скорее стоит ставить об эффективности автора, а не о об отсутствии у него доброты.
> export const isAgoodDeveloper = () => {
Что за инвалид это написал? Попробуйте прочитать: экспортируется константа isAgoodDeveloper, которая равна отображению пустых скобок на блок кода. Ну маразм же. Инвалиды, если вы хотите объявить функцию, так возьмите слово function и не запутывайте читателя:
export function isAGoodDeveloper() {
Смотрите, как просто и понятно: экспортируется функция без аргументов.40 лет такой синтаксис всех устраивал, а тут вдруг появились фронтендщики, которые хотят быть не как все.
Эти идиоты увидели где-то в статье, что «в 2018» (если в заголовке цифра меньше 2018, они не будут читать статью) модно использовать слова const и стрелочку и начинают совать ее куда не попадя. Они ведь думать даже не пытаются. Запомните, инвалиды, слово const было придумано для констант, а стрелочка для использования с функциями вроде map:
var names = users.map(u => u.getName());
Также, после первых двух абзацев, понял, что перед нами графоман, и дальше читать не стал.
isAGoodDeveloper()
Добавлю также, что артикли в названиях — плохой стиль, так как а) замусоривает само имя б) не несет никакого смысла.
Вообще, стоит очень строго придерживаться naming'а, и если бы функция, предназначенная для кидания некоего стандартного exception'а (на пример, в Java), называлась бы throwAwayAnException, у меня был бы точно вопрос к качеству именования в таком PR.
Меня бесило, что пока я сидел до ночи, изучая F#, моя дочь начала называть папами всех мужиков вокруг. А этот чувак вместо того, чтобы качаться, спокойно уходил домой к детям. И мне хотелось его наказать.
Сидеть до ночи изучая F# — это совсем не то же самое, что сидеть до ночи разгребая баги в коде того товарища. Качество вашего времени будет разным. Изучать F# — круто, а фиксить баги — это хрень. Люди вроде вас, автор, как раз в итоге и фиксят баги, и анализируют причины их возникновения, и исходя из этих годами накопленных знаний дают толковый фидбэк на код ревью. Это совершенно нормально — уважать себя, свои знания и опыт, ценить своё время и стараться избегать предсказуемых граблей.
Как-то коллега был очень удивлен тем, что наш новый сотрудник не читает днями и ночами на пролёт нужные книги. Сам коллега тратит на это уйму своего времени и это классно (по крайней мере, может, для него). Но не все готовы заниматься работой после работы.
Даже не так.
У каждого своя мера, сколько надо тратить времени да обучение и жизнь.
И если один тратит всё свободное время на обучение, это не значит, что другой должен делать так же.
Я не говорю, что не нужно учиться вообще в свободное время. Я про то, что мир разнообразный. Люди по-разному живут и обучаются.
Расширять кругозор хорошо, но это можно делать по-разному (иногда и художественная литература помогает, знаете ли).
В равной степени тут может автор завышать планку требований (один стахановец завысил планку, а потом остальным норму поднимают), так и разработчик, код которого проверяют, может планку занижать.
Никто один не умнее кого-либо одного. У них разные ценности и разный способ мышления. Перекрёстный код-ревью позволяет обмениваться не только коду, но и ценностями и мыслями.
А лид выступает как фасилитатор процесса ревью.
Это полезно. Снимает с лида груз ответственности за боль. Даёт каждому в команде возможность стать лучше.
Никто один не умнее кого-либо одного
Это как если 10 человек будут играть в шахматы против чемпиона мира (по шахматам) путём голосования за каждый ход — что их 10, что 100, что 2 — разницы нет, точно сольют.
Бывал как-то на одном интервью в начальника отдела разработки одного из банков. Было ему лет 25+ и по внешности (подкаченный или даже перекаченный ботан) и по манере общения было похоже, что он постоянно самоутверждается. Спрашивал очень странные для меня вопросы — игрался ли я с новомодными фреймворками и прочие вопросы, которые не соотносились с решением задач на довольно древней платформе, которая стояла в этом банке. В общем, естественно, это был первый и последний раз, когда я видел этого человека
Мне кажется автор и тот, кто, как ему кажется, говнокодит, просто люди решающие разные задачи. Цыплят по осени считают. И, как показывает мой опыт, срывают сроки именно такие вот заносчивые молодые люди, которые пишут код ради кода и не понимают смысл программирования как такового
Хотя, возможно, я придираюсь, и в других странах так же.
Был случай — дошло до абсурдного, заказчик сказал, дословно «Это требование не написано, но оно само собой разумеется» и это то при 5-6 уровнях различной КД, и производственном цикле 1-2 года.
Только вот даже в таких случаях токсичность недопустима, т.к. она не несет абсолютно ничего полезного.
Код плохой — скажите где. Зачем ругаться или самоутверждаться или расстраиваться и т.д.?
Берегите нервные клетки и себя и других — вот и вся мораль.
Потом осознал.
Я по профессии учитель. То, что в разработке называется code review, у нас называется «формирующее оценивание». У него есть ясные правила: оно должно начинаться с позитива и в целом должно быть мотивирующим. Оно должно указывать и на успешные места и на недостатки, то есть должно быть сбалансированным. Оно должно сравнивать с прошлым уровнем и говорить, куда двигаться, то есть должно быть развивающим. Если цель code review- не разнести в пух и прах, а сделать так, чтобы на следующий раз все было лучше, то надо следовать этим очевидным правилам. А то, что у нас все так плохо, начинается со школьной скамьи, так как вся система образования нацелена на выявление ошибок и наказание за них. Мы ведём себя так, как с нами обращались учителя в школе.
Если в коде что-то неправильно, напиши почему и предложи лучшее решение.
Если ревью вызывает бурные эмоции то стоит отложить его не на долго и вернуться к нему позже, чтобы проанализировать — действительно ли все так плохо с кодом или просто появляются придирки из-за плохого настроения, усталости, привычки решать задачу иным способом.
Ничего страшного, если код плохой, я и сам могу его поправить.
А зарплату этому человеку за что тогда платить, если у него код с замечанием на каждые несколько строк, который надо переписывать? И ведь это не первое ревью? То есть человеку уже не раз на ошибки указали, а он их повторяет. Человек плюет вам в лицо, а мы за него бесплатно делаете его работу.
Мне хорошо, а мое левое полушарие все за меня объяснит, как пиарщик за накосячившего политика.
Прям смак
Спасибо.
И вот оказывается, что движет людьми, которые тривиальные задачи на 15 не принимают часов по 5 из-за количества пробелов и положения скобочек. :facepalm:
Вообще-то я писала, что ревью джунского кода провожу я. Значит, квалификация, опыт и познание у меня есть. Спасибо.
Но если чувство вины терзает, то не лучше ли поговорить с этим человеком напрямую? Узнать собирается ли он вообще исправлять свое положение и совершенствовать свои навыки, и если ответ положительный, то посоветовать литературу, курсы, форумы, разобрать с ним подробно несколько грубейших ошибок. Или может просто приставить к нему кого-нибудь в качестве наставника, раз уж есть проблемный новичок.
Напомнило эпизод из Футурамы, начальник Лилы напоминает ей:
— You gotta do what you gotta do, whether you like it or not. Which I do, very much.
Такое поведение прибавит вам работы за другого и отберет у человека «экспу»
Лучше постараться объяснить в чем проблема, лучше голосом. Когда говорим — эмпатическую связь установить проще.
И то, как автор преподносил свои код-ревью и зачем он делал такие разносы, никак не соответствует тому, что код-ревью должно давать команде/продукту.
Убираем токсичность из ревью, убираем личностные негативные отношения, делаем так, что далеко не все комментарии блокируют. Да что говорить, в интернетах гора статей с советами. По этому поводу делал для команды короткое руководство в конфлуенсе и его обсуждение на внутреннем митапе. Обучение код-ревью гораздо полезнее, чем игнор код-ревью, а автор как раз стал игнорить.
(я ни разу не разработчик, но где-то рядом, и вижу, к чему такой workflow приводит)
Каждый день занимаюсь ревью кода команды примерно из 10 человек.
Понимаю, что я не слишком вежливый человек, и мои комментарии могут кого-то обидеть.
Но видите ли в чём проблема…
У меня просто нет ресурса на то, чтобы переписать этот гавнокод. Ни у меня, ни у других сениоров.
И я не могу допустить появление этого кода, потому что часто проще написать заново, чем править лапшу.
Поэтому либо я выдаю джуниору какой-то небольшой отдельный проект, стабильность которого меня не слишком волнует, и я могу закрыть на него глаза (такое бывает редко) — либо мне приходится отфутболивать пулл рек столько раз, сколько нужно, чтобы код стал хотя бы приемлемым.
Да, я при этом не хочу погрузить в печаль и депрессию бедного джуна. Так что взял за практику периодически брать своё кресло, откатывать его к только что отревьювленному, и сидеть минимум полчаса, поясняя подробности ошибок и вместе их исправляя. По моему опыту — вот такое личное общение и помощь отлично сглаживает эффект от сухих комментариев к пулл реку. Но такая акция должна проходить не слишком часто — максимум раз в несколько дней. Иначе — опять же время, да и человек на шею сядет.
Ну и ещё — помогают CI процессы, которые не позволяют пропустить совсем плохой код, и проверяют линтинг, тесты и покрытие. На CI никто не обижается, как бы сухо он не комментировал пулл рек.
Учителя ин. языка страдают токсичностью не меньше. Эти вообще могут покалечить человека так что он потом «немым» станет.
В статье описан интересный феномен, который развился в последний десяток лет. Но прошу заметить, в статье много раз упоминается слово «разработчик», в контексте разработчик-программист, хотя разработчики бывают разные — электронщики, механики, дизайнеры и т.д и думаете у них не бывает design review? Да бывают, конечно. Только это обычно оффлайн совещание в кругу серьезных людей, к которому разработчики и ревьюеры готовится неделями и там вот такой номер не пройдет.
Быть может все в этой самой кнопочке Submit Review? Т.е вы сидите в своем комфортном кабинете, скрываясь за ником в скайпе, зная, что никто не сможет ответить на вашу критику, не скажет в лицо «ну че ты прицепился?» или еще хуже «а че ты в прошлый раз к Васе не цеплялся, а в этот раз ко мне придрался?» и это на глазах у всех присутствующих — коллег и даже менеджмента. А кнопочку нажать — это ведь очень просто, легко, часто не надо обьяснять, не заботясь, что тебя поймут правильно или нет.
Не напоминает поведение водителей престижных металлических шкарлупок, со своим суперзавышенным эго? Вот я думаю, это самое то — кнопка, легкость и безнаказанность развращает.
1. Жизнь есть страдание.
2. Существует причина страданий.
3. Страдание может быть прекращено.
4. Существует путь, ведущий к прекращению страданий.
Главное помнить, что излишняя толерантность к быдлокодерам вещь опасная — сегодня ты делаешь им поблажки, а завтра весь мир пользуется браузером, в котором одна страница жрет по 3 ГБ памяти. Автора прессовали и он стал хорошим кодером.
Со взрослыми, конечно, немного проще — они реже ведут себя как капризные обидчивые дети, реже реагируют эмоционально. Но все равно, унижение и негативный настрой влияют. И те, у кого порог чувствительности низкий, могут не выдержать такого в долгосрочной перспективе.
В общем, разумная сдержанность и вежливость, как правило, приносят большие плоды. Нам ведь нужен результат, в конце концов.
К разрабу же, на которого по большему плевать, лучшим случае можно испытывать суррогат любви — жалость.
Дело даже не в том, чтобы не ранить чувства и стремления ребенка. Взрослые, ввиду своего опыта и ощущения «да я все это 100 лет уже знаю», часто мыслят узко и шаблонно. Поэтому взрослым часто сложно понять и услышать что-то, что выходит за рамки их мышления.
Так же не стоит уберегать их от ошибок. Я очень люблю поговорки. Пожалуй, кроме одной: «умный учится на чужих ошибках, дурак — на своих» и все ее разнообразия (про мудрого, про дурака который вообще не учится и т.д.). Я просто не верю, что на чужих ошибках вообще возможно чему-либо научиться. Более того, большинство людей совершенно неспособны учиться даже на своих ошибках. В добавок, кто читал Rework, там очень хорошая есть мысль про обучение на ошибках. Что ценность такого опыта сильно преувеличена. Т.к. человек в лучшем случае поймет как не надо делать, но все равно не будет знать как именно делать надо. Но конкретно для детей, без своих маленьких ошибок — ни как.
В целом, дети — это отдельная, другая тема.
И если на SO повторяющиеся/тупые вопросы закрывают модераторы, то на том же ЛОРе такого нет. Ну и отвечать на 100500-ый «как взломать асечку с Kali Linux» вежливо всех задалбывает, это очевидно.
Уж если доверили проверку кода, да ещё и платят за это — работай. Там не важно какие чувства появляются к себе или к автору кода — платят за найденный баг.
У палача тоже работа не сахар, но если он будет переживать за каждую отрубленную голову — то скоро наймут нового палача.
В подробности сейчас вдаваться не хочу, но многое мне в людях и ситуациях стало понятнее :-)
Спасибо еще раз!
Потому что мой мотив на ревью — самоутверждение.
Печально. Надеюсь, процент людей с такой мотивацией в индустрии не очень велик.
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете. Говорите мне про добрые цели, обучение новичков и благородство — я-то знаю, что вы просто от себя тащитесь в глубине души.
Не проецируйте на других свои комплексы. В индустрии много адекватных людей, которые занимаются код-ревью исключительно потому, что верят, что это благо для проекта и коллег.
С одной стороны — я же научился разработке из-за того, что за мой счет самоутверждались. Во мне будили злобу, и эта злоба заставляла меня становиться лучше.
Вот здесь и начинается искажение мышления. Не злоба двигает прогресс (рождая при этом тех самых неуверенных в себе эгоманьяков), а понимание, что не так, как сделать так и куда двигаться. Постоянный самомониторинг. Ощущение своего прогресса.
И все же мне кажется, что доброжелательное отношение при ревью кода – это тоже навык, даже искусство. Это иная картина мира, способность увидеть потенциал там, где его пока немного, наметить путь, помочь советом. Найти баланс между критикой и советом в зависимости от задачи и человека. Конечно, это больше про менторство, но если хочешь не просто исправить проект, а сформировать крепкую команду надолго – без этого никуда.
Культура взаимопомощи, ее не построить за один день, просто ругая себя за «кайф от чувства собственного превосходства». Так что автор поста еще в начале пути.
Так мы взяли одного нашего заносчивого сисадмина-«знатока военной науки» с собой на страйкбол. Мало того, что он пересмотрел свои теоретические взгляды на ведение боевых действий и тактику, заодно стал по человечески общаться с коллегами. Просто потому, что не выполнил приказ (да он был скучным и не позволял продемонстрировать свои теоретические познания в тактике) и привёл команду к полному провалу.
Я бы откоментил явные баги, а потом в личном разговоре указал на 5-10 мест, которые можно было бы сделать лучше. В этом был бы смысл.
А мне нравится, когда мой код критически оценивают за каждую мелочь — это очень сильно помогает развиваться и многие недочёты исправлять в коде и вообще, на будущее запоминать. Конечно, это не совсем корректно, когда переходят на личности при этом, но с таким пока не сталкивался — здоровая критика, она всегда мною приветствуется и сам стараюсь платить той же монетой. Критика должна быть направлена на улучшение кода и разработчика, а не на его унижение. Самоутверждение за чужой счёт — удел закомплексованных, слабохарактерных и неуверенных в себе людей.
ithappens.me/story/10297
Она у меня в закладках, иногда перечитываю, чтобы не забывать.
Я всегда считал, что code review — это такой метод передачи знаний в реальном контексте. Человек пишет глупость, а ему в ответ говорят «надо вот так и вот так делать» — и человек теперь знает, как надо.
Иногда это основы языка (в этом месте надо использовать словари, а не списки, потому что у словарей асимптоматическое время доступа o(1) и они более семантичны), иногда это бездны business knowledge: «поменяй эту красоту на вот такой вот ужас. Мы пробовали красоту, но она ломает кейсы такие-то, такие-то и такие-то», или поднятие культуры: «обязательно используй осмысленные имена для переменных, например, cnt лучше переименовать в years или years_cnt, потому что любому понятно, что это счётчик, но редко кто догадается, что это годы».
code review без совета как исправить — говно, а не review.
Наш менталитет зациклился на культе силы и превосходства.
Мне всегда казалось, что американцы гораздо сильнее зациклены на этом.
Иногда 10 лет опыта с конкретной технологией могут мешать принимать что-то новое в свой мир. Все мы стареем и мозг не тот, что раньше.
Если мы научились пользоваться молотком — то все вокруг кажется гвоздем.
К автору статьи не относится, но, в целом, встречается не редко.
Это доказанный факт шизофрении. Раньше это стабильно считалось смертным грехом свершив который в Ад уже не попасть.
«Альфа» — это у собак тип характера, те кто первый готов бежать в неизвестность. Скорее такая «гамма» сидит и распугивает нанимающихся на работу «альф»
«Тролль» — это когда человек гадит ради конфликта, испытывает счастье создав конфликт. В современном обществе, тролли вылезли из болот. Грамотный руководитель увольняет тролля если заведётся.
Есть еще и экономика, в ней говорится, что главное не «совершенный код», а заменяемость исполнителей, простота и понятность для новых сотрудников. Большое количество подготовленных кадров которые могут выполнить эту работу.
Если Вашу работу можете выполнить только Вы!? Вы или «Арнольд Шварц из фильмов» или надо бросать Ваше направление и делать так, что бы исполнителей такой работы было завались!
У меня была позиция, что геи — это плохо. Я не думал об этом особо, просто когда-то очень давно батя сказал, что плохо, и я запомнил. Однажды я выпивал с толпой либералов, и всплыла эта тема. Я сразу же ознакомил их со своей позицией, и они такие «нет Фил, ты не прав». Ну, начали спорить. Никогда не думал об этом всерьез, у меня и аргументов толком не было. Да и в целом, мне совершенно насрать, хорошо геи, или плохо. Но я не мог себе позволить перестать спорить. Моим главным мотивом было — победить и сохранить лицо. Я не знаю зачем.
Такое бывает, когда человек считает убеждения частью своего Я — он воспринимает противоположные убеждения как нападки на Я и отбивается по максимум, даже если и осознает что аргументов для поддержки его убеждений у него нет
Если я вижу существенные недостатки в работе разработчика, это означает, что теперь мне нужно потратить время на их фиксацию, на разъяснения, потом мне придётся потратить время на переключение обратно в свою работу, а ему придётся потратить время на исправление проблем, на преодоление негатива и так далее, и тому подобное.
И всё это время — это чистые издержки. Поэтому я вообще не понимаю, как в этой ситуации можно находить повод для самоутверждения. Если в твоей команде люди делают говно, это значит что ты сам плохо работаешь.
Если технические скилы это то, что человек сам учит, и их нехватака по сути 100% его вина. То особенности характера — это во много врожденное и навязанное внешней средой.
Это как людей с метеоризмом увольнять немедленно, и отзывы еще давать.
Как по мне, так стоит пытаться решить проблему в любом случае сначала словами. А плохие отзывы давать, только из-за реальных и осознанных косяков, например вранья, систематических прогулов, воровства и т.д.
Вы отталкиваетесь от вопроса «кто виноват». Извините, никому не интересно, кто его обижал в детстве, что он вырос таким чудаком. Компания и начальник смотрят не в прошлое, а в будущее: каким будет влияние человека на работу команды.
И да, конечно, любую проблему надо решать словами. Сначала. Если же, например, после двух серьёзных разговоров человек не смог поменять свой «стиль», то увы, жаль, мы не смогли помочь этому человеку стать нормальным коллегой (и справки вовремя не навели).
en.m.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition
Есть куча статей, практик и философий о том как делать код-ревью. Перед тем как начать бычить Вы удосужились прочитать и понять хотя бы ОДИН? Как тогда человек может быть на руководящей должности с настолько низкими социальными навыками и скудным психологическим познанием, закомплексованный и по-глупому эгоцентричный? Вроде все кричат про софт-скиллз, устраивают асессменты, а на деле «я начинаю думать как сделал бы я». Понятно, все должны сидеть и угадывать как сделал бы один человек.
Имхо, корень зла — автора вообще не должны были принимать на его работу и позволять ему оказывать такое влияние на других сотрудников. Сейчас он просто отказался от замечаний, что тоже плохо. Проблема не решена, компания страдает, автор в унынии, люди мучаются.
одновременно бывает, что считают код-ревью — «слежкой»
wtf?)))) я «работал» в шаражке, где вообще никакого ревью не было и любой мог коммитить прямо в мастер. Это ж аццкий ад, так вообще жить нельзя
Это все средства кооперации, если нет кооперации — то и средства бесполезны. А работа с ними превращается в фарс.
Относительно слежки — я уже выше писал, по сути кодревью — это ревью, а ревью это ревизия, а ревизия это «к нам едет ревизор». А зачем у нас ездят ревизоры? Что-бы кого-то премии лишить. Соотв человек ощущает угрозы, что если его работу вдруг начали проверять, то за этим что-то последует. И естественно что ни чего хорошего не последует, в коде нельзя найти ни чего хорошего, если код идеальный то ревью просто ни чего не даст и будем там, где были. Если код не идеальные — будет куча замечаний, которые потом попадут начальнику, который снимет премию или не даст повышение.
Ведь работа это не только писать код и выпускать продукты, это еще получать зарплату и тратить ее на свою жизнь. Автор поста как раз и пишет, что это стандартное обоснование своего желания унижать и контролировать и самоутвреждаться, со словами «я всего лишь хочу качественный код и продукт». А человек просто хочет спокойно делать свою работу и получать зарплату, и по меньше душевных и волевых сил тратить на работу, а по больше на семью скажем.
А истина где-то по середине.
Если вы будете сами писать свой маленький проект, вы будете делать кучу веток, создавать пуллреквесты и постоянно их мержить?
ДА
по сути кодревью — это ревью, а ревью это ревизия, а ревизия это «к нам едет ревизор». А зачем у нас ездят ревизоры? Что-бы кого-то премии лишить.
Витьеватый поток предрассудков.
ДА
Значить вы кайфуете от процесса и формализма. Это не абсолютное достоинство, и не стоит думать что все кто не такие как вы — хуже вас. Это просто ваш личный таракан, и пока вас не наделили властью натравливать этого таракана на людей — все хорошо.
Есть такая мудрость, что нужно как можно дальше отойти от дома, чтобы вернуться потом в него и ценить то, что до этого не могло быть замечено. Всем противникам формализма и всего такого очень советую поработать в хаосе, где 40 человек херачат в мастер, нет линтеров, нет тестов, слово «архитектура» вызывает смех и люди просто пишут код, так шоб работало. А то ощущение, что вы как дети «нихачу есть кашу убигу», «нихачу спать мама гонит заставляет». А потом однажды эти дети начинают очень ценить то, что они могут это делать, и радоваться таким вещам. В студенчестве например
вводить новых людей в проект,
где 40 человек херачат в мастер
люди
Если вы будете сами писать свой маленький проект
сами
маленький проект
Это все средства кооперации, если нет кооперации — то и средства бесполезны. А работа с ними превращается в фарс.
—
«нихачу спать мама гонит заставляет»
Детей кладут спать не ради детей, а ради родителей, которые хотят отдохнуть от детей. А дети (мои например) хотят спать весь день в саду (т.к. там скучно), и не спать всю ночь дома (т.к. есть папа, и он не спит ночью, и много игрушек и мультики, и вообще дома классно). И я их кладу спать исключительно потому, что мне нужно время без них — для работы скажем или времени с женой. Ни каких логичных и выгодных с позиции ребенка аргументов ложиться спать нет. Если дать ребенку спать как он хочет, т.е. уставать до предела. То он то-же начнет сам ценить возможность поспать. Мои в три года, на каникулах от сада, спят как им вздумается. Ложатся в час ночи, встают в 10, не спят днем. При чем сами выключат свет, идут и ложатся спать. И попробуй им помешать :)
«нихачу есть кашу убигу»
Это значит что ребенка кормят чем-то вкуснее каши. У него переизбыток калорий из вкусной еды. Проголодается — поест. Ни чего не логичного в отказе от не вкусной еды, когда ты не голоден — нет. В каше нет ни чего полезного. Единственный аргумент за поедание каш — забить желудок медленными углеводами, что-бы не забить его быстрыми углеводами и транс жирами. Так-что все вопросы к взрослым. Дети полностью рациональны в этом вопросе.
Другое дело, когда идет ревью senior-senior. Вот мне интересно, как автор расправлялся с этим? Для меня здесь вылазят куда более серьезные проблемы как личные, так и профессиональные. Зачастую (опять же из моего опыта) в таком случае каждый пытается пропихнуть именно свой стиль, как бы он это сделал — «А вот я абстракцию бы по-другому сделал», «Я бы заюзал то-то и то-то» и тд. Интересно то, что проблема решена и код рабочий, но появляются вопросы «А вот если через N лет бизнес скажет нам сделать это, данный код уже не будет гибким и нам надо переписывать» и тд. Преждевременная оптимизация, пушинг своих личных предпочтений и все остальное делает ревью иногда невыносимым.
Конечно, бывает так, что ты «совпадаешь» с видением другого сеньора и тогда ревью проходит идеально, строится на вопросах, а не на пушинге, например «А что если бы мы заюзали вот это, давай подумаем вместе, какие плюсы-минусы можем получить». Можно порисовать на доске и за 15-20 минут найти классное решение, которое удовлетворить обоих.
А как у вас проходят ревью между сеньорами? Часто ли сталкиваются лбами?
А можно взгляд с другой стороны? Один из моих учителей рассказывал "однажды, еще в советские годы, я читал доклад на конференции; и, когда я закончил, в зале на 200 человек наступила гробовая тишина, а потом все разошлись. Следующие 5 лет мою работу не цитировал только ленивый, но это было худшее выступление в моей жизни".
Ревьювер, на время ревью, — это не начальник, это коллега. Даже если вы джун а он СТО компании. То, что он ревьювит ваш код ставит вас на одну полку. Поэтому когда я получаю много негативного фидбека по поводу своего PR, я мысленно квалифицирую ситуацию как один из двух вариантов.
- придирки в духе "офромить это в стратегию, использовать такой-то паттерн, разве вы не читали великого ХХХ, это не канонично" и критика в основном не конструктивная, на мотив "так положено". Скорее всего, ревьювер — самодовольный индюк. Допилите ревью как он хочет, чтобы отвязался, и больше ему не подавайтесь с серьезными изменениями. Со временем он или сам сольется с процесса заколебавшись ревьювить однострочники, или будет индючить интернов до пенсии. Пофигу, главное чтобы был занят и не мешал. Инженеры из них как правило никакие.
- замечания конструктивные и действительно по делу, чаще всего оформлены в виде вопросов или контр-примеров. Это золото профессии. Получить по рогам от мэтра приносит больше пользы чем семестр в МИТ. Наоборот когда получаешь +2 с пол оборота, это значит что либо ревьювер не особо разбирается в теме, либо ты занимаешься фигней ему (а может и всем вообще) не интересной, либо вся практика в компании вообще профанация. Повод задуматься.
Так что если вы ревьювер — не стесняйтесь завернуть PR 10 раз, вы таки помогаете человеку. Просто помните, что пока PR открыт вы с ним равны. Вы не мастер йода и он не ваш юный падаван. Вы его не учите. Вы вместе думаете как улучшить его идею. Больше задавайте вопросов, меньше комментируйте, больше диалога, меньше понтов. Если переписываете PR код — спросите согласен ли оппонент. В общем не будьте задницей и все будет отлично!
Вот автор говорит, что это он в работе такой чудак на букву М, а в жизни нормальный, но так не бывает, мы такие, какие есть, везде и всегда. Автор же и признается, что и вне работы спорил ради спора с друзьями, ради самоутверждения. Так что это уже черта характера. Но то, что признал проблему — уже хорошо. «Не суди, да не судим будешь», «Кто сам без греха, пусть первый бросит камень», «Будь проще, и люди к тебе потянутся» — это проверенные рецепты, пользуйся.
Слабакам нет места в боксе. Неспособным выносить критику нет места в IT.
Но если вы вдруг решили стать добрым, то это не значит, что нужно игнорировать «Код не масштабируется, не тестируется, набит багами под завязку. „
Просто если таких ревью много, нужно внедрять в SDLC автоматическое сканирование кода инструментами, чтобы хотя бы первоначальную проверку делал не человек.
Нужно описывать best practice, пояснять программистам требования к коду, приводить примеры, проводить тренинги.
Если сложно нанять лучших из лучших, развивайте своих.
Большой вопрос не раскрытый в статье — что за ремарки это были, что их было на один PR настолько много, что прям люди ломались. Небось ревьювер делал работу типичного статического анализатора, аля «здесь четыре пробела вместо двух», или «переставь скобки — так на полмилисекунды быстрее, я в микробенчмарках видел». То есть статический анализатор приделать было влом, тесты писать было влом, объективных критериев оценки солюшена — ноль, и видите ли ревьюеры распоясались — самоутверждаются на новичках. Решение — пусть не самоутверждаются, все логично. Ага. То что львиную часть их самоутверждения можно пофиксить установив статические анализаторы, да так чтоб они билд фейлили, не допуская на ревью и не оскорбляя чьих то чуств — не, тогда синьорам самоутверждаться негде будет. Тогда уже придется докапываться по архитектуре, дизайну, а это уже сложнее, там сотни ремарок не найдешь.
И у новичков типа яиц по определению нет — ответить по существу ремарки. Отстоять свой солюшен, отвечая на ремарку объективной контраргументацией. А еще июнь прям ранимая душа, весь изведется же, в то время как фикс ремарки — одна строчка. Че за тупые комплексы? Если согласен с ремаркой — фиксь и мотай на ус экспириенс от знающего спеца. Не согласен — пиши ответ, либо спусти на тормозах и пофиксь как просят, если спор о мелочах. Че комплексовать то?
Отдельно хочется отметить того персонажа, который уволил человека из-за синьорских ремарок на ревью в начале статьи (нелепость). Хочется надеяться что реальная причина все же была в некомпетентности, а не в ремарках, а то как то совсем грустно становится.
Если согласен с ремаркой — фиксь и мотай на ус экспириенс от знающего спеца. Не согласен — пиши ответ, либо спусти на тормозах и пофиксь как просят, если спор о мелочах. Че комплексовать то?
До меня это только в армии дошло. А до многих — не доходит в принципе.
Но какого хрена я как ревьюер должен испытывать чувство вины за то что я эти ремарки даю? Какого хрена я должен думать о том что своей ремаркой я кого то обижу? Не матом же я их пишу, в конце то концов, и на ревью не перехожу на личности?
За что здесь автор статьи извиняется, я понять не могу? За кучу ремарок? За то что ремарки были не по существу? За то что самоутверждаясь, он матом в комментах писал и оскорблял оунеров PR?
За что автор статьи чуствовал себя виноватым, когда по молодости ему старшие кучу ремарок на ревью выкатывали? Что такого то — люди его видите ли носом в код тыкали. Сделал выводы и пошел дальше — че за сопли то?
Честнее было бы озаглавить статью «я — токсичный закомплексованный подонок и самоутверждаюсь на безхребетных июнях, и больше так не хочу» — один пень весь пост об этом и был. Нефиг сюда ревью и индустрию в РФ приплетать.
Оказалось, вместо того, чтобы становиться по-настоящему крутым, достаточно убедить всех, что ты крутой.
Не хочу никого обидеть, но автор это только недавно понял?
Такой пример есть. Это phpclub.ru. 38 тысяч тем с вопросами по PHP, 372 тысячи сообщений. Кто же самый активный участник форума? phpclub.ru/talk/members — Фанат. Почти 40 тысяч сообщений. Чуть больше, чем у других 4 самых активных пользователей вместе взятых. Дата регистрации: 29 июл 2003.
Так что же это за сообщения? Загуглите сами: www.google.com/search?q=site%3Aphpclub.ru+%22%D1%84%D0%B0%D0%BD%D0%B0%D1%82+oncle+terrible%22 Далее цитаты из 10 подряд идущих результатов поиска:
> в коде нет такого понятия, как глобальная переменная. умойся.
> господи, откуда ты выкопал это уродство? кто тебя учил пользоваться этой функцией? других для работы с бд не знаешь?
> phpinfo(); правда, если ты программист по типу «скачать и установить», то тебе это не поможет.
> ну, аффтар-то понятно — ему что SSI, что HTML, что PHP — всё одно тёмный лес.
> Почему ты считаешь, что в твоём нежелании пошевелить мозгами и рещшить задачу по аналогии, виноват я?
> посмотри в любой статье для чайников, как работать с БД. я понятно объясняю?
> лучше вообще не флудить бессмысленно, как это делаешь ты
Вот такой пример токсичной среды.
Я думаю что это связано с мотивацией,. На StackOverflow люди всегда более отзывчивые, причина тому — HR из крутых компаний часто там высматривают добычу, многие это понимают и стараются показать себя умным, дав хороший и понятный ответ. Сами люди понимают, если ты открытый, если медийный, выше вероятность что тебя заметят.
По нашим же форумам, наши HR не гуляют, а зарубежные подавно. На работу часто устраиваются через знакомых. Никому ты не нужен. Потому у людей нет никакой мотивации, кроме как самоудовлетворения собственного ЧСВ.
Но:
Почти 40 тысяч сообщений. Чуть больше, чем у других 4 самых активных пользователей вместе взятых.Это значит, что с данным представителем пользователь имеет шансы встретиться чуть большие, чем с четырьмя другими самыми активными. Если предположить, что других комментаторов на форуме нет (всего пятеро), и помянутые четыре всегда адекватны, то число токсичных комментариев будет чуть меньше числа адекватных.
Вот вам и единица, ага.
Почти 40 тысяч сообщений. Чуть больше, чем у других 4 самых активных пользователей вместе взятых.
Это значит, что данный представитель — флудераст и его нужно сразу и решительно игнорировать.
А поскольку он у них в команде — на форуме нормальным людям тоже делать нечего.
А вообще, как-то раз мне тимлид сказал: на форумах задают вопрос только тогда, когда ответ не нужен, когда ответ нужен — его гуглят, и находят быстрее типичной времени реакции форума.
когда ответ нужен — его гуглят, и находят быстрееВ большинстве случаев — да. Наверное даже, в подавляющем большинстве случаев.
Дальше начинаются нюансы: которые, как ни странно, в первую очередь актуальны именно для новичков/малознающих. Во-первых, ответ может таки не гуглиться. Вплоть до того, что ищущий может попросту не знать, как правильно обозначить проблему.
В-вторых, найденный в гугле ответ малознающему просто не всегда понятен. Гуглил я как-то недавно какой-то очень базовый вопрос. Выгуглил ответ «используйте рефлексию». Да я уже два дня тут рефлексирую, а толку нет, вы не обзывайтесь, а пальцем покажите!..
И в третьих, как это ни странно, ответы в форумах тоже гуглятся. И когда гуглишь вопрос, а тебе высыпается пригоршня ответов в стиле «используй гугл, дубина», ситуация начинает напоминать какую-то нездоровую рекурсию.
И специалисты стоят перед выбором — либо работать за себя и за того дядю (да, унизительно, но можно же убеждать других, что это норма — например, говоря что главное — не быть токсичным), либо поддерживать меритократию. Если выбор — за меритократией, ценностью чиловека в команде становятся прежде всего его умения и вклад в проект. Трутням становится тяжело психологически, их игнорируют, и рано или поздно они либо начинают развиваться, либо покидают компанию, восстанавливая работоспособность команды.
Что сейчас, что 20 лет назад.
Хотя, конечно, теоретически возможно, что эта уверенность в собственной ценности у меня не исчезла как раз из-за того, что 20 лет назад меня жалели и тыкали носом не во все мои ошибки)
Внимательно читать и анализировать историю исправлений от других разработчиков — это, внезапно, тоже хороший способ учиться.
Отправлял я как-то по почте патч в один опенсорсный проект. Нормальный такой фикс с оптимизацией, всё пучком. Только код отформатировал не в общем стиле, а в своём собственном — так же удобнее и красивее! Патч приняли. Я ждал-ждал, когда он появится в дереве исходников, чтобы можно было всем хвастаться при случае. А когда дождался, то увидел, что автором коммита указан мейнтейнер. Логично: ему ведь пришлось полностью перередактировать все мои изменения, чтобы они соответствовали требованиям по формату.
Было весьма обидно. Но зато этот случай меня сразу научил уважать стандарты форматирования. Хватило одного раза, чтобы научиться. И даже без какой-либо ругани от мейнтейнера.
Я, например, никогда не разносил разрабов на ревью из-за самолюбия. Во-первых, я действительно хочу, чтобы люди чему-то учились, а, во-вторых, пока код не попал в общую базу — это ответственность конкретного человека, а когда его смержили — это общие проблемы и общий технический долг.
Я часто пишу комментарии на ревью и замечаю, что нормальные разрабы перестают допускать ошибки, на которые я им ранее указывал. Но однажды мне пришлось работать с человеком, который был неисправим. Даже после моих комментариев он делал по-своему и не хотел переделывать. Его задачи висели до последнего, потому что он просто не хотел писать нормальный код, хотя я в комментариях порой даже просто приводил нужные куски кода. Его не уволили, но если бы я принимал решение, то сделал бы это.
удачи автору
Хороший специалист начинается тогда, когда он перестает боятся сделать ошибку. А хороший наставник — это тот, кто поможет новичку так, чтобы тот сам нашел и сам же исправил свою ошибку. Все остальное, как верно за собой замечает автор, — это не более чем попытки прикрыть свои закоренелые фобии «разумными» аргументами.
Именно поэтому я полагаю, что всякого рода «код-ревьюеры» и «тестеры» выполняют скорее негативную роль в коллективной работе. Вместо код-ревьюера должен быть ментор, ведущий разработчик, арт-директор, кто-то кто лучше разбирается, имеет опыт и умеет сам делать продукт высочайшего качества, плюс, одновременно обладает выраженными социальными качествами а так же качествами наставника.
Если эти качества соединяются в одной личности — это то, что заменит вам всех ваших ревъюеров и тестеров на раз, а так же обеспечит психологически здоровую атмосферу и профессиональный рост людей внутри команды.
И если вы мне скажете, что не кайфуете от чувства собственного превосходства, то вы врете.
Вообще-то не все люди нуждаются в том, чтобы гнобить и унижать более слабых, будь то в школе, в армии или на работе. Так что не равняйте всех по себе.
Я порчу разрабам жизни своими код ревью и больше так не хочу