Kiedy zazwyczaj piszesz moduł oprogramowania, a nie kupujesz istniejący produkt?

13

Próbuję znaleźć uzasadnienie twojej decyzji, kiedy to zrobić. Cieszę się, że mogę podać więcej kontekstu, ale na razie chcę, aby był ogólny.

stanigator
źródło
Co z opcją nr 3: „użyć biblioteki open source?” To może być rzeczywiście kompromis, ponieważ możesz dostosować go do swoich potrzeb.
Nathan Long,
@NathanLong: to dobra rzecz, ale spodziewam się, że jeśli OP zadaje to pytanie, oznacza to, że interesujący jest tylko ten scenariusz. Ponadto produkt może być open source i nadal być sprzedawany na rynku, więc myślę, że miałeś na myśli „wolne oprogramowanie”. I w zależności od rodzaju licencji, niekoniecznie musisz dostosować ją do swoich potrzeb (jeśli na przykład planujesz odsprzedaż i jest ona niezgodna), więc na tej drodze należy spojrzeć na wiele różnych czynników. (nie mówiąc jednak, że to zła sugestia)
szaleństwo

Odpowiedzi:

17

Wydaje mi się, że jest to zbyt uproszczone, ale taka zasada obowiązuje jako ogólna wytyczna:

W środowisku osobistym

  • Czy dobrze się bawię kodując?
  • CZY uczę się z kodowania?

I:

  • Czy mam wystarczająco dużo czasu, aby go zakodować?

Jeśli tak, to wolę napisać niż kupić.

W profesjonalnym środowisku

Jeśli całkowity koszt posiadania produktu (w tym koszty opracowania, testowania, konserwacji, wsparcia lub wszelkich powiązanych kosztów) jest wyższy niż koszt produktu, a obliczony zwrot z inwestycji nie zrównoważy tego kosztu, oznacza to, że lepiej kupić i przejść dalej.

Haylem
źródło
1
+1 bardzo ważne, aby od czasu do czasu samodzielnie zakodować niektóre elementy, w przeciwnym razie po prostu połączysz jedną rzecz z drugą, jak hydraulik internetowy. Musisz także zrównoważyć „nauczyć się czegoś z tego” i ustalić, czy chcesz / musisz się tego nauczyć.
Gary Rowe,
2
@GaryRowe: dzięki. Musi się oprzeć żartowi na temat „hydraulika internetowego” i aktualnych trendów w sieci oraz rynku pracy deweloperów. Arggghhhh, to jednak dość kuszące ...
szaleństwo
W środowisku profesjonalnym to nie tylko koszt rozwoju, ale także bieżące koszty utrzymania i czas stracony na rozwoju.
Gilbert Le Blanc,
1
@GilbertLeBlanc: prawda, Gilbert. Miałem na myśli całkowity koszt, ale wyjaśnię, jak zasugerowałeś, ponieważ tak naprawdę powinno to dotyczyć całkowitego kosztu użytkowania produktu.
haylem,
9

Rzeczy do rozważenia przy podejmowaniu decyzji o zakupie lub zakupie

  • koszt opracowania / koszt konserwacji vs. koszt produktu / koszt umowy serwisowej: to oczywiście oczywista rzecz, ale tak naprawdę nie jedyna. Na przykład, jeśli zamierzam używać oprogramowania nie tylko dla mojej własnej firmy, ale także chcę sprzedawać go innym, wówczas obliczenia wyglądają zupełnie inaczej

  • Dostępność odpowiedniego produktu. W przypadku wielu procesów biznesowych po prostu nie ma dostępnego standardowego oprogramowania. Lub jest coś dostępnego, ale nie jest odpowiednie, ponieważ zawiera 100 funkcji, z których potrzebujesz tylko 3 w nieco inny sposób, a brakuje 2 innych ważnych funkcji.

  • Czy ktoś chce stać się zależny od zewnętrznego dostawcy? Szczególnie mniejsi dostawcy zawsze zapewniają ryzyko, że dostawca zniknie z rynku w przyszłości, lub dalszy rozwój produktu nie pójdzie w pożądanym kierunku. W przypadku produktu, który masz pod kontrolą, możesz znacznie lepiej pokierować kierunkiem rozwoju.

  • Kiedy potrzebuję określonego oprogramowania, a co idzie szybciej: rozwijać go samodzielnie lub kupować, dostosowywać, aż będzie pasować do moich procesów i je wdrażać? Kupowanie czegoś z półki może wydawać się szybszą, a czasem tańszą alternatywą, ale osobiście widziałem również scenariusze, w których tworzenie oprogramowania dokładnie na potrzeby firmy, dopasowane do istniejących procesów biznesowych, pozwoliło zaoszczędzić tyle czasu w porównaniu do zakupu czegoś i nauczenia kilku setki użytkowników, którzy wykonują swoją pracę w nowy i inny sposób, aby koszty rozwoju były nie do zniesienia.

