Re: "Применение Code Review поможет больше, чем поначалу кажется"
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 09.04.15 07:09
Оценка: +1
Здравствуйте, ry, Вы писали:

ry>Вот наткнулся на хабре на статью "Code Review и теория вероятностей".


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

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

Ну и 25% строк кода с ошибками за гранью моего понимания... Но тут очень большая зависимость от языка, что тема отдельного обсуждения.
Re[4]: "Применение Code Review поможет больше, чем поначалу кажется"
От: ry Россия  
Дата: 09.04.15 13:20
Оценка:
Здравствуйте, pestis, Вы писали:

ry>>Извини, не согласен. Весь опыт говорит, что ревью всегда выявляет проблемы — это первое.

P>Странный у тебя опыт. В большинстве команд количество дефектов найденных в процессе ревью со временем падает до нуля. Про это даже в книжках написано.
С тем, что он падает, конечно, согласен. Но до нуля? Разработчик может свести свои ошибки к какому-то минимуму, но цена этого будет больше (это, конечно же, исключительно мои наблюдения над собой), чем затраты на код ревью с привлечением других разработчиков: я написал код, далее проверил, потом ещё перепроверил, на следующий день ещё раз. И всё равно оставлю ошибки, которые найдут другие.

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

P>Это и называется "отбывать номер".
Нет. Смотри про цену выше.

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

Я работал в стартапе. И поставил там процесс разработки с полного нуля. Того состояния, которое ты описываешь, я не видел. И кстати, почти год без зарплаты по 10-14 часов практически без выходных.

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

Абсолютно верно

ry>>И опять же не забывай о распространении знаний о проекте, обмене опытом.

P>От этого один вред. Единственный способ сделать хороший проект это индивидуальное владение кодом и общее видение архитектуры. Если Вася знает как написан модуль Пети никакого счастья это ему не принесет. Объем памяти ограничен и если Вася запомнит детали реализации чужого модуля, он автоматически забудет как устроен его собственный модуль, а это вообще никуда не годится.
Если человек не способен одновременно работать над несколькими проектами — это печально, а если он не способен держать в голове пару модулей одного проекта — я даже не знаю подходящего названия для этого
Re[2]: "Применение Code Review поможет больше, чем поначалу кажется"
От: ry Россия  
Дата: 09.04.15 13:51
Оценка:
Здравствуйте, Mystic, Вы писали:

Я практически со всем с тобой согласен, кроме разве что этого:
M>Если у меня будет немного времени на ревью, я смогу понять только общую идею, которая использовалась.
M>Более пристальный анализ потребует больше времени. Более того, я не удивлюсь, что для того, чтобы достичь надежности программиста, писавшего код, придется потратить больше времени, чем на само написание кода с нуля.
если, конечно, мы с тобой по-разному понимаем, что такое много и что такое мало времени на ревью.
Вот, например, есть такой график

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

И процесс ревью не требует достигать выделенного. Достигаешь в рамках разумного времени — супер, нет — не надо.
Re[3]: "Применение Code Review поможет больше, чем поначалу кажется"
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 09.04.15 15:11
Оценка:
Здравствуйте, ry, Вы писали:

ry>если, конечно, мы с тобой по-разному понимаем, что такое много и что такое мало времени на ревью.

ry>Вот, например, есть такой график
ry>Image: average_number_of_defects_found.png
ry>(взято отсюда), показывающий, что не надо тратить на ревью больше одного часа — падает его эффективность (конечно же, всё индивидуально). То есть один час на ревью — это уже много.

ry>И процесс ревью не требует достигать выделенного. Достигаешь в рамках разумного времени — супер, нет — не надо.


Это ревью чего? Одной функции? Одного коммита? Какая сложность кода? Например, я могу дать один свой сишный код на ревью, но боюсь, что одного часа будет мало для того, чтобы понять идею. Будет больше ложных срабатываний...
Re[4]: "Применение Code Review поможет больше, чем поначалу кажется"
От: Dziman США http://github.com/Dziman
Дата: 10.04.15 21:41
Оценка:
Здравствуйте, Mystic, Вы писали:

M> Это ревью чего? Одной функции? Одного коммита? Какая сложность кода? Например, я могу дать один свой сишный код на ревью, но боюсь, что одного часа будет мало для того, чтобы понять идею. Будет больше ложных срабатываний...


Я придерживаюсь мнения что ревью может работать только покомитно. Все остальные ревью (раз в неделю/месяц/год) скорее тупой попил бюджета.
avalon 1.0rc3 build 430, zlib 1.2.5
Re[5]: "Применение Code Review поможет больше, чем поначалу кажется"
От: MaximVK Россия  
Дата: 13.04.15 00:07
Оценка:
Здравствуйте, Dziman, Вы писали:

D>Я придерживаюсь мнения что ревью может работать только покомитно. Все остальные ревью (раз в неделю/месяц/год) скорее тупой попил бюджета.

Это уже будет ближе к code inspection — родному брату code review. Макконнелл утверждает, что code inspection более эффективен, но сложнее в имплементации.
Re[4]: "Применение Code Review поможет больше, чем поначалу кажется"
От: ry Россия  
Дата: 13.04.15 12:04
Оценка:
Здравствуйте, Mystic, Вы писали:

ry>>что такое много и что такое мало времени на ревью.

