Когда вы обычно пишете программный модуль самостоятельно, а не покупаете существующий продукт?

13

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

stanigator
источник
А как насчет варианта № 3 «использовать библиотеку с открытым исходным кодом»? На самом деле это может быть компромиссом, потому что вы можете настроить его под свои нужды.
Натан Лонг
@NathanLong: это хороший момент, но я ожидаю, что если ОП задает этот вопрос, значит, интересен только этот сценарий. Кроме того, продукт может быть с открытым исходным кодом и по-прежнему продаваться в коммерческих целях, поэтому я думаю, что вы имели в виду «свободное программное обеспечение». И в зависимости от типа лицензии, вы не обязательно можете подстроить ее под свои нужды (например, если вы планируете перепродажу, и она несовместима), так что есть много разных факторов, которые нужно посмотреть в этом направлении. (не говоря, что это плохое предложение, хотя)
Хайлем

Ответы:

17

Я полагаю, это слишком упрощенно, но в целом это справедливо:

В личной среде

  • Мне весело писать код?
  • ИЛИ я узнаю что-то из кода?

И:

  • У меня достаточно времени, чтобы закодировать это?

Если да, то я предпочитаю написать это, чем купить.

В профессиональной среде

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

haylem
источник
1
+1 очень важно время от времени кодировать некоторые вещи самостоятельно, иначе вы просто соедините одну вещь с другой, как интернет-сантехник. Вы также должны сбалансировать «чему-то научиться» и определить, хотите ли вы / нужно этому чему-то научиться.
Гари Роу
2
@GaryRowe: спасибо. Нужно не шутить над «Интернет-сантехником», текущими тенденциями в Интернете и рынком труда веб-разработчиков. Arggghhhh, это довольно заманчиво, хотя ...
Хайлем
В профессиональной среде это не только затраты на разработку, но и затраты на текущее обслуживание и время, затраченное на разработку.
Гилберт Ле Блан
1
@GilbertLeBlanc: правда, Гилберт. Я вроде имел в виду сквозную стоимость, но я уточню, как вы предложили, поскольку это действительно должно быть о совокупной стоимости владения продукта.
Хайлем
9

Что нужно учитывать при принятии решения о покупке или покупке

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

  • Наличие подходящего товара. Для многих бизнес-процессов просто не существует стандартного готового программного обеспечения. Или есть что-то доступное, но оно не подходит, потому что содержит 100 функций, из которых вам нужно всего лишь 3 в несколько ином виде, в то время как 2 другие важные функции отсутствуют.

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

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

Док Браун
источник
8

Все, что связано с криптографией. Существует 100 000 способов сделать это неправильно и подвергнуть ваше программное обеспечение серьезным уязвимостям безопасности, и всего несколько способов сделать это правильно. Для этого нужен высокий опыт.

Питер Б
источник
+1 Смотрите также: programmers.stackexchange.com/q/175489/7167
Гари Роу
Это хороший момент, хотя я думаю, что есть много других вещей, которые также заслуживают того, чтобы попасть под ярлык «не шути с этим». Тем не менее, для личного использования (и до тех пор, пока нет никакого воздействия и это не для конфиденциальных данных), сделать снимок самому по-прежнему весело с крипто. Несколько лет назад я заново внедрил несколько шифров для развлечения и самообучения. Множество больших проблем, на которые можно было смотреть, было очень весело делать это и многому научиться.
Хайлем
Я бы не стал покупать крипто. Доверенные крипто-библиотеки обычно являются открытым исходным кодом или частью ОС. Я бы доверял своему собственному коду над большинством закрытых исходных библиотек. Я бы не использовал ни одну библиотеку, которая, по крайней мере, не публикует четкую и полную спецификацию того, как работает ее криптографический код.
CodesInChaos
@CodesInChaos довольно много коммерческих пакетов с «закрытым исходным кодом» дают вам исходный код.
Питер Б
На самом деле, я думаю, что проверенный код лучше, и если предположить, что злоумышленник не знает алгоритм, является ошибкой. Но почему вы вообще связываете это с криптографией?
Рамзи Кахил
0
  • большие затраты времени, наличие подходящего продукта >> купить продукт
  • личный интерес к технике или отсутствие продукта, отвечающего всем требованиям >>
    разрабатывать самостоятельно
bummi
источник
0

На личном уровне я развиваю странное сочетание того, что я хочу и что было бы интересно написать.

На профессиональном уровне @haylem дает хорошее общее представление о том, когда покупать, а когда писать. Я скажу, что есть огромный элемент, который упускается из виду: возможность. Для крупных компаний, на мой взгляд, часто имеет смысл написать основную линейку бизнес-приложений (а не все линейки бизнес-приложений), когда это делает предприятие более гибким. Покупка программного обеспечения сопряжена с дополнительными затратами, потому что тогда ваше предприятие (а не только ваши ИТ-специалисты) будут привязаны к тому, как поставщик будет смотреть на ваш домен.

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

Майкл
источник
0

Как и в большинстве других ответов, это решение о выгоде затрат:

  • Сколько будет стоить мне человеко-часов, материалов и т. Д., Чтобы передать этот проект собственному разработчику или внешнему подрядчику для разработки на заказ? (как правило, высокие; если учитывать их долю накладных расходов, плюс зарплату и льготы, опытный разработчик будет стоить вам около одного дня в день; может быть, немного больше или меньше в зависимости от задействованных финансов)
  • Сколько мне будет стоить купить известный продукт с полки? (Зависит от продукта; программы общего назначения, такие как текстовые редакторы, обычно дешевы, даже бесплатны, в то время как специализированные программы, такие как продукты проектирования схем, могут стоить миллионы)
  • Какие преимущества я получу от специально разработанного решения? (Как правило, индивидуальное решение ближе подходит вашему бизнесу и, следовательно, может автоматизировать или, по крайней мере, оцифровать его больше)

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

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

Keiths
источник
0

Я предполагаю, что вы спрашиваете в профессиональном, коммерческом контексте, и что мы говорим о большей части вашей системы, а не об одной библиотеке.

Сделать или купить против сделать или настроить

Существуют ситуации, когда ваша организация может использовать готовый продукт. Например, немногие люди написали бы свой собственный текстовый процессор - они используют MS Word, или OpenOffice, или что-то еще. То же самое для электронных таблиц. Обратите внимание, что вы можете «настроить» свой текстовый процессор своими собственными шаблонами или макросами, но люди не думают об этом как о настройке. Это просто «использование» текстового процессора, как они это видят.

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

Если вы знаете это с самого начала, значит, ваше решение - « Сделать или настроить» . Просто купить больше не вариант. И даже если сейчас нет таких требований, ожидаете ли вы, что ваши коллеги предложат их позже?

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