Doktor Brown
źródło
8

Wszystko, co ma związek z kryptografią. Istnieje 100 000 sposobów, aby zrobić to źle i narazić oprogramowanie na poważne luki w zabezpieczeniach oraz tylko kilka sposobów, aby zrobić to dobrze. Potrzebna jest do tego duża wiedza.

Pieter B.
źródło
+1 Zobacz także: programmers.stackexchange.com/q/175489/7167
Gary Rowe
To dobra uwaga, choć myślę, że istnieje wiele innych rzeczy, które również warte byłyby zakwalifikowania pod etykietą „nie pieprzyć się z tym”. Jednak do użytku osobistego (o ile nie ma narażenia i nie dotyczy to wrażliwych danych), samodzielne oddanie strzału jest nadal zabawą z kryptografią. Kilka lat temu wdrożyłem kilka szyfrów do zabawy i samokształcenia. Wiele świetnych problemów do obejrzenia, świetnie się przy tym bawiłem i nauczyłem się mnóstwo.
haylem,
Unikałbym kupowania kryptowalut. Zaufane biblioteki kryptograficzne są zwykle oprogramowaniem typu open source lub częścią systemu operacyjnego. Ufałbym własnemu kodowi w większości zamkniętych bibliotek źródłowych. Nie użyłbym żadnej biblioteki, która przynajmniej nie publikuje jasnej i pełnej specyfikacji działania jej kodu kryptograficznego.
CodesInChaos
@CodesInChaos całkiem sporo komercyjnych pakietów „zamkniętego źródła” podaje kod źródłowy.
Pieter B,
Właściwie uważam, że kod recenzowany jest lepszy, a założenie, że atakujący nie wie, że jest to błąd. Ale dlaczego w ogóle łączysz to z kryptografią?
Ramzi Kahil,
0
  • wysoki nakład czasu, istniejący produkt montażowy >> kup produkt
  • osobiste zainteresowanie techniką lub brak produktu spełniającego wszystkie wymagania >>
    rozwijam na własną rękę
bummi
źródło
0

Na poziomie osobistym rozwijam dziwne połączenie tego, czego chcę i co byłoby interesujące do napisania.

Na poziomie profesjonalnym @haylem ogólnie dobrze rozumie, kiedy kupić, a kiedy pisać. Powiem, że przeoczono ogromny element: szansę. Moim zdaniem, dla większych firm często sensowne jest niestandardowe pisanie podstawowej linii aplikacji biznesowych (nie wszystkich aplikacji biznesowych), gdy czyni to bardziej zwinnym. Z zakupem oprogramowania wiąże się koszt alternatywny, ponieważ wtedy twoje przedsiębiorstwo (nie tylko IT) jest zablokowane przez sposób patrzenia na twoją domenę przez dostawcę.

Dla większości rzeczy to nie ma znaczenia. Twój system księgowy nie powinien być kreatywny. Twój edytor tekstu będzie taki sam jak innych. Ale rzeczy, które sprawiają, że możesz być lepiej napisany w domu, aby dostosować się do tego, co twoja firma stara się osiągnąć.

Michał
źródło
0