ry>>Вот, например, есть такой график, показывающий, что не надо тратить на ревью больше одного часа — падает его эффективность (конечно же, всё индивидуально). То есть один час на ревью — это уже много.

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


Какой вывод я должен сделать из твоего частного случая? Ревью алгоритма — особый случай. И, честно говоря, я его вообще не рассматриваю.
Представь крупную компанию — несколько тысяч разработчиков. И, как я писал, мне нужно встроить в процессы разработки код ревью. Шаг влево, шаг вправо — и процесс станет неэффективным: либо много ресурсов на него выделять, либо мало дефектов будет выявляться. Нужно найти и обеспечить определённую оптимальность, которая будет опробоваться на пилотах, и этот процесс, конечно же, на них не завершится, а будет и далее развиваться.
Re[5]: "Применение Code Review поможет больше, чем поначалу кажется"
От: diez_p  
Дата: 13.04.15 15:06
Оценка:
Здравствуйте, ry, Вы писали:

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

Это что за компания в которой тысячи разработчиков?! помимо всех известных. Вообще раз нет ревью, то значит и не надо. Нет базы по которой можно было бы судить о его полезности и нет понмиания у менджмента.
Re[6]: "Применение Code Review поможет больше, чем поначалу кажется"
От: ry Россия  
Дата: 13.04.15 15:31
Оценка:
Здравствуйте, diez_p, Вы писали:

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

В каком-то виде код ревью всё же присутствует. Спрос со стороны проектных и технических менеджеров есть. Раз выделили бюджет на внедрение, значит, и высший менеджмент дозрел.
Re[7]: "Применение Code Review поможет больше, чем поначалу кажется"
От: diez_p  
Дата: 13.04.15 15:56
Оценка: +1
Здравствуйте, ry, Вы писали:

ry>Здравствуйте, diez_p, Вы писали:


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

ry>В каком-то виде код ревью всё же присутствует. Спрос со стороны проектных и технических менеджеров есть. Раз выделили бюджет на внедрение, значит, и высший менеджмент дозрел.
Плюсы выше я описывал. Но есть еще одно но, чтобы у вас действительно была польза от ревью, у вас должна быть команда, когда замечание не перерастает в конфликт, а обсуждается. С точки зрения бюджетов, надо четко понимать, сколько дефектов доходит до заказчика и сколько они стоят.
Re[5]: "Применение Code Review поможет больше, чем поначалу кажется"
От: pestis  
Дата: 14.04.15 02:51
Оценка:
Здравствуйте, ry, Вы писали:

ry>С тем, что он падает, конечно, согласен. Но до нуля? Разработчик может свести свои ошибки к какому-то минимуму, но цена


До нуля. Ошибки становятся слишком комплексные и перестают находиться на ревью.

ry>Нет. Смотри про цену выше.


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

ry>Я работал в стартапе. И поставил там процесс разработки с полного нуля. Того состояния, которое ты описываешь, я не видел. И кстати, почти год без зарплаты по 10-14 часов практически без выходных.


Как известно, программист физически не способен работать продуктивно больше 4 часов в день. Если вы пахали по 10-14 часов, значит никакого процесса разработки там не было, а была сплошная штурмовщина и потогонка. В таком состоянии программист делает тупейшие баги, а потом часами их отлаживает. Логично что в такой ситуации код ревью работал, но это не нормально.

ry>Если человек не способен одновременно работать над несколькими проектами — это печально, а если он не способен держать в голове пару модулей одного проекта — я даже не знаю подходящего названия для этого


При чем тут способен-не способен? Объем памяти ограничен и чтобы запомнить что-то нужно забыть что-то другое. Когда человек работает над своим модулем, он держит всю информацию в оперативной памяти и исправление занимает у него 5 минут. Когда он лезет в чужой модуль, ему сперва нужно вспомнить как там все устроено, потом понять что там натворили коллеги с прошлого раза и только потом он сможет что-то поправить. Вся эта возня отнимает очень много энергии и, главное, совершенно лишает стимула повышать качество. Достаточно столкнуть задачу на минимально достаточном уровне, а разгребать проблемы придется коллегам. Единственная методология хоть что-то предлагающая для коллективного владения кодом это экстермальное программирование, и то оно начинает буксовать на проектах больше миллиона строк.
Re: Очень неплохая выжимка code review практик от IBM
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.06.15 11:14
Оценка: 2 (1)
Здравствуйте, ry,

http://www.ibm.com/developerworks/rational/library/11-proven-practices-for-peer-review/
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: "Применение Code Review поможет больше, чем поначалу кажется"
От: Sharowarsheg  
Дата: 23.06.15 20:42
Оценка:
Здравствуйте, uncommon, Вы писали:

LVV>>Вообще-то в наше время статистика показывала, что у квалифицированного программиста только 10% кода — с ошибками.


U>Отсюда вывод: в функции из меньше чем 10 строк ошибок быть не может.


Значит, разбить весь код на функции меньше десяти строк, и после этого можно не тестировать.
Re[3]: "Применение Code Review поможет больше, чем поначалу кажется"
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 25.06.15 07:29
Оценка:
Здравствуйте, uncommon, Вы писали:

LVV>>Вообще-то в наше время статистика показывала, что у квалифицированного программиста только 10% кода — с ошибками.


U>Отсюда вывод: в функции из меньше чем 10 строк ошибок быть не может.


Там одна ошибка — в семантике самой функции
The God is real, unless declared integer.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.