amarao: (Default)
[personal profile] amarao
Последние несколько месяцев я снова и снова возвращаюсь к мыслям про "работа над качеством".

Качество - интересная концепция, обсуждение которой, это отдельная простыня. Из того, что можно сказать кратко, есть качество случившегося, и качество неслучившегося. Качество случившегося оценить легко - количество инцидентов/огрехов за интервал. А вот качество неслучившегося очень трудно оценивать, потому что как мы оценим влияние меры по защите качества от единичных (но плохих) проблем, если эти проблемы не случились? Вот тот вот тест, который всегда зелёный, он на качество работает? А если он один раз покраснел у разработчика и тот поправил на своей машине, и никто об этом не узнал, это прирост качества?

Но пост не об этом. Пост про "работу над качеством".

Есть системный подход, когда специально выделенный человек или специально выделенное время идёт на поиск мест, где качество ниже требуемого и его исправление. Это QA (не тестировщик, а процесс - Quality Assurance).

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

Оппортунистический подход подразумевает, что мы повышаем качество, когда видим low hanging fruit, что-то конкретное, actionable, и не требующего реформирующих изменений (которые должны приходить сверху).

Например: ввести метрику качества и устранять отклонения - это системный подход, который требует значительных инвестиций и всего лишь устраняет отклонения в пределах метрики. Расходов много (установление метрики, измерение метрики, анализ отклонений, исправления), а выхлоп - как повезёт (зависит от того, насколько точно метрика описывает инутитивное понятие "качества").

А вот другой пример: шёл мимо, заметил, что если чуть-чуть добавить, то класс проблем будет отловлен, поменял. Усилий мало. Влияние на качество? Непонятно, но явно есть, потому что класс проблем закрыт.

Или: новый процесс, обсуждение. Небольшая коррекция процесса (до его создания) и качество выше, потому что появляется простой и дешёвый в реализации/эксплуатации этап, проверяющий что-то. Качество выше, усилий мало, точный результат не понятен, потому что нет метрик и процесса оценки качества.

И интуитивно есть ощущение, что оппортунистический подход даёт большее качество (хотя менее предсказуемое), чем системный, потому что целится он в 80/20 (20% усилий за 80% результата).

В каком-то смысле, можно использовать latency как метафору. Системный подход ставит своей целью уменьшить latency через фиксированную метрику (выбранный персентиль, или даже max latency) и системные же меры (realtime), а оппортунистический подход уменьшает latency там, где можно (возможно, не влияя на max latency, но уменьшая среднее).

Переход на метрики качества и системный подход экивалентен переходу на realtime систему. Дорого и требует обоснования на уровне всего бизнеса/продукта. Он приходит сверху и является требованием.

Оппортунистический же подход применим всюду, где есть хоть какая-то добрая воля. Он приходит "снизу" и является скрытым параметром продукта, определяемым командой разработки/создателями.

В каком-то смысле, системный подход к качеству является свойством продукта, а оппортунистический подход - свойством разработчика. Системный подход добивается какого-то ожидаемого качества с любым разработчиком (в разумных пределах), а оппортунистический подход делает лучше любой продукт (внимание: не делает продукт известного качества, а для любого продукта делает его лучше: плохой продукт станет чуть менее плохим, хороший станет чуть более хорошим).

Date: 2024-10-24 07:31 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Интересный подход. Но можно же и совмещать. Системно детектировать ворнинги, исключения, покрытие тестами. И оппортунистически это чинить потихоньку.

Date: 2024-10-24 07:38 am (UTC)
kondybas: (Default)
From: [personal profile] kondybas
"..системный подход к качеству является свойством продукта, а оппортунистический подход - свойством разработчика.."

Первій же МВА зарубит оппортунистический подход, потому что в мире менеджмента продукт (со всеми его свойствами, включая качество) должен біть независим от персонала и его доброй воли.

