Какова рентабельность использования инструмента сборки, такого как ant или nant? - PullRequest
3 голосов
/ 28 мая 2010

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

Почему бы вам не использовать инструмент для сборки?

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

Ему действительно нравится работать в команде с большим количеством программистов, но он не понимает более широкой картины того, что необходимо изменить в процессе сборки, чтобы работать с более крупной командой; (т. е. защитное программирование / модульное тестирование вашего кода, наличие базы данных ошибок, программирование модульных библиотек и использование вложенных репозиториев для хранения модулей в системе управления версиями .

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

Ответы [ 4 ]

2 голосов
/ 28 мая 2010

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

Для таких инструментов, как Ant и Maven (я бы использовал maven), у вас нет лицензионного сбора, но вам необходимо приобрести навыки на инструментах, которые могут стоить денег.

Ключевые преимущества этих автоматизированных инструментов:

  1. Ускорение при посадке в члены команды;
  2. Документировать процесс сборки;
  3. Улучшение качества с помощью автоматических тестов;
  4. Обеспечение согласованной сборки;

Для каждого из них вы должны поставить ценник. Вы можете утверждать, что хорошая IDE будет выполнять сборку и тестирование для вас. Но это изменится от пользователя к пользователю. Допустим, требуется 4 часа, чтобы у нового разработчика была действительная среда сборки, и кто-то помогает. Это будет стоить X, что было бы значительно уменьшено автоматизированным процессом. Добавьте к этому, сколько стоит исправление ошибки (не все будут исключены процессом сборки, но, скажем, 30%). Эти вещи являются ценой.

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

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

1 голос
/ 29 мая 2010

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

  • планирование (программное или иное)
  • дизайн / разработка
  • ведение записей (например, время для отслеживания истории ошибок / источника / бизнес-администратора)
  • монотонные задачи, которые инструмент может выполнять (резервные копии?)
  • о себе с проблемами, которые инструмент может сделать для вас.

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

Возвращаясь к основанию вашего вопроса ... Например, если инструмент для сборки стоил 1000 долларов, ваше время составляет 100 долларов в час. Мы не будем учитывать стоимость обучения инструменту, поскольку намереваемся использовать инструмент сборки несколько раз.

Если вам нужно потратить 0,5 часа с инструментом для создания окончательной среды сборки, математика говорит:

Ваша стоимость с инструментом = 1000 $ + (0,5 x 100 $) = 1050 $

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

Ваша стоимость без инструмента = 12 x 100 $ = 1200

Или, может быть, пример, который немного более реалистичен, вы можете увидеть 6 предстоящих проектов. Каждый проект займет 0,5 часа, чтобы настроить с помощью инструмента сборки, или 3 часа без.

Ваша стоимость с инструментом = 1000 $ + (6 x (0,5 x 100)) = 1300 $ Ваша стоимость без инструмента = 6 х (3 х 100) = 1800

Похоже, что инструмент для сборки в этих сценариях будет рассматриваться как стоящее вложение.

Надеюсь, это поможет ...

1 голос
/ 28 мая 2010

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

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

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

Так что для меня вопрос даже не о рентабельности, а о здравомыслии. На всякий случай вот небольшая цитата (см. Также Three Strikes And You Automate ):

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

1 голос
/ 28 мая 2010

Муравей не просто , очевидно, выгодно в каждом магазине программирования. Сколько интеграции вовлечено в ваш процесс сборки? Какой инструмент (ы) вы используете? Какой сервер CI вы выбрали?

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

В нашем случае мы используем Nant для создания наших баз данных, потому что для этого требуется множество шагов на уровне командной строки. Мы не используем Nant в нашем программном обеспечении .NET, потому что VS 2010 и TestDriven.Net обеспечивают гораздо большую чувствительность к контексту, чем любое другое решение для сборки, а наш превосходный CI-сервер TeamCity изначально понимает процесс сборки Visual Studio.

...