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


13

Я намагаюся з'ясувати ваше обґрунтування рішення, коли робити що. Я радий надати більше контексту, але зараз хочу зробити це загальним.


А що з варіантом №3 "використовувати бібліотеку з відкритим кодом?" Це насправді може бути компромісом, оскільки ви можете налаштувати його на свої потреби.
Натан Лонг

@NathanLong: Це хороший момент, але я би сподівався, що якщо ОП задасть це питання, це означає, що цікавий лише цей сценарій. Також продукт може бути з відкритим кодом і все ще продаватися комерційно, тому я думаю, ви мали на увазі "вільне програмне забезпечення". І залежно від виду ліцензії, ви не можете обов'язково підлаштовуватися під свої потреби (якщо ви плануєте перепродажу, і це несумісно, ​​наприклад), тож існує дуже багато різних факторів. (не кажучи, що це погана пропозиція)
haylem

Відповіді:


17

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

В особистому середовищі

  • Мені весело кодувати це?
  • АЛЕ я щось дізнаюсь з кодування?

І:

  • Чи є у мене достатньо часу для кодування?

Якщо так, то я вважаю за краще писати це, ніж купувати.

У професійному середовищі

Якщо загальна вартість власності на продукт (включаючи розробку, тестування, технічне обслуговування, підтримку або будь-які пов'язані з цим витрати) вище, ніж вартість продукту, і розрахована прибуток від інвестицій не компенсує цю вартість, тоді ви краще купувати його і рухатися далі.


1
+1 Дуже важливо періодично кодувати деякі речі самостійно, інакше в кінцевому підсумку ви просто приєднаєте одне до іншого, як Інтернет-водопровідник. Ви також повинні збалансувати "щось дізнатися з цього" і визначити, чи хочете / вам потрібно чогось навчитися.
Гері Роу

2
@GaryRowe: спасибі Потрібно протистояти, щоб пожартувати про "Інтернет-сантехнік" та сучасні тенденції в Інтернеті та на ринку праці веб-розробників. Arggghhhh, хоча це досить спокусливо ...
haylem

У професійному середовищі це не лише вартість розробки, а й постійні витрати на технічне обслуговування та втрачений час на розвиток.
Гілберт Ле Бланк

1
@GilbertLeBlanc: правда, Гілберт. Я начебто мав на увазі кінцеву вартість, але уточню, як ви запропонували, як це дійсно має стосуватися ТСО продукту.
haylem

9

Речі, які слід врахувати для прийняття рішення або зробити покупку

  • вартість розробки / вартість технічного обслуговування порівняно з вартістю товару / вартість договору на технічне обслуговування: звичайно, це очевидно, але це насправді не єдине. Наприклад, якщо я збираюся використовувати програмне забезпечення не тільки для власної компанії, але й хочу продати його іншим, то розрахунок виглядає зовсім інакше

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

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

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


8

Все, що стосується криптографії. Існує 100 000 способів зробити це неправильно і піддавати програмне забезпечення серйозних уразливостей безпеки та лише кілька способів зробити це правильно. Для цього потрібен високий досвід.


+1 Дивіться також: programmers.stackexchange.com/q/175489/7167
Gary Rowe

Це хороший момент, хоча я думаю, що є багато інших речей, які також були б гідними потрапляння під етикетку "не накручуй це". Однак для особистого використання (і доки немає експозиції та не є конфіденційними даними), зробити знімок самостійно все ще цікаво з криптовалютою. Я знову реалізував кілька шифрів для розваги та самонавчання кілька років тому. Багато великих проблем, щоб подивитися, весело розійшлося і навчився тон.
haylem

Я б не купував криптовалюту. Довірені бібліотеки криптовалют зазвичай є відкритим кодом або частиною ОС. Я б довірив власний код у більшості бібліотек із закритим вихідним кодом. Я б не використовував жодної бібліотеки, яка хоча б не публікує чітку і повну специфікацію того, як працює його криптокод.
CodesInChaos

@CodesInChaos досить багато комерційних пакетів із «закритим кодом» надають вихідний код.
Пітер Б

Насправді я вважаю, що рецензований код є кращим, і якщо припустити, що нападник не знає альго, це помилка. Але чому ви це навіть пов'язуєте з криптографією?
Рамзі Кахіль

0
  • великі зусилля в часі, існуючий примірний продукт >> купити товар
  • особисту зацікавленість технікою або відсутнім виробом, що відповідає усім вимогам >>
    розвиваюсь самостійно

0

На особистому рівні я розвиваюся на дивному поєднанні того, що хочу і що було б цікаво написати.

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

Для більшості речей це не має значення. Вашій системі обліку краще не бути творчою. Ваш текстовий процесор буде таким самим, як і будь-хто інший. Але те, що робить вас, може бути краще записати вдома, щоб він міг адаптуватися до того, що ваш бізнес намагається досягти.


0

Це, як майже кожна інша відповідь, це рішення щодо витрат та вигод:

  • Що буде коштувати мені в людино-годинах, матеріалах тощо, щоб дати цей проект власнику забудовника або зовнішньому підрядчику під замовлення? (як правило, висока; враховуючи їх частку накладних витрат, плюс зарплату та пільги, досвідчений розробник обійдеться вам приблизно в день; можливо, трохи більше або менше, залежно від залучених фінансів)
  • Що буде коштувати мені придбати відомий товар з полиці? (Залежить від продукту; програми загального користування, такі як текстові редактори, як правило, дешеві, навіть безкоштовні, тоді як спеціалізовані програми, такі як продукти дизайну контуру, можуть коштувати мільйони)
  • Які переваги я отримаю від розробленого на замовлення рішення? (Зазвичай індивідуальне рішення більше відповідає вашому бізнесу і, таким чином, може автоматизувати або хоча б оцифрувати його більше)

Це зводиться до того, чи є вартість, компенсована вигодами, розробленого на замовлення рішення меншою, ніж вартість товару, який продається на замовлення.

Існують також можливі витрати. Зрозумійте, що вони не повинні включатися до реальних витрат на розвиток в порівнянні з покупкою, але в широкому світі ви повинні їх врахувати. Якщо ваш власний розробник працює над цим проектом, вони не працюють над будь-яким іншим проектом; це означає, що якщо в списку є ще один проект, який щодня коштує вам грошей, це не робиться, можливо, це буде вищим пріоритетом, змушуючи вас відмовитись або навіть скасувати розроблення на замовлення та відправитись із пакетним пакетом. Однак якщо не робити цей проект означає, що ваш власний персонал сидить на руках, вартість розробника зменшилась; ви платите своєму співробітнику з розробки незалежно від того, працюють вони чи ні, тож це обійдеться вам менше в цілому, якщо ви використовуєте їх для їх потенціалу.


0

Я припускаю, що ви запитуєте в професійному, комерційному контексті, і ми говоримо про більшу частину вашої системи, а не про одну бібліотеку.

Зробити або купити проти виготовлення або налаштувати

Бувають ситуації, коли ваша організація може використовувати продукт, який продається на постійній основі. Наприклад, мало хто писатиме власний текстовий процесор - вони використовують MS Word, OpenOffice чи інше. Те саме для електронних таблиць. Зауважте, що ви можете "налаштувати" свій текстовий процесор за допомогою власних шаблонів або макросів, але люди не вважають це налаштуванням. Це просто "використання" текстового процесора, як вони це бачать.

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

Якщо ви знаєте це з самого початку, то ваше рішення дійсно зробити або налаштувати . Просто Купівля - це вже не варіант. І навіть якщо зараз немає таких вимог, чи очікуєте ви, що ваші колеги з ними вийдуть пізніше?

  • Чи дозволено вам налаштувати систему, окрім завантаження логотипу вашої компанії в потрібних місцях?
  • Наскільки це складно, і чи може це зробити ваш персонал чи вам доведеться укласти контракт з продавцем? Зауважте, що є компанії, у яких вся бізнес-модель полягає у наданні преміум-послуг для вільного програмного забезпечення, яке вони розробили.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.