LINUX.ORG.RU
ФорумTalks

Стоимость строки кода в разных регионах и на удалёнке

 


0

1

Вопрос в контексте Agile разработки по ТЗ, которое может изменяться по ходу проекта. Нередко используют почасовую оплату за потраченное разработчиком время, а я предлагаю вместо этого в контексте поставленной задачи осуществлять биллинг за проделанную работу с помощью учёта количества строк кода, написанного для решения задачи.

Как думаете, сколько стоит качественный отлаженный DRY код в предметной области DevOps, соответствующий всем паттернам, best practices и т.п.?

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

Преимущества учета стоимости кода по количеству написанных строк в Agile-проекте

Учет стоимости кода по количеству написанных строк – подход, который периодически обсуждается в IT-среде, в том числе и в вашем прикреплённом обсуждении. Хотя в современной разработке этот метод считается спорным и не всегда применимым, у него есть определённые преимущества, особенно если речь идёт о специфических задачах (например, DevOps-скрипты, IaC, CLI-утилиты) и при правильной постановке процесса.

1. Прозрачность и простота расчётов

  • Лёгкость измерения: Количество строк кода – объективный, легко измеряемый показатель, который можно быстро получить с помощью инструментов анализа кода.
  • Понятная метрика для заказчика: Заказчик может видеть «осязаемый» результат работы, что важно для непогружённых в детали разработки людей.

2. Мотивация к эффективности

  • Фокус на результат: Такой подход мотивирует разработчика не растягивать задачи, а выдавать конкретный, измеримый результат.
  • Возможность сравнения: Можно сравнивать производительность между разными исполнителями или командами, если задачи типовые и стандартизированы.

3. Гибкость при изменении требований (Agile)

  • Простота пересчёта стоимости: При изменении требований (что часто бывает в Agile), можно быстро пересчитать стоимость, исходя из нового объёма кода.
  • Удобство для коротких итераций: В спринтах, где задачи дробятся на небольшие части, оплата по строкам может быть удобна для микрозадач (например, написание шаблонов, конфигов, скриптов).

4. Контроль качества (при правильной постановке)

  • Возможность учёта сложности: Если в стоимость строки закладывается качество (DRY, тесты, best practices), появляется стимул писать лаконичный и качественный код.
  • Быстрая оценка вклада: В проектах с большим количеством рутинных изменений (например, поддержка DevOps-инфраструктуры), этот подход позволяет быстро оценить вклад каждого разработчика.

5. Применимость к DevOps и инфраструктурным задачам

  • Стандартизированные задачи: В DevOps часто встречаются задачи, где результат – это скрипт или конфиг, и их объём хорошо коррелирует с трудозатратами.
  • Меньше риска «раздувания» кода: Если стоимость строки высокая и есть контроль качества (ревью, автоматические проверки), разработчики заинтересованы писать компактно и эффективно.

Важно!

  • Подход не универсален: Для сложных R&D-задач, архитектурных решений, оптимизаций, где ценность кода не в количестве, а в качестве и уникальности, этот метод не подходит.
  • Риски злоупотреблений: Без контроля качества возможен «честинг» – искусственное раздувание кода, копипаст, бессмысленные строки.
  • Лучше использовать в сочетании с другими метриками: Например, с оплатой за закрытие задач, code review, покрытие тестами и т.п.

Вывод

Учет стоимости кода по количеству строк может быть полезен в узких случаях – для стандартизированных, повторяющихся задач, особенно в области DevOps и инфраструктуры, при условии жёсткого контроля качества и прозрачных критериев оценки. В рамках Agile такой подход может упростить биллинг и сделать процесс более предсказуемым для обеих сторон, однако его не стоит рассматривать как универсальное решение для всех типов проектов.



Последнее исправление: sanyo1234 (всего исправлений: 5)
Ответ на: комментарий от sanyo1234

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

t3n3t
()
Ответ на: комментарий от sanyo1234

Я уже устал объяснять

Ну так возьмите среднюю ставку в час, разделите на средне количество строк которые вы пишете за час и получите цену строки кода. Вот только она все равно не будет отражать затраты на выполнение, отладку кода и тд.

Пример, написали вы скрипт по развертыванию. А он не работает, потратили 2 часа на отладку и выяснили что проблема не в коде, а условно в неправильной настройке сети в докере, причем делали этот докер образ не вы. Поменяли настройки- все заработало. Вопрос, вам как платить, построчно или по затраченным часам? Там разница в 3 раза.

Obezyan
()
Ответ на: комментарий от t3n3t

Как перестать орать?

Никак, в этом суть данного треда.

Obezyan
()
Ответ на: комментарий от Obezyan

Ну просто повторяете почти дословно то, что уже проговаривалось. Сизифов труд. Хотя лулзы еще присутствуют, да.

t3n3t
()
Ответ на: комментарий от Obezyan

Там разница в 3 раза.

Для небольшой задачи такое возможно.

А для задачи покрупнее, где используются промышленные чарты Bitnami и Strimzi маловероятно. И в большой задаче усредненная цена строки кода будет учитывать небольшие баги в тех или иных используемых компонентах, воркэраунды или их замену на другие компоненты.

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

