Я пытаюсь найти обоснование вашего решения о том, когда и что делать. Я рад представить больше контекста, но сейчас я хочу сделать его общим.
Я пытаюсь найти обоснование вашего решения о том, когда и что делать. Я рад представить больше контекста, но сейчас я хочу сделать его общим.
Ответы:
Я полагаю, это слишком упрощенно, но в целом это справедливо:
И:
Если да, то я предпочитаю написать это, чем купить.
Если общая стоимость владения продуктом (включая разработку, тестирование, обслуживание, поддержку или любые другие связанные с этим расходы) выше стоимости продукта, и что рассчитанный возврат инвестиций не компенсирует эти затраты, то вы лучше купить его и двигаться дальше.
Что нужно учитывать при принятии решения о покупке или покупке
стоимость разработки / стоимость обслуживания против стоимости продукта / стоимость контракта на обслуживание: конечно, это очевидная вещь, но на самом деле это не единственная вещь. Например, если я собираюсь использовать программное обеспечение не только для своей компании, но и продавать его другим, то расчет выглядит совсем иначе
Наличие подходящего товара. Для многих бизнес-процессов просто не существует стандартного готового программного обеспечения. Или есть что-то доступное, но оно не подходит, потому что содержит 100 функций, из которых вам нужно всего лишь 3 в несколько ином виде, в то время как 2 другие важные функции отсутствуют.
Кто-то хочет стать зависимым от стороннего продавца? Особенно мелкие поставщики всегда предоставляют вам риск того, что продавец исчезнет с рынка в будущем, или дальнейшее развитие продукта не пойдет в нужном вам направлении. Для продукта, который находится под вашим собственным контролем, вы можете намного лучше ориентироваться в направлении разработки.
Когда мне нужно конкретное программное обеспечение, и что происходит быстрее: разрабатывать его самостоятельно или покупать что-то, адаптировать, пока оно не будет соответствовать моим процессам, и развернуть его? Покупка чего-либо с полки может показаться более быстрой, а иногда и более дешевой альтернативой, но я лично видел также сценарии, когда разработка программного обеспечения именно для нужд компании, в соответствии с существующими бизнес-процессами, экономила так много времени по сравнению с покупкой чего-либо и обучением нескольких сотни пользователей выполняют свою работу по-новому, чтобы затраты на разработку были ничтожны.
Все, что связано с криптографией. Существует 100 000 способов сделать это неправильно и подвергнуть ваше программное обеспечение серьезным уязвимостям безопасности, и всего несколько способов сделать это правильно. Для этого нужен высокий опыт.
На личном уровне я развиваю странное сочетание того, что я хочу и что было бы интересно написать.
На профессиональном уровне @haylem дает хорошее общее представление о том, когда покупать, а когда писать. Я скажу, что есть огромный элемент, который упускается из виду: возможность. Для крупных компаний, на мой взгляд, часто имеет смысл написать основную линейку бизнес-приложений (а не все линейки бизнес-приложений), когда это делает предприятие более гибким. Покупка программного обеспечения сопряжена с дополнительными затратами, потому что тогда ваше предприятие (а не только ваши ИТ-специалисты) будут привязаны к тому, как поставщик будет смотреть на ваш домен.
Для большинства вещей это не имеет значения. Ваша система учета не должна быть креативной. Ваш текстовый процессор будет таким же, как и любой другой. Но вещи, которые делают вас, могут быть лучше написаны дома, чтобы они могли адаптироваться к тому, что пытается сделать ваш бизнес.
Как и в большинстве других ответов, это решение о выгоде затрат:
Это сводится к тому, меньше ли цена, компенсируемая выгодами, разработанного на заказ решения, меньше, чем стоимость готового продукта.
Есть также альтернативные издержки для рассмотрения. Поймите, что они не должны быть включены в реальные затраты на разработку по сравнению с покупками, но в более широком мире вы должны их учитывать. Если ваши штатные разработчики работают над этим одним проектом, они не работают над любым другим проектом; это означает, что если в списке есть еще один проект, который каждый день стоит вам денег, он еще не завершен, он может быть более приоритетным, заставляя вас отложить или даже отменить пользовательскую разработку и перейти с готового пакета. Тем не менее, если этот проект не выполняется, значит, ваш штат сотрудников сидит в своих руках, затраты на разработку снижаются; вы платите своим разработчикам независимо от того, работают они или нет, поэтому если вы используете их в полной мере, это обойдется вам дешевле.
Я предполагаю, что вы спрашиваете в профессиональном, коммерческом контексте, и что мы говорим о большей части вашей системы, а не об одной библиотеке.
Существуют ситуации, когда ваша организация может использовать готовый продукт. Например, немногие люди написали бы свой собственный текстовый процессор - они используют MS Word, или OpenOffice, или что-то еще. То же самое для электронных таблиц. Обратите внимание, что вы можете «настроить» свой текстовый процессор своими собственными шаблонами или макросами, но люди не думают об этом как о настройке. Это просто «использование» текстового процессора, как они это видят.
Может быть возможно использовать более сложные системы таким же образом, от интернет-магазинов до систем ERP. Но наступит момент, когда ваши дизайнеры или специалисты по развитию бизнеса захотят изменений, которые не включены в стандарт. Возможно, редизайн страницы оформления заказа или новый способ расчета скидок.
Если вы знаете это с самого начала, значит, ваше решение - « Сделать или настроить» . Просто купить больше не вариант. И даже если сейчас нет таких требований, ожидаете ли вы, что ваши коллеги предложат их позже?