Я нигде и не утверждал, что у нас ревьювают код на "работоспособность". Это вы додумали :)
Мы всего лишь стараемся поймать лажу любого вида до ухода в тестирование. Включая лажу в виде плохого качества кода, лажу в архитектуре и прочее. Это все лажа, которая все равно вернется от QA, но неявно, и в виде отдаленных последствий, которые будет уже слишком дорого починить. Из явных багов - ну, ревью помогает что-то трудноуловимое ручным тестированием поймать, race conditions, плохую сложность алгоритмов, отсутствие атрибутов авторизации - то, что прилетит уже не от QA, а потом, с продакшена. И да, даже ревью архитектуры - это все равно тестирование, просто его всегда делают разработчики. Как и юнит тесты - это тоже тестирование, которое должны делать разработчики.
Есть проекты, где даже ручное тестирование лежит на ревьюверах - в kibana так принято, насколько я знаю. Но на мой взгляд это уже перебор :)
Я вообще писал о конкретной мотивации для ревью, а не о том, что ревьювать, а что - нет. Что именно ревьювать - решает команда. Если у вас QA получают в 10 раз меньше разработчиков, и security/performance баги не критичны и при этом проект короткий "написать и забыть" - то да, ни ревью, ни юнит тесты себя не окупят.
Да, если использовать термины из пентеста - это мысленное поверхностное white box тестирование. Работа тестировщика - это тщательный grey box. Есть проекты, где это довели до абсолюта - тестировщиков нет, тестируют ревьюверы (
Но "лажа" это обычно не хитрые ошибки в выполнении, а что-то, что значительно влияет на результат, или что потом будет сложно и дорого поддерживать [лично ревьюверу и остальным в команде].
Я бы лучше посмотрел новые изменения отдельным коммитом
Не совсем понимаю, почему тут "лучше, чем". Гитхаб показывает пулл в виде одного большого диффа. Но почему это противопоставляется поиску недочетов в коде?
Поддерживаемость и расширяемость - да, не померять. Поэтому надо строить процесс так, чтобы ревьювер был прямо заинтересован в результате - потому что это ему придется поддерживать и расширять.
Диктатура - да, у нас те же правила. Branch protection rule на гитхабе + явно озвученное "за результат отвечает ревьювер, а не автор". Ну и плюс - у нас ревьювер должен просмотреть еще и задачу на тестирование, проверить, что там упомянуты все затронутые места, и дать отмашку QA.
Из нерешенных проблем - у нас несколько команд, работающих над разными фичами. Команды быстро просекли, что им выгоднее ревьювать изменения в рамках команды (один сделал, второй просмотрел и отдал в тест), т.к. свой userstory ближе к телу, чем user story другой команды. И из-за этого code ownership понижается. Как это чинить без еще большей диктатуры - непонятно.
Основная проблема при ревью - это мотивация. Мотивацию дает понимание разработчиками цели ревью. "Улучшить качество кода" - это не цель. "найти баги" - не цель. Цель должна быть измеримой, и должна приносить удовлетворение разработчикам. Хорошая цель, например, - это сократить количество возвратов фичи от QA к разработчикам и обратно. Все разработчики ненавидят возвраты из-за "лажанули, забыли корнер кейс покрыть".
Для того, чтобы это стало реальной целью ревьювера - нужно чтобы при возврате от QA баги разгребались не только автором пулла, а всей командой. Тогда при ревью каждый будет заинтересован в том, чтобы лажа не ушла в тестирование.
То же самое с простотой поддержки. Вот это не мотивирует ревьювера:
Хорошо ли такой код будет расширять и поддерживать в дальнейшем [автору пулла]?
А вот это мотивирует:
Лично тебе придется расширять расширять и поддерживать этот код в дальнейшем. Подписывашься на такое?
Насчет "старший ревьювает за младшим". Старший просто умрет от такого объема. Это решается через peer code review - все за всеми, рандомно. Младшие должны ревьювать код за старшими, иначе у них не будет картины "как делать хорошо", или "как принято делать в команде". Новичкам, даже не джунам, очень тяжело это понять, особенно если codebase большой. Возможность посмотреть вживую, как делаются конкретные изменения, вместо попыток разобраться по всему объему кода, очень хорошо помогает в онбординге.
По личному опыту - основная проблема при внедрении code review - это то, что пуллы медленно разбираются. Мы используем самописный бот, который выдает рекомендации на основе недавней истории ревью, но даже просто канал в слеке, куда падают все новые пуллы, хорошо помогает в разгребании очереди.
отсутствие данных о пороговом уровне канцерогенного эффекта асбеста, в том числе хризотила, и то, что среди населения, подвергающегося воздействию крайне низкого уровня, отмечен повышенный риск рака
Это не "нет данных, вызывает ли он рак", как вы читаете. Это "Даже небольшой уровень вызывает рак. Существует ли какой-то совсем низкий уровень, который рак не вызывает - неизвестно, но судя по статистике - нет, достаточно одной щепотки". Поэтому и запретили.
А ещё повышенный уровень рака наблюдается у горняков....
Первая фраза того же доклада:
Асбест – это один из наиболее серьезных профессиональных канцерогенов, на который приходится примерно половина случаев смерти от профессионального рака
Т.е. только асбест вызывает столько же проф. рака, сколько горная промышленность, металлургия, нефтедобыча и прочее вредное производство вместе взятые. Хотя потери от запрета асбеста явно несоизмеримы с запретом вообще всей промышленности.
Проблема даже не в разнице и не в заметности. Тот же Голос кроме альтернативного голосования собирал еще и фото протоколов по участкам. В результате — сумма голосов из официальных протоколов за Тихановскую по половине участков по Минску оказалась меньше, чем официально же озвученный тотал за нее по всему Минску. Озвучили нужные числа, и никакие бэкдоры и блогчейны не нужны. А кто недоволен — тот террорист.
Рейтинг Лукашенко объективно высок, а противники столь ничтожны, что он совершенно не нуждался в накрутках
Это даже смешнее чем «20 человек вышло бастовать» от президента сегодня и «80% за лукашенко» ЦИК :) Заявите еще, что земля плоская, для полноты картины.
Одно дело рассказы, другое — видеть это вживую (или хотя бы в записи). Это не 1989, когда люди еще встречали Йети и НЛО, сейчас куча прямых видеодоказательств. Зайдите в телеграме в любой из белорусских каналов (belamova, belteanews (чай з варэннем), nexta) и убедитесь сами, что из поста выше правда, а что нет.
Почитайте интервью с выпущенными из Окрестино вчера / сегодня людьми. Мне тоже казалось, что это все сказочки про лопатку, и где-то далего. А оказалось что нет, и что выходя во двор надо оглядываться, нет ли рядом омона.
Да нет никаких минусов, просто человек хочет создать впечатление, что я некий «антироссийский пропагандос». То ли специально, то ли потому что это подтверждает его вид на мир в формате «вокруг враги». Хотя я обычный техдир небольшой конторы в Минске, и я честно радуюсь, когда в России делают что-то действительно стоящее (как в IT, так и в целом).
Возможно… вам стоит подумать перед тем, как оскорблять и называть «пропогандосами» участников, не проверив перед этим факты.
Вы жалуетесь на:
минусов никто не ставит, возражений никто не пишет, а анонимно сливается карма
А сообщением выше предлагаете слить мне карму без всяких «возражений»:
слейте ему карму если можете…
Единственный вывод, которых из этого можно сделать — вы считаете всех остальных пользователей хабра идиотами, которыми можно просто так манипулировать. Вот и не обижайтесь на минусы в карму теперь.
Вы лжете. На тех участках, где были дикие очереди, они были уже 12 (!!) в основной день голосования, и это прямо опровергает ваши сказки: https://news.tut.by/society/696018.html
Каких-каких наблюдателей?? Разрешили только местных, и те наблюдали снаружи участка, иногда даже из-за забора в бинокль (и это не шутка!)
Максимум, что они смогли пронаблюдать — количество прошедших на участок. И то, количество людей с белыми браслетами (символом за Тихановскую) было значительно больше, чем вписанное количество голосов. Полно ж материала в общем доступе.
Хороши бейзлайн — есть участки, где посчитали честно. Примеро 80 из 6000, к сожалению. Там результаты ровно наоборот. Но зато комиссия там смогла просто открыто объявить результат, и их не пришлось вывозить ночью, с омоном, как было, например, на моём участке.
Не ленитесь, проверяйте что ваша ложь хоть немного правдоподобно выглядит, перед тем, как ее постить. Международные наблюдатели, это ж надо такое придумать.
Понимаете, 21 век и интернет такое дело, что любой может за 30 секунд проверить, что вы лжете. Били и хватали людей во дворах. Вытаскивали людей из машин за то, что просто ехали где-то рядом с протестом (т.е. просто где-то в городе). У меня двух коллег взяли — один шел по улице с участка для голосования. Второй работал в кафе, вышел, и пропал по дороге домой.
По поводу протестов против власти — опять же, это не протест против власти. Это протест против силового захвата власти неконституционным путем. Голоса даже не считали. Просто вписали результат, отрубили интернет и вывели на улицу кучу бандитов в черном, которые начали гребсти и пытать народ. За такое у нас все ещё положена смертная казнь.
Нюхнуть черемухи и дубинкой — ок, незаконно со стороны власти, но, было ожидаемо.
А вот пытки на Окрестино (реальные пытки, когда уже задержанным беспомощным людям ломают руки и ноги, избивают до полусмерти) — это что-то за гранью. Любому, оправдывающему у такое, я могу только пожелать самому попасть в эту мясорубку
Идиот, если ты посмотришь историю моих комментов, то поймёшь, что я бывший мод ruSO, и что даже на хабре реальность моего аккаунта могут подтвердить десятки человек :)
Я сам лично забирал сегодня задержанных из Жодино. Я прекрасно знаю, как нанятый Лукашенко ОМОН обращается с мирными людьми. Желаю, чтобы НЛО унесло тебя с хабра навсегда.
Я нигде и не утверждал, что у нас ревьювают код на "работоспособность". Это вы додумали :)
Мы всего лишь стараемся поймать лажу любого вида до ухода в тестирование. Включая лажу в виде плохого качества кода, лажу в архитектуре и прочее. Это все лажа, которая все равно вернется от QA, но неявно, и в виде отдаленных последствий, которые будет уже слишком дорого починить. Из явных багов - ну, ревью помогает что-то трудноуловимое ручным тестированием поймать, race conditions, плохую сложность алгоритмов, отсутствие атрибутов авторизации - то, что прилетит уже не от QA, а потом, с продакшена. И да, даже ревью архитектуры - это все равно тестирование, просто его всегда делают разработчики. Как и юнит тесты - это тоже тестирование, которое должны делать разработчики.
Есть проекты, где даже ручное тестирование лежит на ревьюверах - в kibana так принято, насколько я знаю. Но на мой взгляд это уже перебор :)
Я вообще писал о конкретной мотивации для ревью, а не о том, что ревьювать, а что - нет. Что именно ревьювать - решает команда. Если у вас QA получают в 10 раз меньше разработчиков, и security/performance баги не критичны и при этом проект короткий "написать и забыть" - то да, ни ревью, ни юнит тесты себя не окупят.
Да, если использовать термины из пентеста - это мысленное поверхностное white box тестирование. Работа тестировщика - это тщательный grey box. Есть проекты, где это довели до абсолюта - тестировщиков нет, тестируют ревьюверы (
Но "лажа" это обычно не хитрые ошибки в выполнении, а что-то, что значительно влияет на результат, или что потом будет сложно и дорого поддерживать [лично ревьюверу и остальным в команде].
Не совсем понимаю, почему тут "лучше, чем". Гитхаб показывает пулл в виде одного большого диффа. Но почему это противопоставляется поиску недочетов в коде?
Поддерживаемость и расширяемость - да, не померять. Поэтому надо строить процесс так, чтобы ревьювер был прямо заинтересован в результате - потому что это ему придется поддерживать и расширять.
Диктатура - да, у нас те же правила. Branch protection rule на гитхабе + явно озвученное "за результат отвечает ревьювер, а не автор". Ну и плюс - у нас ревьювер должен просмотреть еще и задачу на тестирование, проверить, что там упомянуты все затронутые места, и дать отмашку QA.
Из нерешенных проблем - у нас несколько команд, работающих над разными фичами. Команды быстро просекли, что им выгоднее ревьювать изменения в рамках команды (один сделал, второй просмотрел и отдал в тест), т.к. свой userstory ближе к телу, чем user story другой команды. И из-за этого code ownership понижается. Как это чинить без еще большей диктатуры - непонятно.
Основная проблема при ревью - это мотивация. Мотивацию дает понимание разработчиками цели ревью. "Улучшить качество кода" - это не цель. "найти баги" - не цель. Цель должна быть измеримой, и должна приносить удовлетворение разработчикам. Хорошая цель, например, - это сократить количество возвратов фичи от QA к разработчикам и обратно. Все разработчики ненавидят возвраты из-за "лажанули, забыли корнер кейс покрыть".
Для того, чтобы это стало реальной целью ревьювера - нужно чтобы при возврате от QA баги разгребались не только автором пулла, а всей командой. Тогда при ревью каждый будет заинтересован в том, чтобы лажа не ушла в тестирование.
То же самое с простотой поддержки. Вот это не мотивирует ревьювера:
А вот это мотивирует:
Насчет "старший ревьювает за младшим". Старший просто умрет от такого объема. Это решается через peer code review - все за всеми, рандомно. Младшие должны ревьювать код за старшими, иначе у них не будет картины "как делать хорошо", или "как принято делать в команде". Новичкам, даже не джунам, очень тяжело это понять, особенно если codebase большой. Возможность посмотреть вживую, как делаются конкретные изменения, вместо попыток разобраться по всему объему кода, очень хорошо помогает в онбординге.
По личному опыту - основная проблема при внедрении code review - это то, что пуллы медленно разбираются. Мы используем самописный бот, который выдает рекомендации на основе недавней истории ревью, но даже просто канал в слеке, куда падают все новые пуллы, хорошо помогает в разгребании очереди.
Это не "нет данных, вызывает ли он рак", как вы читаете. Это "Даже небольшой уровень вызывает рак. Существует ли какой-то совсем низкий уровень, который рак не вызывает - неизвестно, но судя по статистике - нет, достаточно одной щепотки". Поэтому и запретили.
Первая фраза того же доклада:
Т.е. только асбест вызывает столько же проф. рака, сколько горная промышленность, металлургия, нефтедобыча и прочее вредное производство вместе взятые. Хотя потери от запрета асбеста явно несоизмеримы с запретом вообще всей промышленности.
Это даже смешнее чем «20 человек вышло бастовать» от президента сегодня и «80% за лукашенко» ЦИК :) Заявите еще, что земля плоская, для полноты картины.
Почитайте интервью с выпущенными из Окрестино вчера / сегодня людьми. Мне тоже казалось, что это все сказочки про лопатку, и где-то далего. А оказалось что нет, и что выходя во двор надо оглядываться, нет ли рядом омона.
Вы жалуетесь на:
А сообщением выше предлагаете слить мне карму без всяких «возражений»:
Единственный вывод, которых из этого можно сделать — вы считаете всех остальных пользователей хабра идиотами, которыми можно просто так манипулировать. Вот и не обижайтесь на минусы в карму теперь.
Вы лжете. На тех участках, где были дикие очереди, они были уже 12 (!!) в основной день голосования, и это прямо опровергает ваши сказки: https://news.tut.by/society/696018.html
Урны вскрыли, в протоколы вписали нужные числа. Все. Пересчёта требуют, ЦИК игнорирует.
Каких-каких наблюдателей?? Разрешили только местных, и те наблюдали снаружи участка, иногда даже из-за забора в бинокль (и это не шутка!)
Максимум, что они смогли пронаблюдать — количество прошедших на участок. И то, количество людей с белыми браслетами (символом за Тихановскую) было значительно больше, чем вписанное количество голосов. Полно ж материала в общем доступе.
Хороши бейзлайн — есть участки, где посчитали честно. Примеро 80 из 6000, к сожалению. Там результаты ровно наоборот. Но зато комиссия там смогла просто открыто объявить результат, и их не пришлось вывозить ночью, с омоном, как было, например, на моём участке.
Не ленитесь, проверяйте что ваша ложь хоть немного правдоподобно выглядит, перед тем, как ее постить. Международные наблюдатели, это ж надо такое придумать.
Понимаете, 21 век и интернет такое дело, что любой может за 30 секунд проверить, что вы лжете. Били и хватали людей во дворах. Вытаскивали людей из машин за то, что просто ехали где-то рядом с протестом (т.е. просто где-то в городе). У меня двух коллег взяли — один шел по улице с участка для голосования. Второй работал в кафе, вышел, и пропал по дороге домой.
По поводу протестов против власти — опять же, это не протест против власти. Это протест против силового захвата власти неконституционным путем. Голоса даже не считали. Просто вписали результат, отрубили интернет и вывели на улицу кучу бандитов в черном, которые начали гребсти и пытать народ. За такое у нас все ещё положена смертная казнь.
Нюхнуть черемухи и дубинкой — ок, незаконно со стороны власти, но, было ожидаемо.
А вот пытки на Окрестино (реальные пытки, когда уже задержанным беспомощным людям ломают руки и ноги, избивают до полусмерти) — это что-то за гранью. Любому, оправдывающему у такое, я могу только пожелать самому попасть в эту мясорубку
Идиот, если ты посмотришь историю моих комментов, то поймёшь, что я бывший мод ruSO, и что даже на хабре реальность моего аккаунта могут подтвердить десятки человек :)
Если это шутка — то неудачная. Тут людей реально пытают.
Вот, ознакомься:
https://news.tut.by/society/696598.html — это рассказывают люди, которых выпустили пол часа назад
Или послушай вот как хорошо слышны пытки даже снаружи здания: https://news.tut.by/society/696524.html
Я сам лично забирал сегодня задержанных из Жодино. Я прекрасно знаю, как нанятый Лукашенко ОМОН обращается с мирными людьми. Желаю, чтобы НЛО унесло тебя с хабра навсегда.
вот этот обвес экономит ровно одно создание объекта на каждом вызове GetItemsFast. Экономия на спичках, но формально она есть.