sanyo1234
() автор топика
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от Obezyan

Ваша ошибка в том что вы почему-то считаете количество строк мерилом стоимости. В программировании мерилом стоимости выполненной задачи выступают две вещи:

Я не пытаюсь предложить количество строк кода в качестве единственно правильной метрики стоимости и уж тем более ценности кода.

Я лишь предллагаю использовать это для биллинга, как величину относительно релевантную (ессно при условии, что код качественный) к трудозатратам по сравнению с fixed price и в условиях, когда учёт затрат времени не подходит по тем или иным причинам.

Т.е. чтобы в результате получился хоть какой-то times & materials, а не пресловутый fixed price, что IMHO особенно важно для Agile проекта без фиксированного ТЗ как в случае Waterfall.

sanyo1234
() автор топика
Последнее исправление: sanyo1234 (всего исправлений: 3)
Ответ на: комментарий от sanyo1234

Речь о средней цене строки кода в проекте с сотнями или даже тысячами строк кода

Это показатель такой же информативный и ценный как средняя температура по больнице.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Это показатель такой же информативный и ценный как средняя температура по больнице.

Подразумевается средняя стоимость строки качественного DevOps кода для относительно небольших фриланс проектов.

sanyo1234
() автор топика
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от imul

Это какой-то детсадовский подход и ложные попытки нахитрить заказчика.

Не каждая буква в строке обходится одинаково.
Объясню на случае из персональной жизни.

Индунер-сетевик заказчика подходит и говорит, что у него OSPF не работает. Смотрю в его прекрасные чёрные глаза, спрашиваю есть ли аутентификация. Подтверждает, что есть. Говорю, чтоб убрал пробел с конца строки с паролем. Убирает, работает.

Сколько стоило убрать этот пробел?
(Запиши ответ на бумажку.)

Продолжение истории.
Присылает письмо: вот у меня теперь логи сыплются вот такие. Смотрю, там ASAшка сообщает, что дропает пакеты.
Ну, правильно, так и должно быть – заработал OSPF, пошёл трафик, ASAшка его режет.
А в это время весь тырпрайзный опс начинает всё более сердито жужжать.
Потому что чё-то сеть похоже отвалилась по-взрослому.
Ну, ты понял, да?

Вопрос со звёздочкой: сколько стоило не убирать этот пробел?
Вопрос с двумя звёздочками: как посчитать добавленные и НЕ добавленные пробелы?

frob ★★★★★
()
Ответ на: комментарий от sanyo1234

для относительно небольших фриланс проектов.

Вот на это я и намекал и этого не было в ОП-посте.

t3n3t
()
Последнее исправление: t3n3t (всего исправлений: 1)
Ответ на: комментарий от frob

Это кейсы поддержки по фиксингу тех или иных дефектов.

А я рассматриваю разработку DevOps проекта от 1000 строк.

Предложение по коммутатору возможно неудачное в этом контексте.

sanyo1234
() автор топика
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от sanyo1234

Подразумевается

Размер больницы значения не имеет. У меня для тебя два стула варианта: либо ты шизик и не понимаешь какие показатели важные, а какие нет, либо школьник который хочет поднять себе самооценку тем что «написал 10 строчек кода за 1000$» (а трахался над этим месяц).

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от sanyo1234

А в смысле у тебя даже такого нет? Тогда первый вариант.

no-such-file ★★★★★
()
Ответ на: комментарий от Obezyan

Мальчишка-газетчик, не торопясь, швырял в него банановыми корками и приговаривал: «И не хочется, да нельзя упускать такой случай!» (с)

frob ★★★★★
()
Ответ на: комментарий от sanyo1234

Т.е. чтобы в результате получился хоть какой-то times & materials, а не пресловутый fixed price, что IMHO особенно важно для Agile проекта без фиксированного ТЗ как в случае Waterfall.

С каких пор ставка в час стала fixed price?

Obezyan
()
Ответ на: комментарий от sanyo1234

А для задачи покрупнее, где используются промышленные чарты Bitnami и Strimzi маловероятно. И в большой задаче усредненная цена строки кода будет учитывать небольшие баги в тех или иных используемых компонентах, воркэраунды или их замену на другие компоненты.

Ахахаха, скупая обезьянья слеза скатилась по небритой щеке системного архитектора, от умиления.

Obezyan
()
Ответ на: комментарий от sanyo1234

Подразумевается средняя стоимость строки качественного DevOps кода для относительно небольших фриланс проектов.

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

Obezyan
()
Ответ на: комментарий от Obezyan

Я вам пытаюсь объяснить, что затраты на решение небольших проблем работоспособности тех или иных компонентов могут быть заложены в стоимость строк кода. При этом хотя бы нормально учитываются затраты в случае изменений ТЗ в условиях Agile разработки и без повремённого учёта работ.

sanyo1234
() автор топика
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от Obezyan

С каких пор ставка в час стала fixed price?

в условиях, когда учёт затрат времени не подходит по тем или иным причинам.

