Как стать автором
Обновить

Комментарии 50

> Далеко за примерами ходить не надо. Все знают понятие «индусский код»: как только разработчикам начинают платить за количество написанный строчек кода
> А между тем, это как ни парадоксально, это очень точная метрика.

Я с вами очень и очень не согласен.
Возьмите любой фреймворк и решите задач с его использованием.
Теперь решите задачу без этого фреймворка. Кода у вас будет больше, а писать решение вы будете дольше.

При том что у каждого есть свои наработки и этакий самописный фреймворк для личного пользования.
В прочем к общей мысли статьи притензий не имею. Это на случай чтобы кому-то не вздумалось мерить эффективность «негласно» количеством строк.
Вы неверно поняли автора, как мне кажется. Суть сводится к тому, что при таком подходе, даже использую фреймворк — можно написать кучу кода, который в реальности не нужен. И заметьте, что написать if (f==f), времени много не нужно.
Вся проблема в том, что не каждый управленец может отличить одно от другого и в этом случае совет становится вредным. Для того, чтобы понять, что это количество строк действительно имеет смысл, а не программер быдлокодит, надо делать ревизию кода.
Ну так о чем и речь :) Этим же и знаменит «индусский код», если бы количество строчек считали те, кто реально понимает в чем их смысл… но к сожалению машины пока этого делать не научились.
На самом деле обычный «инспектор» любой современной IDE быстро покажет как минимум половину хрени в таком индусском коде (что где бессмысленно написано, где можно сократить и т.п.).
Так что останется только писать «реальные» куски быдлокода, вдумываясь при написании, чтобы такой инспектор их пропускал. А уж если разработчик этим будет заниматься — в пору его уволить…
Там важное уточнение: … необходимо много условностей (схожие задачи, наличие стандартов кодирования, например, максимальная длина метода, отсутствие дублирования, рефакторинг и так далее), но все же метрика достаточно точная… если не использовать ее как оценку производительности.
НЛО прилетело и опубликовало эту надпись здесь
Пример из жизни: на сайте (или в диалоговом окне) слово «Вы» написано с большой буквы. Дефект? :)
НЛО прилетело и опубликовало эту надпись здесь
В спецификации написано с большой буквы, а в корпоративной политике с маленькой…
НЛО прилетело и опубликовало эту надпись здесь
Как раз они будут руководство нецелесообразностью, а метриками (кол-во багов одному идет в минус, другому в плюс). В итоге могут потерять несколько часов (и не только своих), вместо того, чтобы прийти к консенсусу за минуту :)
> Но, к сожалению, не все так просто: как только мы вводим метрику, поведение команды
> начинает меняться. Команда и каждый ее член начинает подстраиваться под
> введенную нами метрику.
То, что начинает меняться — это очень хорошо.
То, что начинает меняться не в ту сторону, в какую хочется — это плохо.
Выход прост — критерии измерений должны быть известны вам и не известны команде.
Тут хороший пример — рейтинг на Хабре.
Вы знаете, что он считается, но точно не знаете, как.
Как раз смысл в том, что у метрик есть побочные эффекты, которые не так очевидны. И их можно не увидеть до внедрения.
А вариант того, что команда не знает метрик, по которым оценивается их эффективность, на мой вгляд не очень хорош, как раз тем, что команда не получает фидбека и не понимает, насколько эффективно она работает.
Тут всё крепко зависит от порядков в той или иной компании.
Разные конторы — разные фидбеки, их уровень детализации и прозрачности.
Иногда от излишних знаний в этой части бывают изрядные проблемы.
Как вариант — пресловутый «индийский код».
Вместо «не навреди» надо мерять те метрики, которые не приведут к суб-отимизации по метрике, а к оптимизации на финальной фазе (всем потоке создания ценности — lean-style): например число довольных продуктом заказчиков, долгосрочно получаемый за продукт профит\ресурсы, lead time. (ц) вольный пересказ Деминга.
Абсолютно согласен. Могу добавить только то, что по системам/субсистемам есть очень много интересных мыслей у Гольдрата.
Хорошая мысль.

Но довольные заказчики, как и всё остальное — такая же «оптимизируемая» метрика. Специально обученный человек садится на телефон и обзванивает заказчиков, в том числе потенциальных:
— Здравствуйте, вы довольны нашим продуктом?
— Эта проблема уже решается. А ещё?
— Эта проблема будет решена в следующей версии. А ещё?
— Эта проблема есть во всех аналогах, но мы работаем над ней. А ещё?
— То есть в целом вы довольны, спасибо.

В любом случае лучше здравого смысла пока ещё ничего не придумали.
На самой своей первой работе был как раз тестировщиком. И как раз «мерили» нас количеством найденных багов. Но не только количеством.

Был руководитель отдела (а у него были свои KPI, о которых мне неизвестно) классифицировал баги (по сложности обнаружения, приоритету), что давало багу «вес». Соответственно, эффективность тестировщика измерялась количеством и «весом».

Вполне нормальная схема.
А при такой схеме «не выгодно» ли забивать на мелкие баги, а искать только баги с большим весом? :)
ну собственно вес — это функция в т.ч. и приоритета. Для продукта тоже выгодно, если тестировщик будет находит больше багов бОльшего приоритета.
> цикл Деминга: Plan-Do-Check-Act
Кажется, Деминг и говорил, про то, что надо убрать все показатели для исполнителей, и оставить их менеджменту. К девелоперам не надо применять метрики, и к людям вообще, по-моему их надо применять к проекту, к процессу, к отделу, к компании наконец.
Собственно, у меня пост про командные метрики. Индивидуальные метрики еще более опасными могут быть :)
Я скорее к тому, что исполнителям вообще не надо знать/думать о метриках. Кроме сроков, пожалуй.
В компаниях где мне доводилось работать эффективность измеряется количеством оплачиваемых часов. Понятное дело, что это ни к каким реалистичным планам и большей эффективности не приводит. Вопрос в том, какими могут быть те метрики или способы, которые улучшают сам процесс вместо улучшения отчетности.
Идеальных метрик не бывает, всегда будет метрика лучше, чем текущая. В остальном я с вами соглашусь
Статья как будто бы о наблюдении и измерении, а на самом деле об оплате труда и наказаниях. Это совсем разные вещи.

