Комментарии 46
Однако пытаться при помощи метрик ускорять сам процесс разработки не стоит, по причине отсутствия годных метрик.
Это одно из больших заблуждений, потому что именно метрики заложены в подходе #noestimate и именно этот подход дает возможность ускорить процесс разработки за счет снижения вариаций. Собственно ради этого все и затевается.
С помощью метрик находите узкое звено, оптимизируете его загрузку, радуетесь баблу.
И да метрики являются необходимыми и достаточными, без изменения трех основных вы даже не поймете, делаете вы хуже или лучше.
А мокрый пальчик, такой себе индикатор
А может просто признать что задача найти эти магические метрики не имеет решения и сосредоточится на чём-то другом?
Пусть это будет одна из задач тысячелетия типа равенства классов P и NP на которую не найдено решение.
Некоторые компании выпускают софт значительно быстрее других, и причем без ущерба качеству. Значит, есть какие-то существенные отличия, и значит, улучшения должны быть возможны.
Например, они тратят больше денег. И что нам с того, если у нас столько нет? Более того, возможно трата лишних денег не входит в наши цели, и будет для нас неприемлема.
На самом деле, вопрос скорее стоит так — если нет метрики, то вы не можете узнать, как подействовали ваши изменения. Стало ли лучше, или хуже. А так-то конечно, поменять что-нибудь можно всегда, и иногда даже может получиться хорошо. Но проблема в том, что стабильно добиться улучшения таким способом нельзя, так как вы давите на газ, а спидометр еще не придумали.
Узкие места расширить? А откуда вы знаете, где они, если мерять не умеете?
Ну просто потому, что если ее вообще нет, то вот эта ваша фраза: «Некоторые компании выпускают софт значительно быстрее других, и причем без ущерба качеству» — она же просто не имеет смысла. Если мы не умеем мерять время и качество — то откуда мы вообще взяли, что кто-то выпускает софт быстрее, и без потери? Что-то же мы сравниваем? Значит у нас есть метрика, для которой определена как минимум операция >.
в рыночной экономике, общая прибыль от продажи продукта вполне можно считать мерой качества.
Каким образом, если продажи некачественного продукта вполне себе могут приносить бОльшую прибыль, чем продажи качественного?
Как мерить ПО уже все давно знают
а как именно, например?
Если производим под конечного потребителя:
Crash-free users/sessions
Retention, MAU, DAU
Revenue per User (если через ПО что-то продаётся)
Рейтинги в магазинах приложений
Если софт «сферический в вакууме» — есть метрики про code quality, и в конце концов (прости Ктулху) всякие test coverage.
Да «тыщи их»)
часы в освоенном обьеме вполне годно дает метрики в часах.
да и в вашей статье это расклад ничего негативного не дает кроме цены! а вы против платить много за быстро и качественно?
статья выглядит натянутой на глобус, чтобы обьяснить начальнику почему ты не оцениваешь задачи и вообще «творческая личность»
оставьте в покое науку и берите паттерны, шаблоны и плите код!
что, работать не нравится, да?
лучше будем продавать что-то для «улучшения коммуникаций»))
Мда. На самом деле, хотелось бы «контр-статью».
Экспертная оценка субъективна, но пока что это самое точное, что у нас есть. Однако, раз мозг человека может решать задачу экспертной оценки — значит, есть надежда построить и автомат, дающий оценку сравнимого качества и без субъективности.
Допустим, нужно оценить коммит программиста. Как это сделать? Я бы действовал примерно так:
1) Понять цель, зачем вносились изменения. Чего хотел добиться автор? При необходимости — расспросить. Соотнести эту цель с актуальными задачами коллектива.
2) Оценить, достигнута ли цель. Решил ли автор задачу, за которую брался? Привело ли это к задуманным улучшениям продукта? Стал ли код чище, лаконичнее, понятнее?
3) Оценить сложность решённых автором задач. Какие трудности он преодолевал? Какого масштаба изобретательность или знания требовались для этого?
4) Оценить внимательность и дальновидность автора, насколько далеко он заглядывал вперёд, просчитывая последствия своих действий? Какие потенциальные будущие проблемы решил?
5) Допустил ли автор явные ошибки? Использовал ли он заведомо неэффективный подход из-за недостатка квалификации? Или, наоборот, показал невиданные доселе трюки?
6) Есть ли несоответствия продукта принятым на фирме стандартам качества программной продукции на данном этапе её производства?
7) Учесть объём проделанной работы (количество изменений)
8) Учесть затраченное время
Может, и ещё что-то учесть можно, сейчас не приходит в голову.
Вот, если какие-нибудь автоматы, адекватно оценивающие элементы работы программистов по приведённым выше критериям 1-6 будут созданы — тогда можно будет говорить про метрики.
Да, можно пытаться и учитывать мнение экспертов и формальные показатели — это типичная ситуация при подаче заявок на грант, когда есть формальные требования к руководителю и коллективу (включая число публикаций в изданиях определённого уровня), и плюс к этому несколько экспертов оценивают саму заявку. Но решать подобную задачу массово нереально
Экспертная оценка субъективна, но пока что это самое точное, что у нас есть
полностью согласен. После этого комментария и еще нескольких выше я понял, что в статье не хватало упоминания субъективных экспертных оценок. Поэтому могло создаваться впечатление, что я как будто предлагаю совсем отказаться от любых попыток что-то оценивать. Конечно, нет. Добавил очень короткое упоминание об этом в последний абзац статьи.
Вот даже это уже обычно далеко не тривиальная задача. Ну в смысле не это одно, а любой из пунктов, пожалуй.
Практически день в день в The Overflow Blog: https://stackoverflow.blog/2020/12/07/measuring-developer-productivity/.
Почему не стоит пытаться ускорять разработку при помощи метрик