sanyo1234
() автор топика
Ответ на: комментарий от sanyo1234

По чьёму определению?

По логическому определению. Качественный код пишут разработчики с уровнем синьор и выше.

Девопсы пишут код на уровне джунов, оч хорошие девопсы - на уровне мидлов и то, после пары-тройки лет опыта, когда уже знают что такое проверка граничных условий.

Obezyan
()
Ответ на: комментарий от Obezyan

Если экстраполировать ваше заявление на всех девопсов, то CNCF софт, написанный любыми девопсами, по определению некачественный?

sanyo1234
() автор топика
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от sanyo1234

Если написан именно девопсами, а не инженерами, то да. CNCF это вообще не про качество, а про аутсорс инфры.

Obezyan
()

вчера строки на рынке были по пять, но большие! а сегодня по три - но маленькие!

те, по пять вчера, были ну ооочень большие! а сегодня маленькие, но по три.

alysnix ★★★
()

Где вообще платят «за строки»? Разве что при переписывании кода с наивного на идиоматический иногда кажется что авторам за строки платили, а не за необходимое и достаточное решение.

slackwarrior ★★★★★
()
Ответ на: комментарий от Obezyan

CNCF это вообще не про качество, а про аутсорс инфры.

Я так понимаю, обезьяна умеет делать намного лучшие деплои без CNCF софта.

sanyo1234
() автор топика
Ответ на: комментарий от Dimez

Я крупный руководитель, навожу адресную порчу на видеонаблюдение, zfs, поднимаю давление через интернет и 20 лет слежу за одним гражданином, заставляя релоцироваться в США.

Нападения работорговцев (комментарий)

sanyo1234
() автор топика
Ответ на: комментарий от sanyo1234

Откуда такая уверенность

Опыты. На людях.

что мешает платить за строки и закрытие задач, а не за время

гугл тайм-ту-маркет

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

гугл тайм-ту-маркет

Сомневаюсь, что при других способах учёта затрат получится быстрее, а качество скорее всего окажется хуже особенно при ошибках в оценке для fixed price.

sanyo1234
() автор топика
Ответ на: комментарий от alysnix

те, по пять вчера, были ну ооочень большие! а сегодня маленькие, но по три.

Причём тут отдельные девиации, если речь о средних показателях.

sanyo1234
() автор топика
Ответ на: комментарий от sanyo1234

IMHO первой она слетает у тех, кто работал в бодишопах типа тебя.

Точно так же можно сказать, что недобросовестные кодеры и/или бодишопы могут накручивать кодочасы? Им ведь выгоднее потратить как можно больше времени и получить большую оплату за большее количество часов, если руководстоваться такой логикой?

t3n3t
()
Ответ на: комментарий от slackwarrior

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

При этом его единственная аргументация перед заказчиком - это баззворды типа DRY и best practices, которые являются конвенциональными, а не объективными критериями.

t3n3t
()
Ответ на: комментарий от t3n3t

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

Ничем не хуже кодочасов при условии качественного кода.

sanyo1234
() автор топика
Ответ на: комментарий от t3n3t

При этом его единственная аргументация перед заказчиком - это баззворды типа DRY и best practices, которые являются конвенциональными, а не объективными критериями.

Этож каким надо быть глупым, чтобы не считать DRY одним из объективных критериев качества кода?

DRY имеет объективные преимущества в разработке программного обеспечения, которые можно измерить:

Снижение количества ошибок при обновлении кода (когда изменения нужно вносить только в одном месте)
Улучшение поддерживаемости кодовой базы
Сокращение времени на внесение изменений
Уменьшение объема кода, что облегчает его понимание

Принцип DRY основан на объективных преимуществах, а не просто на соглашениях. В контексте обсуждения с заказчиком, ссылка на DRY может быть вполне обоснованным аргументом, если разработчик может объяснить конкретную пользу в данном случае, а не просто использовать термин как модное слово
sanyo1234
() автор топика
Ответ на: комментарий от t3n3t

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

А мне какая разница, является или нет?

sanyo1234
() автор топика
Ответ на: комментарий от sanyo1234

Этож каким надо быть глупым, чтобы не считать DRY одним из объективных критериев качества кода?

Это ж на каких нейролептиках надо сидеть, чтобы считать лишь один из паттернов разработки объективным? Не говоря уж о вообще представлении об объективности. Я термин «конвенциональный» не просто так употребил.

Нормализованные базы данных - это хороший паттерн. Уместен ли он в 100% случаев, чтобы его считать объективно лучшим?

t3n3t
()
Ответ на: комментарий от sanyo1234

А мне какая разница, является или нет?

Понятия не имею, я не тебе это писал. Мне нет никакого дела есть тебе разница или нет.

t3n3t
()
Ответ на: комментарий от t3n3t

Это ж на каких нейролептиках надо сидеть, чтобы считать лишь один из паттернов разработки объективным?

Это твои очередные «фантазии» тролля про лишь один критерий?

sanyo1234
() автор топика
Вы не можете добавлять комментарии в эту тему: только для зарегистрированных, score>=50.