6

Я ищу реальные цифры и опыт, пожалуйста, не принимайте это слишком субъективно:Расчет, сколько времени вы можете сэкономить, оценивая код, который вы пишете в год

В поисках чего-то еще, Я happened on an interesting statement, который частично гласит следующее:

[...] в среднем по стране составляет 9000 строк кода в год на одного человека [...]

. 210

Я пишу много кода, но не полный рабочий день. Когда я оглядываюсь назад на свои проекты прошлого года, и я делаю (очень) грубый подсчет (считая только строки кода, никаких комментариев или белых строк), я прихожу примерно к 19 000 долларов в год, которые превращают его в проект. Если я смогу автоматизировать части этого, я мог бы вычесть прибыль вовремя и денег.

Для оценки экономии времени для крупных проектов мне нужны средние значения. Сколько строк кода делает человек писать через год, в среднем, на C# (или на другом языке выбора)? И, глядя на свою собственную ситуацию, считаете ли вы, что ваш написанный вручную код может (частично) быть автоматизированным и с какой выгодой?

+9

10 линий сборки не то же самое, что 10 строк C не то же самое, что 10 строк Ruby. –

+0

Просто небольшое замечание: кто-нибудь знал, что ошибка OS/2 vs Windows (разрыв IBM против Microsoft) была частично результатом того, что IBM измерила производительность по линиям кода, что разочаровало программистов Microsoft? http://en.wikipedia.org/wiki/OS/2#Breakup – Abel

+1

Обязательный xkcd: [1] (https://xkcd.com/1205/) [2] (https://xkcd.com/1319/) [3] (https://xkcd.com/1445/). – user4157124

ответ

3

Во-первых, строки написанного кода плохо коррелируют с фактической производительностью. По крайней мере, на мой взгляд, если вы хотите измерить и/или оценить производительность, то функциональные точки являются более эффективным измерением. Во-вторых, когда показатель изменяется в широком диапазоне, среднее значение обычно означает очень мало. В таком случае геометрическое среднее обычно означает больше, чем среднее арифметическое, но без (по крайней мере) чего-то относительно отклонения/стандартного отклонения, это все еще не означает многого.

Я также хотел бы отметить, что существуют довольно сложные модели, которые подверглись существенным исследованиям и даже измеряли реальные проекты, чтобы получить хотя бы некоторое представление о том, что их результаты коррелируют с реальностью.Например, модель COCOMO II, как правило, дает гораздо лучшие результаты, чем просто использование строк кода за единицу времени. Есть хотя бы один free online implementation (Edit: глядя на него, теперь это позволяет использовать LoC или функцию, основанную на точках). Существуют также такие инструменты, как SoftStar и Function Point Modeler), которые сочетают в себе модель COCOMO-like с функциональными точками, чтобы получить то, что кажется (по крайней мере для меня), чтобы быть довольно солидными результатами.

+0

Очень интересно и хорошо написано. Благодарю.Мне особенно нравится указатель на Function Points, который мне нужен, когда PM'ing (часть) представляет собой огромный проект голландского правительства, где все измеряется в FP (и это сработало: если вы добавили к нему коэффициент 2.4, но это длинная история ... ;-) – Abel

+0

@Abel: коэффициент 2,4 на самом деле немного лучше, чем большинство методов, на которые можно надеяться. Если вы попытаетесь основать вещи на строках кода, вам, как правило, повезет, что вы будете намного ближе, чем в 5 раз, а выходить в 10 раз не так редко. –

+0

Принимая ваш ответ, поскольку он единственный, кто действительно относится к теме использования строк кода в качестве измерения для планирования проекта или оценки улучшения улучшения. Я понимаю, что практика не всегда хороша и может быть злой. В ситуациях, когда нужно использовать его, или где лучше всего изобретать лучшие методы, зная, что его недостатки - большая польза и необходимое зло. – Abel

5

18000 будет составлять до 36 строк кода в день.

Всего 36 строк кода в день, в чем проблема? Проблема заключается в отладке и перезаписи кода.

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

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

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

НЕ КАЖДЫЙ автоматизация ввода кода - если можно, вы делаете это неправильно!

