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 ★★★★★
()
Ответ на: комментарий от 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)