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

Я обязан перед тобой отчитываться?

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

Сделаю тебе одолжение

Тяжелый случай.

количество строк - одна на удаление незначащих (пустых и коротких) строк и одна на удаление комментариев, если тебе это так важно.

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

Я-то думал там и фильтрация по авторству коммитов хотя бы.

Вобщем, ясно/понятно. Девопсы нынче подсчетом LOC занимаются, вместо того чтоб CI/CD настраивать.

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

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

Комментарии на разных ЯП, удобнее было оформить отдельно. Думаешь - это попытка нагреть заказчика на лишнюю строку кода?

Вобщем, ясно/понятно. Девопсы нынче подсчетом LOC занимаются, вместо того чтоб CI/CD настраивать.

Несколько строк кода для подсчёта - это конечно сильнейшее отклонение проекта от CI/CD, хорошо подметил, не знаю, что и ответить …

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

Комментарии на разных ЯП, удобнее было оформить отдельно.

Я гляжу, по первому замечанию:

Т.е. в реальности то же самое, что я написал

вопросов не возникло.

Думаешь - это попытка нагреть заказчика на лишнюю строку кода?

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

Уже отмечал изначально, что работа девопса ну никак не может быть завязана на количество строчек кода. Впрочем, тут, судя по простыне в профиле, тот еще винигрет, даже вротпресс есть. И профиль на авито.

Не, все, я пас.

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

Уже отмечал изначально, что работа девопса ну никак не может быть завязана на количество строчек кода.

Даже если реальность с твоим утверждением не совпадает?

sanyo1234
() автор топика

Слёзы умиления от темы и комментариев.
Мне вот недели три назад человек звонил и просил помочь «обосновать перед заказчиком, что конфигурирование коммутатора стоит 5000 рублей». Прямо все полтора часа разговора перед глазами проплыли.

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

А ты не знал?
Его довольно долго не было, но я слыхал сейчас санатории-профилактории перепрофилировали в соответствии с более насущными приоритетами.
Вот видать какой-то Пилюлькин перекрестился, зажмурился, накарябал «в устойчивой ремиссии» и выписал
«as is, meaning there are no warranties, either express or implied, including those of merchantability and fitness for a particular purpose».

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

помочь «обосновать перед заказчиком, что конфигурирование коммутатора стоит 5000 рублей».

«В колониях немцы имеют богатый урожай на пшеницу,
а в Константинополе бакалея идет за половину даром.
Пуд маслин покупают в Константинополе за три рубля,
а продают их здесь по тридцать копеек за фунт…
Бакалейщикам стало хорошо, мадам Любка, бакалейщики
гуляют очень жирные, и если подойти к ним с деликатными руками,
так человек мог бы стать счастливым…»

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

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

А разве это не преступная деятельность?

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

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

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

Прямо все полтора часа разговора перед глазами проплыли.

Наверно, за это время можно было написать скрипт для его конфигурирования и посчитать стоимость по количеству строк в скрипте ? :)

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

Вот только конфиги эти давно написаны и залиты мной. А стоимость их так не считается. Знаешь анекдот про «стукнуть молотком - 1 рубль, понять куда стукнуть - 999 рублей»?

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

Вот только конфиги эти давно написаны и залиты мной. А стоимость их так не считается.

Что мешает их посчитать именно таким способом, если стоимость строки конфига будет релевантной ожидаемому профиту?

Знаешь анекдот про «стукнуть молотком - 1 рубль, понять куда стукнуть - 999 рублей»?

Сокращение вакансий ИТ специалистов (комментарий)

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

Что мешает их посчитать именно таким способом

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

Одно время индусы так и писали, у них была построчная оплата. Ребята быстро смекнули что за доширак из кода больше платят и вместо софта стало выходить хрючево уровня просто добавь карри. После чего затею свернули, а эффективных менеджеров которые до этого додумались - попячили.

Именно из этой истории пошло нарицательное «индусский код».

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

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

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

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

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

IMHO базовым должна быть порядочность исполнителя, а не способ учёта. Непорядочный и fixed цену может загнуть в 10-20 раз больше реальных затрат времени по рыночным ценам.

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

Именно из этой истории пошло нарицательное «индусский код».

Если review кода показывает, что он не является «индусским», то причём тут «индусский» код и якобы желание увеличить стоимость решения задачи сверх её рыночной стоимости?

Если стоимость строки кода обозначить одной копейкой, то способ учёта за строки кода без повторов кода сразу станет приемлемым для заказчика? IMHO нужно определиться с правильной стоимостью строки качественного кода, а не пытаться натягивать разные случаи читерства на мой способ учёта стоимости разработки.

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

А можно было захардкодить версии зависимостей в докерфайле (как пример) и периодически обновлять. Вот столько строк поменялось, все длиннее 7 символов, давайте бабло, бгг.

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

Опять поиск способов накрутки клиента, хотя многократно уже объяснял, что нет такой цели.

Версии в докерфайле меняются относительно редко и никак не коррелируют с общим количеством строк кода в проекте.

Походит на фантазии школьного хулигана, а как бы ещё напакостить в этой ветке.

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

Что мешает их посчитать именно таким способом, если стоимость строки конфига будет релевантной ожидаемому профиту?