Другой способ подумать об этом - каждая строка создаваемого кода должна быть отлажена и сохранена. Почему вы пытаетесь придумать способы дать всем БОЛЬШУЮ работу, когда вы можете просто создать полностью факторизованный код (ввод полностью факторизованного кода не может быть автоматизирован - в значительной степени по определению).

+0

(Я занимался только несколькими днями/месяцами, ежедневная реклама отличается) Я думаю, у вас есть очень интересные моменты против автоматизации. Использование программного обеспечения автоматического преобразования данных позволяет мне записывать POCOs и общие классы (архитектура S # arp). Внедрение INotifyPropertyChanged для каждого свойства может быть легко автоматизировано. Эндрю Хант в прагматическом программисте? Говорит «автоматизируйте, где вы можете». Хорошая автоматическая генерация кода должна сэкономить время, но должна быть проверена сама по себе. – Abel

+0

Кстати, я, по-видимому, вчера немного поспал, или вы: 19000/36 = 527 дней? ;-) – Abel

+0

Да, я думаю, что математика кажется действительно выключенной. Когда я разделяю LOC в товаре для доставки на человеко-часы, потраченные на него, я, как правило, получаю что-то в области 1-4 строки в день. Во всяком случае, устранение шаблона вместо его автоматизации должно быть основной целью - это разница между нанесением вреда вашему проекту и его помощью. Я почти всегда был в состоянии найти способ избавиться от него - например, мне действительно не нравятся объекты доступа и заменяют их структурами данных или чем-то подобным. Я просто постоянно ищу практики, которые позволяют мне писать факторизованный код. –

3

Это тип показателя, который обсуждался в Mythical Man Month. Оценка проектов в Man-Days/Months/Years или подсчет строк кода как производительности metirc гарантирует неточность в отчетности.

+0

Ах, моя любимая книга! Да, я все еще люблю МММ. Любой отчет, а не только для него, имеет коэффициент неточности. Знание фактора помогает хорошо интерпретировать отчет. – Abel

-2

Это скорее вопрос BS, фактически. Даже преданные SLOC признают, что оценки производительности SLOC действительны только в аналогичных средах. Это зависит не только от языка программирования, но и от промышленности, среды разработки, приложения и т. Д.

В том, что номера SLOC стоят всего того, что только в одной команде разработчиков работают над аналогичными проектами.

+2

Я бы не стал называть вопрос BS в тот момент, когда ответ «не делай этого, потому что ...». Хорошие советы часто приветствуются. В первый раз, когда я исправил свою шину, у моего отца было много вопросов о БС. Рад, он ответил им, и я смог учиться. Я не знал о SLOC, я кое-что узнал. – Abel

+1

Хуже того, производительность не обязательно напрямую связана с LOC. Каждый видел пятьдесят функций линии, которые кто-то написал, потому что они не могли видеть простое пятилинейное решение. –

1

Я считаю, что курс для LOC сильно зависит от technical debt в проекте.

У меня есть проект (SQL), который составляет 27KLOC (плюс еще 4K для поддержки). Работая над этим кодом, более 7 месяцев я добавил в проект 3K net new LOC, около 14KLOC, написанных только для выборочного тестирования (тестирование для изоляции аномалий, а не модульных тестов).

В зависимости от того, как вы измеряете, я пишу 29KLOC/year ((3K + 14K)/7months * 12months), но производит только 5KLOC/year (3K/7months * 12months).

Рассматривая код (27KLOC) в качестве долгового обязательства, у нас есть код, который генерирует 7% (2KLOC) в металическом коде ежемесячно или 88% (24KLOC) в год.

Предполагая, что я могу продолжать получать целый 29KLOC/год, и если стоимость поддержания кода остается на уровне 88%/год, мой личный предел проекта составляет 33K строк кода. Помимо этого, я буду тратить все свое время на выплату процентов по моему техническому долгу, написание кода для раздачи и создание чистого нуля LOC.

К счастью, последний 3KLOC был рефакторингом, который должен снизить мою процентную ставку.

+0

+1 интересный анализ, добавляет что-то к обсуждению и моей мысли по этому вопросу, спасибо! – Abel

Смежные вопросы