Date: 2024-10-24 10:57 am (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Тогда все єто останется неоплаченнім.
Єто хорошо на флетрейте - по сути, имеешь профит в том, что минимизируешь себе самому будущий геморрой. Но если в будущем кодом будет заниматься кто-то другой, никакой мотивации, кроме чистой єстетики, не остается. А єто, уві, не всем дадено.

Date: 2024-10-24 12:19 pm (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Мммм...

Мой опіт показівает, что сферически вакуумированій начальник никогда не міслит в терминах "хороший/плохой разработчик". Если на участке работника тихо и нет проблем, то єто не разработчик хороший, а участок беспроблемній. И - тадам! - зачем платить больше на беспроблемном участке?

Как пел один чел, "здесь мерилом работі считают усталость".

Date: 2024-10-24 01:58 pm (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Не, ненавистничества тут нет. Єто обьективній закон природі, глупо его ненавидеть.

Как разработчики, в борьбе со сложностью проекта, прибегают к структурной и функциональной декомпозиции на обособленніе сущности, так и манагері, в борьбе со сложностью управления метапроектом, прибегают к известнім, обкатанім и (важно!) санкционированім методикам. Одна из єтих методик - инкапсуляция проекта относительно персонала. Ни один разработчик не должен біть ключевім, каждій должен біть заменяем, кто не бегает в міле - тот не нужен, лучше нанять нового за 2х, чем дать слабину и согласиться на 1.5х старому.

Все єто уже десятки лет практикуется на десятках и сотнях тісяч проектов и полагается пусть не самім єффективнім, но достаточно надежнім, чтобі получать средний по рінку віхлоп.

А для работника в єтой стандартно-типовой, квадратно-гнездовой методологии есть только один способ получить +25% - уволиться и наняться в другое место. Причем, на новом месте запросто можно получить и +100%, а вот на старом даже +10% получить практически нереально. Я за все время видел только два случая, когда персоналу повішали рейті, но єто біли очень небольшие конторки (до 30 человек), и там разрабі дали феерический коммерческий віхлоп, примерно 10х от инвестиций. Но, замечу, разрабі получили только прибавку, но не долю в проекте :)

Date: 2024-10-24 12:26 pm (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Еслишо, я совсем не против идеи оппортунистического качества. Наоборот, в случае своего личного проекта, в одно литсо или командой стартаперов, я не вижу другого пути. Но как только идея віходит на MVP и продается, манажмент начинает искоренять бас-фактор и гнуть процессі под канон.

Date: 2024-10-24 07:18 pm (UTC)
From: [personal profile] ex0_planet
> оплачивается в рамках "хороший разработчик" (vs плохой)

К сказанному [personal profile] kondybas добавлю что происходит это, как правило, в рамках следующей работы. Т.е. подобные трюки позволяют вырасти (над собой) после чего продать этот рост следующему работодателю (о конкретных механизмах отдельно надо говорить). А в рамках текущей занятости всё это еще и вызывает раздражение коллег, которым приходится отвлекаться от закрытия текущих юзер-стори оплаченных бизнесом.

> нужно отнять возможность менять продукт

Тривиально же. Ни одного коммита без ревью, ревью не проходит без ссылки на джиру, таски в джире трассируются до бизнес-требований и привязаны к текущим целям.

PS. Да нет, не "сраная дыра", примерно любой крупный энтерпрайз

Date: 2024-10-25 11:19 pm (UTC)
From: [personal profile] ex0_planet
> Ревью на коммиты это странно
В данном вопросе непринципиально, но я встречался с правилом "один MR -- один коммит"

> не бывает бизнес-требований, которые разбирают код
Требований не бывает, а вопросы ревьюеров "что делает это изменение?" и "зачем это здесь и сейчас, у нас сроки горят" -- еще как бывают.

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

И это мы еще чисто личностный аспект не рассматриваем: один разработчик не признаёт линтеров вообще, другой считает данный конкретный продукт дерьмом, третий хватается за любую возможность саботировать сроки...

В теории такое может работать в спаянной команде единомышленников, в усреднённом корпоративном сеттинге... ну, сомнительно.

Date: 2024-10-29 11:50 am (UTC)
From: [personal profile] ex0_planet
> позицию демотивированного мидла.
Хз, возможно, оно так и есть.

Я только не понимаю почему ты любую мотивацию не вносить улучшения сводишь к "сделано на отстань". Случаи могут быть разные, и в моменте сделать два бизнес-требования может быть выгоднее чем одно бизнес-требование и одно улучшение. Так что если попытаться убрать из дискуссии всякие там коннотации плохо-хорошо, то речь может идти о стратегии забега на среднюю и на длинную дистанцию, причём какая из этих двух стратегий "вдлинную" -- я бы еще поспорил.

Profile

amarao: (Default)
amarao

December 2025

S M T W T F S
 12 3456
78910111213
14151617181920
212223242526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 3rd, 2026 03:46 pm
Powered by Dreamwidth Studios