Профиту кому? И почему их нужно считать? Опять. И с какого перепуга именно так? Они посчитаны. Ты никогда не работал по сметам?

Сокращение вакансий ИТ специалистов (комментарий)

Вижу, но очевидно не в коня корм.

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

И почему их нужно считать? Опять. И с какого перепуга именно так?

Просто один из вариантов расчёта стоимости, только и всего?

IMHO особенно полезно, если потом придётся писать новые конфиги, с изменениями (новые строки кода).

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

Один из главных пунктов психических отклонений - непонимание шуток, сарказма и гипербол. Ты уже дважды продемонстрировал это в треде, хотя тред на половине одной страницы.

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

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

Почти все обсуждения сквозят этим штампом

Это не штамп, это реальная история, которая показал несостоятельность вашей идеи.

Если review кода показывает

Кто делает ревью кода и платят ли ему за это построчно? :)

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

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

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

Это не штамп, это реальная история, которая показал несостоятельность вашей идеи.

Ещё раз, несостоятельность идеи в общем случае, когда возможно читерство, не значит несостоятельность в случае отсутствия читерства?

Кто делает ревью кода и платят ли ему за это построчно? :)

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

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

Просто один из вариантов расчёта стоимости, только и всего?

Лол, ты знаешь у микротиков чем отличается «export» от «export compact» например? А это будет одна и та же конфигурация.
Ну и опять же, ну не знает сметчик сколько будет строк в конфиге коммутатора. Он что такое коммутатор не всегда знает.

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

Просто один из вариантов расчёта стоимости, только и всего?

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

  1. Затраченное время на решение задачи. Отсюда ставки в час и зарплаты в месяц.
  2. Необходимый уровень знаний, навыков и опыта исполнителя. Отсюда градации ставки, джуну и синьору за одно и тоже время платят по разному.

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

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

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

Это ещё 10+ лет назад обсуждалось даже в МВД (существования индуцирующих третьих лиц), но некоторые вероятно сообщники индуцирующих всё пытаются сделать вид, что жертва пситеррора сама виновата в своих проблемах.

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

Затраченное время на решение задачи. Отсюда ставки в час и зарплаты в месяц.

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

Что мешает пересчитать это для отдельно взятого исполнителя на стоимость строк его кода, если он не занимается написанием алгоритмически сложного кода?

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

Там разноработчик, принимающий заказы через авито, какое еще ревью? :)

Ну, каждый крутится как может, кто я такой чтобы осуждать. Я сам, когда-то в прошлой жизни, будучи маленькой обезъянкой, на ODesk-е работал. С трекингом времени и скринами раб стола. И ничего, нормально, только выправка строже…

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

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

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

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

А вот эти индуцирующие психотеррористы они сейчас с тобой в одной комнате?

Если верить @vaddd, то по его словам якобы да, но я таких подробностей достоверно, увы, не знаю …

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

Что мешает пересчитать это для отдельно взятого исполнителя на стоимость строк его кода, если он не занимается написанием алгоритмически сложного кода?

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

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

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

Ну куда нам, приматам :)

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

То что ценность строк неодинакова. Строка с обявлением переменной и строка расчета индекса грида/блока/треда при работе с матрицей имеют на порядки разную сложность. … Те написание этих строк займет сильно разное время, а платить за них будут одинаково.

Я уже устал объяснять, что речь:

  1. Об относительно алгоритмически несложном DevOps коде в т.ч. для IaC.

  2. О сотнях строк кода, где сложность кода в его отдельных фрагментах усредняется.

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

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

«Что мешает пересчитать это с учётом разной ценности строк? А? Съел?»

Инфляция стоимости строк с объявленными константами.

Жизни #ifdef важны!

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

Он до июня не ответит.
Но, ты так и не ответил на Стоимость строки кода в разных регионах и на удалёнке (комментарий)
Проблема ценообразования вот именно в таком случае, что все эти строки, часы и тд это именно стукнуть молоточком за рубль. И заказчик именно к этому и притягивает. А 999 рублей в виде проектирования логики, зон, сегментов сетей, адресации, роутинга - они вообще не перечислены в смете в виде работы. Они растворены в перечисленных сметных видах работ в ведомости. А вот теперь заказчик хочет заплатить (причём не мне, лол) посчитав количество строк.

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

не вникал в тонкости девопса, но сдается, что ИИ в нее сможет запросто.

потому стоимость строки должна тут стремится примерно к нулю.

короче, в ближайшие тысячу лет тяжелый физический труд и утехи будут оплачиваться по верхней ставке. а все остальное - по нижней.

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

В общем, лапшедевопсов на ии заменят первыми. Можно расходиться.

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

Короткие строки я убрал из биллинга из следующих соображений:

  1. Мне нравится разделять логические фрагменты даже внутри коротких блоков кода пустыми строками

  2. Мне нравится использовать блоки типа { и } даже там, где они опциональны (например, в C# и Bash для однострочных блоков)

  3. В виде скидки для закрывающих ключевых слов в Bash типа fi, esac, etc.

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

короче, в ближайшие тысячу лет тяжелый физический труд и утехи будут оплачиваться по верхней ставке. а все остальное - по нижней.

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

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

учись на грузчика, всё с вами понятно …

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

alysnix ★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)