Jest to, jak prawie każda inna odpowiedź, decyzja dotycząca kosztów i korzyści:

  • Ile będzie mnie kosztowało osobogodziny, materiały itp., Aby przekazać ten projekt wewnętrznemu deweloperowi lub zewnętrznemu wykonawcy, aby opracować go na zamówienie? (zwykle wysokie; licząc ich część kosztów ogólnych, plus pensję i świadczenia, doświadczony programista będzie cię kosztował około kawałka dziennie; może nieco więcej lub mniej, w zależności od zaangażowanych finansów)
  • Ile będzie mnie kosztować zakup znanego produktu z półki? (Zależy od produktu; programy ogólnego użytku, takie jak edytory tekstu, są zwykle tanie, nawet bezpłatne, podczas gdy specjalistyczne programy, takie jak produkty do projektowania ścieżek obwodowych, mogą kosztować miliony)
  • Jakie korzyści uzyskam z niestandardowego rozwiązania? (Zazwyczaj niestandardowe rozwiązanie jest bardziej dopasowane do Twojej firmy, a tym samym może zautomatyzować lub przynajmniej zdigitalizować więcej)

Sprowadza się to do tego, czy koszt skompensowanego przez korzyści rozwiązania opracowanego na zamówienie jest niższy niż koszt gotowego produktu.

Należy również rozważyć koszty alternatywne. Zrozum, że nie należy ich uwzględniać w rzeczywistych kosztach rozwoju a zakupu, ale w szerszym świecie należy je wziąć pod uwagę. Jeśli wewnętrzny zespół programistów pracuje nad tym jednym projektem, nie pracuje nad żadnym innym projektem; oznacza to, że jeśli na liście znajduje się inny projekt, który kosztuje każdego dnia pieniądze, nie jest to wykonane, może to być wyższy priorytet, powodując odłożenie na półkę, a nawet anulowanie niestandardowego programowania i skorzystanie z gotowego pakietu. Jeśli jednak nie wykonanie tego projektu oznacza, że ​​pracownicy wewnętrzni siedzą na rękach, koszt programisty jest znaczny; płacisz swoim pracownikom programistycznym, niezależnie od tego, czy pracują, czy nie, więc będzie to ogólnie mniej kosztować, jeśli wykorzystasz ich potencjał.

KeithS
źródło
0

Zakładam, że pytasz w profesjonalnym, komercyjnym kontekście i że mówimy o większej części twojego systemu niż o pojedynczej bibliotece.

Zrób lub Kup vs. Zrób lub Dostosuj

Istnieją sytuacje, w których Twoja organizacja może korzystać z gotowego produktu. Na przykład niewiele osób napisałoby własny edytor tekstu - używają MS Word, OpenOffice lub cokolwiek innego. To samo dotyczy arkuszy kalkulacyjnych. Pamiętaj, że możesz „dostosować” edytor tekstu za pomocą własnych szablonów lub makr, ale ludzie nie uważają go za dostosowywanie. To po prostu „używanie” edytora tekstu, tak jak go widzą.

Może być możliwe korzystanie z bardziej skomplikowanych systemów w ten sam sposób, od sklepów internetowych po systemy ERP. Ale nadejdzie moment, w którym twoi projektanci lub osoby odpowiedzialne za rozwój biznesu będą chciały zmiany, która nie jest uwzględniona w standardzie. Być może przeprojektowanie strony kasy lub nowy sposób obliczania ofert rabatowych.

Jeśli wiesz o tym od samego początku, wtedy naprawdę musisz podjąć decyzję lub dostosować . Just Buy nie jest już opcją. A nawet jeśli obecnie nie ma takich wymagań, czy spodziewasz się, że koledzy wymyślą je później?

  • Czy możesz spersonalizować system poza przesyłaniem logo firmy w odpowiednich miejscach?
  • Jak to jest trudne i czy może to zrobić Twój personel, czy musisz zlecić to dostawcy? Należy pamiętać, że istnieją firmy, których cały model biznesowy polega na świadczeniu usług premium dla opracowanego przez nich wolnego oprogramowania.
om
źródło