Статьи

Сколько вы платите за строку кода?

Да, я знаю, «строка кода» (LoC) — очень неправильный показатель . Об этом написано множество статей , а также известные книги. Однако я хочу сравнить два проекта, в которых я недавно принимал участие, и обсудить некоторые очень интересные цифры.

Проект № 1: Традиционно расположен в одном месте

Первый проект, в котором я участвовал, был выполнен традиционно расположенной группой программистов. Их было около 20 (не считая менеджеров, аналитиков, владельцев продуктов, мастеров SCRUM и т. Д.). Проект представлял собой веб-аукцион с довольно высоким трафиком (более двух миллионов просмотров страниц в день).

Базовый размер кода составлял около 200 тыс. Строк, из которых 150 тыс. Были PHP, 35 тыс. JavaScript и остальные CSS, XML, Ruby и другие. Я считаю только непустые и cloc.pl строки кода, используя cloc.pl

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

Бразилия (1985), Терри Гиллиам

Бразилия (1985), Терри Гиллиам

Команда была расположена в одном офисе в Европе, где все работали «с девяти до пяти». У нас были встречи, обеды, настольные чаты и много других неформальных коммуникаций. Все задачи отслеживались в JIRA.

Проект № 2: Чрезвычайно Распределенный

Второй проект представлял собой продукт Java с открытым исходным кодом, разработанный чрезвычайно распределенной командой из примерно 15 разработчиков. У нас не было ни чатов, ни каких-либо других неофициальных сообщений. Мы обсуждали все в вопросах Github. База кода была значительно меньше, всего около 30 тыс. Строк, из которых около 90% составляли Java, а остальные — в XML.

Храм Шаолинь (1982 г.) Чан Синь Йен Храм Шаолинь (1982 г.) Чан Синь Йен

Храм Шаолинь (1982 г.) Чан Синь Йен Храм Шаолинь (1982 г.) Чан Синь Йен

Зрелость развития

Оба проекта размещали свои кодовые базы на Github. Обе команды развивались в функциональных ветках — даже для небольших исправлений.

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

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

Покажи мне деньги

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

Теперь посмотрим на цифры.

Первый проект (тот, который был размещен совместно) платил примерно 50 000 евро в год хорошему разработчику, что составляло около 5600 долларов в месяц или 35 долларов в час. Второй (чрезвычайно распределенный проект) платил 20-35 долларов в час за выполненные задачи только в соответствии с одним из принципов XDSD .

Первый за три месяца произвел 59 тыс. Новых строк и удалил 29 тыс. Изменений в master ветке, что составляет 88 тыс. Строк кода. В результате проекта было произведено около 10 000 человеко-часов для производства этих линий (20 программистов, три месяца, 170 рабочих часов в месяц), что составляет около 350 тыс. Долларов. Поэтому проект обошелся колоссально:

$ 3,98 за линию

Второй проект за тот же трехмесячный период произвел 45 тыс. Новых линий и удалил 9 тыс., Что в итоге составляет 54 тыс. На выполнение этой работы мы потратили всего 7 тысяч долларов (примерно 350 рабочих часов на 650 заданий). Таким образом, проект стоит всего лишь:

¢ 13 за линию

Это также означает, что программисты писали примерно 270 строк в час или более 2000 в день. Мифический человеко-месяц говорит о 10 строках в день, что в 200 раз меньше, чем мы видели в нашем проекте.

350 тысяч против 7 тысяч, 3,98 против 13 фунтов? Что вы думаете?

Как проверить числа?

Если вы любите, я использую этот скрипт для получения чисел из Git:

1
2
git log "--since=3 months" --pretty=tformat: --numstat \
  | gawk '{ add += $1; subs += $2; } END { printf "added: %s removed: %s\n",add,subs,loc }' -

Вы можете проверить номера для второго проекта здесь, на Github: jcabi / jcabi-github .

Вывод

Что я пытаюсь выразить этими цифрами, так это то, что распределенное программирование гораздо эффективнее, с точки зрения денег, чем совместно расположенная команда. Опять же, я слышу, как вы говорите, что «строка кода» не является правильным показателем. Но, давай, $ 0,13 против $ 3,98? В тридцать раз дороже?

Большой Лебовски (1998) Джоэл Коэн

Большой Лебовски (1998) Джоэл Коэн

Это больше не о метриках. Речь идет о предотвращении расточительных человеческих часов и огромной трате денег, которая приходит с ними?

Можем ли мы сделать то же самое?

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

И когда эти принципы действуют — вы платите в тридцать раз меньше.

Кстати, вот что люди говорят о своих проектах:

Ссылка: Сколько вы платите за строку кода? от нашего партнера JCG Егора Бугаенко в блоге « О программировании» .