Если действительно хотите измерить, то не надо орать об этом. Просто сделайте это, причём максимально незаметно.

Кстати, метод кнута и пряника — это действительно не самый эффективный метод повышения производительности. Кому интересно, советую поизучать такую тему как «Эмоциональный интеллект».
«Эмоциональный интеллект» — лежит на столе. Спасибо за напоминание!
Скорее статья о том, как не надо использовать метрики для «наказаний» :)
Согласен.
Кстати, как раз вспомнил ещё пример. В одной компании менеджеров по продажам стали штрафовать и премировать за количество звонков. В результате многие менеджеры стали делать много совершенно бесполезных звонков. Даже бесполезных для себя.
Примечательно, что статья по ссылке так же не соответствует своему названию, как и этот топик. Слово «измерить» принимает значение «премировать и штрафовать».

Вся ирония в том, что я только сейчас заметил, что Вы автор топика и сами иронично подметили его несоответствие названию и подмену смыла понятию «измерить».
И где я это «подметил»? :) Название означает, что благодаря таким наблюдениям, можно внести нежелательные последствия в работу команды.
Метрики обычно используются не для «премировать и штрафовать», а для повышения эффективности работы команды, в том числе и при помощи их анализа.
«Скорее статья о том, как не надо использовать метрики для «наказаний» :)»

А вот с этим я не согласен: «Как только мы начинаем считать любые метрики, мы вносим изменения в поведения команды и отдельных ее членов.»
Измерять и считать можно не принося изменений.
Я на практике вижу эффективной систему метрики сложности задач, времени исполнения и качества исполнения. Руководитель проекта оценивает задачи и раздает их девелоперам, девелоперы в свою очередь тоже ставят задачи друг другу, но важность и сложность задач определяет руководитель проекта. Тестировщики ставят задачи снова таки проходя этап оценки сложности у руководителя проекта. В итоге собирается статистика по количеству задач, сложности задач, затраченному времени и качеству выполнения. Исходя из этого можно рассчитать оплату труда. У нас например есть ставка у каждого, но в зависимости от выполнения тех или иных задач насчитывается бонус, который рассчитывается по вышеприведенным критериям.
Работает?
Да. На удивление очень хорошо работает. Все видят работу друг-друга и я еще не видел что бы возникали конфликты на почве нечестного разделения труда и задач. Это конечно больше заслуга руководителя проекта, но он руководствуется именно теми метриками что я написал. Помогает ему в этом такой продукт как Jira, но кроме продукта нужно умение оценивать сложность задач и назначать их правильно. Это он умеет.
Я почему спросил: когда руководитель проекта сам оценивает задачи и раздает их девелоперам, у него не очень много времени на стратегические задачи…
Согласен полностью. Поскольку у нас проект разросся в еще несколько веток, то добавился еще один руководитель проекта (он же один из девелоперов) на новые ветки, что позволило частично разгрузить первого руководителя проекта и разделить задачи как старые так и новые. Я бы целую статью написал о том как у нас процесс организован начиная с теории и заканчивая практикой и используемым вспомогательным ПО, но по сути дела таких статей много и моя будет касаться только отдельного случая и будет ни о чем много для кого.
Проблема таких постов — «ни-о-чем». Краткая суть «У вас проблема». Что делать? Ответ «Думайте о рыбе».
Если эта тема вам не близка, можно просто не читать :) А то получается, ежики плакали, но продолжали есть кактус :)
Я начал читать в ожидании чуда, но его не случилось, к сожалению пока еще не могу распознать смысл текста, не прочитав его =)
Поддерживаю, очередной пост из серии «жизнь сложна, простых решений не бывает».
В физике есть такое понятие как «эффект наблюдателя»: если над системой ведется наблюдение, то оно вносит изменение в ее поведение
Было бы кстати очень интересно почитать также про физическое понятие. Например, как корпускуляно-волновой дуализм проявляет свои свойства при «эффекте наблюдателя»…
Я как метафору использовал :) А вот какой метафорой может быть корпускуляно-волновой дуализм пока слабо представляю :)
Простая ассоциация — поисковики стараются ранжировать контент по его качеству, чтобы выдавать его на первом месте, как самый полезный, пользователям… И сразу появились «тунеядцы» под названием SEO-онанизаторы, прошу прощения, оптимизаторы, которые реально наносят вред здравой идее метрик полезности интернет-контента :-)

Борис, спасибо за статью. Есть над чем задуматься. А, как известно, половина успеха — это поставить правильный вопрос :-)
Количество строк кода — не метрика вообще. Тоесть формально, она что-то измеряет, но непонятно что.

Есть распространенное название для разного рода метрик в упралении — KPI, или «ключевые индикаторы ЭФФЕКТИВНОСТИ», а количество строк кода не имеет ничего общего с эффективностью.

Отсюда следует, что главный принцип не «не навреди», а «реши, зачем меряешь», или, на шаг веперед, «определи, какие решения хочешь принимать».

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

Публикации

Истории