> > Есть минусы, есть плюсы: не так легко откатить сломавшую правку из > > репозитория, на которую уже понакоммитили и заложили функционал. > > Бывает и такое. Но мне в жизни всего однажды встретилась грабля, которую > очень не сразу удалось обнаружить, не брали никакие разумные тесты, и > трудоемко было потом починить. Так и не починили, кстати. Причем по > крайней мере два первых ревью (два разных человека, входивших в разное > время в проект, внимательно читали этот код) она тоже успешно > проскочила. > Ну да, бывает.
> Ну, еще регулярно лезут подобные баги в криптопротоколах, но там вот как > раз сотни, а то и тысячи ревью, а толку? Потом лет через 10-15 таки > находится тысяча первый ревьюер, который таки замечает багу и делает > эксплойт. > Может быть из-за ревью он находится через 10-15 лет, а не каждый год на их протяжении? > А обычно бага либо легко правится, либо быстро замечается. В идеале и > то, и другое. Совсем в идеале ее ловит юнит-тест еще в процессе > реализации фичи, но так бывает не всегда :) > Угу, 50% времени на тесты в TDD, которые также могут баги содержать, о чём как-то давно вы сами и писали. > >> >> >> Практика показывает, что читать код _до_ попадания в репозиторий > - не > >> >> >> очень хорошая идея. Благо репозиторий позволяет, если что, > откатить. > >> >> >> > >> >> > Но сборки уже будут собраны и отправлены на тестирование, так не > лучше > >> >> > ли - не допустить? > >> >> > Какая практика? > >> >> > В чём нехорошесть данной идеи? > >> >> > >> >> Тормозной путь. Между моментом изменения кода и моментом, когда код > >> >> будет изменен, проходит время. > >> > Как минус, так и плюс. > >> > >> В течение этого времени в системе присутствуют и старые, и новые баги. > >> Где плюс? > >> > > Нет, присутствуют только старые баги, которые уже известны, проверены и > > одеты в пиджак, так что стали напоминать фичи. > > В коде они уже есть. В репозиторий еще не попали, а в коде уже есть. И > поверх них уже идет работа. > Да не идёт поверх них работы, пока их нет в репозитории, иначе процесс неверно построен. > И не факт, кстати, что старые баги известны. Мы можем говорить о ревью, > например, фикса свеженаступленной грабли. Она, может, в коде и пару лет > уже, но важный заказчик наступил на нее только сегодня, а до него просто > никому не приходило в голову проделать именно эту последовательность > действий. > Главное, чтобы фикс не внёс два других ещё более неочевидных бага и ничего не сломал. > > А тут новые баги, которые успеют сломать тестирование, например, в > > результате чего могут не пройти другие тесты и т.п.. > > На ревью есть шанс хоть что-то отсеять (да, я в курсе про юнит-тесты, > > однако есть факты на практике). > > На практике тесты для того и существуют, чтобы баги их ломали. Один фиг, > если тест сломался, то багу надо чинить. Если бага сломала сразу много > тестов, починка приоритетна, и все дела. > Ладно, умолчу про тех, кто "чинит" тесты в таком случае. Такие тоже бывали. Но очень редко тестовое покрытие полное. > >> > Да, с прерываниями. Но сложно постоянно концентрироваться на ревью и > >> > ждать ответов автора (который в этом время уже над другим работает), к > >> > тому же, ревьюверов бывает несколько. > >> > >> Я про прерывания не процесса ревью, а про прерывания процесса своей > >> работы необходимостью ревью. Для ревью надо загрузить в голову контекст > >> той задачи, к которой относится просматриваемый код. Он там неизбежно > >> заменит контекст своей задачи. После ревью придется снова грузить свой. > >> Это время, и в случае сложной задачи весьма изрядное. От 15 минут до > >> часа каждая перегрузка, а их тут две. > > Ну час - это явный перебор. > > Это значит, у тебя все задачи простые. > Не сказал бы. Ревью компактные относительно. И, естественно, что я не вникаю в весь код: только в изменения. А задача делается не один день. Я её помню и хотя бы иногда надо отвлекаться. > > А отрыв на 15 минут - не критично: вы же не соревновательным > > программированием занимаетесь, надеюсь? > > Каждая перезагрузка. Каждое ревью. Плюс столько же потом вернуться в контекст. > Есть вечер, утро и обед, если не критично. Обычно срочно закрывать не приходится. Вполне себе нормальный способ оторваться от задачи. > > Иногда вообще полезно от задачи оторваться, бывает. > > В моем опыте оторваться от задачи полезно, а вот заменять в голове ее > контекст контекстом другой задачи как раз вредно. Ну да люди разные, > задачи тоже. > Ну это возможно. Просто обычно на ревью "отдыхаешь". Хотя... > > Другое дело, если ревью много. Тогда да, на них забивают. > > И это, кстати, тоже. Не написанный тест ловится хотя бы coverage, а > забитое ревью от выполненного без претензий к коду не отличить никак. > Да, тут правда. > >> Вот тут уже сомнения. Если сжатые сроки, то потеря в среднем получаса > >> на каждое ревью... Это какие же должны быть разработчики, чтобы оно > >> окупалось? > >> > > Запаренные. > > Я не видел, чтоб окупалось. Ревьюеры-то при этом - те же разработчики, и > точно так же запаренные. Да еще надо ревью делать, что еще больше > запаривает... > > В вышепоскипанном примере с байкой про Боинг как раз запаренности-то и > нет. Там регламент устроен так, чтобы затормозить именно запарку. > Ну хорошо Боингу, а когда "давай сократим срок до месяца, хотя можно делать шесть", а в реальности не помешало бы два, постоянно "атмосфера гонки" и ощущение того, что ничего не успеваешь. > >> >> Менталитет программиста тоже интернационален. С менталитетом "кодера > по > >> >> обезьяньей работе" хуже, но extreme programming - технология для > >> >> программистов. > >> >> > >> > Ну что-то мне подсказывает, что русским и китайцам ужиться будет > >> > несколько сложно, и не для всех эта техника подходит. > >> > >> А никто не утверждал, что для всех. А вот русский с китайцем, скорее > >> всего, в паре как раз неплохо уживутся. Только роли будут не > >> переменные, а ближе к постоянным. Китаец кодит, русский следит и > >> корректирует. Характерного китайца не надо подгонять, зато надо > >> своевременно тормозить и/или поворачивать. Тогда он будет выдавать > >> качественный продукт, а быстро он его и так будет выдавать. > >> > > Что-то динамика развития Китая по отношению к РФ показывает: роли > > меняются. :-/ > > Ой, да ладно... Может, лет через несколько русский тут просто станет > лишним, но заменить китайца как работник... > Я как-то уже писал: китайцы свою процессорную архитектуру отгрохали, реализовали на ней процессоры и построили из них самый быстрый в мире суперкомпьютер, обогнав США (сейчас, вроде Япония первая). Где здесь русский? РФ в этом плане, пусть и не в полной жопе (есть те же Эльбрусы), но даже близко подойти не может. > >> >> >> > В любом случае, если я такое (чисто теоретически) предложу > менеджеру, > >> >> >> > он только у виска покрутит. Это же получается, что каждый > программист > >> >> >> > работает, условно половину времени, а половину сидит "и что-то > там > >> >> >> > смотрит". > >> >> > >> >> >> А если тебе не результат а имитацию бурной деятельности для > менеджера, > >> >> >> то да, подход ровно обратный. > >> >> > В конкретном случае мне нужно сделать для себя: имитировать там не > для кого. > >> >> > Над своими проектами я не за деньги работаю. > >> >> > И те, кто со мной работает, понимают, что если ты не сделаешь, > ничего не > >> >> > будет сделано. > >> >> > >> >> А если для себя, то предлагать вы будете не менеджеру, а себе. > >> >> Совершенно другая задача. > >> >> > >> > У меня так-то оба варианта сейчас есть. > >> > >> Ну и рассматривать их надо как две разных задачи, а не как одну общую. > >> И решать по-разному. > >> > > Согласен. > > Пока остановлюсь на том, что для себя. > > В любом случае, в механизмах большой компании "снизу" особо ничего не > > изменишь. > > Кстати, тоже есть варианты. Если помнить, что у нас нет цели поменять > компанию, нам достаточно поменять условия лично своей работы. Но это > совсем уже оффтопик. > Ну я бы не сказал, что нет такой цели, об этом и задумываюсь (или поменять отдел). Без одного другое не сделать.

