Quando você escreve um módulo de software em vez de comprar um produto existente?

13

Estou tentando descobrir sua lógica de decisão de quando fazer o que. Estou feliz em fornecer mais contexto, mas quero torná-lo geral por enquanto.

stanigator
fonte
E a opção 3, "usar uma biblioteca de código aberto?" Isso pode realmente ser um compromisso, porque você pode ajustá-lo às suas necessidades.
Nathan Long
@ NathanLong: é um bom ponto, mas eu esperaria que, se o OP estivesse fazendo essa pergunta, significa que é apenas esse cenário que é interessante. Além disso, um produto pode ser de código aberto e ainda ser vendido comercialmente, então acho que você quis dizer "software livre". E, dependendo do tipo de licença, você não pode necessariamente ajustar as suas necessidades (se você planeja revender e é incompatível, por exemplo), então há muitos fatores diferentes a serem observados nesse caminho. (não dizendo que é uma sugestão ruim, embora)
haylem

Respostas:

17

É excessivamente simplificado, eu acho, mas isso é válido como uma diretriz geral:

Em um ambiente pessoal

  • Eu me divirto em codificá-lo?
  • OU aprendo algo ao codificá-lo?

E:

  • Tenho tempo suficiente para codificá-lo?

Se sim, prefiro escrevê-lo do que comprá-lo.

Em um ambiente profissional

Se o custo total de propriedade do produto (incluindo desenvolvimento, teste, manutenção, suporte ou quaisquer despesas relacionadas) for maior que o custo do produto e que o retorno calculado do investimento não compensará esse custo, você estará melhor comprá-lo e seguir em frente.

haylem
fonte
1
+1 é muito importante para ocasionalmente codificar algumas coisas, caso contrário você acaba juntando uma coisa a outra, como um encanador da Internet. Você também precisa equilibrar o "aprenda algo com isso" e determinar se deseja / precisa aprender algo.
perfil completo de Gary Rowe
2
@ GaryRowe: obrigado. É preciso resistir a fazer uma piada sobre "Encanador da Internet" e as tendências atuais da Web e o mercado de trabalho para desenvolvedores da Web. Arggghhhh, é bastante tentador ...
haylem 19/11/12
Em um ambiente profissional, não é apenas o custo de desenvolvimento, mas também o custo de manutenção contínua e o tempo perdido no desenvolvimento.
Gilbert Le Blanc
1
@ GilbertLeBlanc: verdade, Gilbert. Eu meio que quis dizer o custo de ponta a ponta, mas vou esclarecer como você sugeriu, pois realmente deveria ser sobre o custo total de propriedade do produto.
haylem
9

Coisas a considerar para uma decisão de fazer ou comprar

  • custo de desenvolvimento / custo de manutenção vs. custo do produto / custo do contrato de manutenção: é claro que é o óbvio, mas na verdade não é o único. Por exemplo, se eu vou usar o software não apenas para minha própria empresa, mas também quero vendê-lo para outras pessoas, então o cálculo parece bastante diferente

  • Disponibilidade de um produto adequado. Para muitos processos de negócios, simplesmente não há software padrão disponível. Ou há algo disponível, mas não é adequado, pois contém 100 recursos dos quais você precisa apenas 3 de uma maneira ligeiramente diferente, enquanto outros dois recursos importantes estão ausentes.

  • Alguém quer ficar dependente de um fornecedor de terceiros? Fornecedores especialmente pequenos fornecem sempre o risco de que o fornecedor desapareça do mercado no futuro, ou o desenvolvimento adicional do produto não vai na direção que você precisa. Para um produto que você tem sob seu próprio controle, você pode orientar a direção do desenvolvimento muito melhor.

  • Quando preciso de um software específico e o que acontece mais rápido: desenvolvê-lo por conta própria ou comprar algo, adaptá-lo até que se encaixe nos meus processos e implementá-lo? Comprar algo da prateleira pode parecer a alternativa mais rápida e às vezes mais barata, mas eu pessoalmente já vi cenários em que o desenvolvimento de um software exatamente para as necessidades de uma empresa, adequado aos processos de negócios existentes, economizava muito tempo em comparação com a compra de algo e ensinava vários centenas de usuários para fazer seu trabalho de uma maneira nova e diferente, que o custo de desenvolvimento era negligenciável.

Doc Brown
fonte
8

Tudo o que tem a ver com criptografia. Existem 100.000 maneiras de cometer erros e expor seu software a sérias vulnerabilidades de segurança e apenas algumas maneiras de fazê-lo corretamente. É necessário um alto conhecimento para isso.

Pieter B
fonte
+1 Veja também: programmers.stackexchange.com/q/175489/7167
Gary Rowe
É um bom argumento, embora eu ache que há muitas outras coisas que também seriam dignas de pertencer à etiqueta "não brinque com isso". No entanto, para uso pessoal (e desde que não haja exposição e não seja para dados confidenciais), dar uma chance a si mesmo ainda é divertido com criptografia. Reimplementei algumas cifras para se divertir e aprender sozinho há alguns anos. Muitos problemas importantes para se olhar, se divertiram muito e aprendemos muito.
haylem
Eu evitaria comprar criptografia. As bibliotecas de criptografia confiáveis ​​geralmente são de código aberto ou fazem parte do sistema operacional. Confiaria no meu próprio código na maioria das bibliotecas de código fechado. Eu não usaria nenhuma biblioteca que não publique pelo menos uma especificação clara e completa de como seu código criptográfico funciona.
CodesInChaos
O @CodesInChaos muitos pacotes comerciais de "código fechado" fornecem o código fonte.
Pieter B
Na verdade, acho que um código revisado por pares é melhor e que assumir que o invasor não sabe o que é algo é um erro. Mas por que você vincula isso à criptografia?
Ramzi Kahil
0
  • esforço de tempo elevado, produto de montagem existente >> comprar produto
  • interesse pessoal na técnica ou nenhum produto existente que atenda a todos os requisitos >>
    desenvolva por conta própria
bummi
fonte
0

No nível pessoal, desenvolvo uma combinação estranha do que quero e do que seria interessante escrever.

Em nível profissional, o @haylem faz uma boa observação geral sobre quando comprar versus quando escrever. Eu direi que há um elemento enorme que é esquecido: oportunidade. Para empresas maiores, geralmente faz sentido, na minha opinião, escrever aplicativos de linha de negócios de núcleo personalizados (nem todos os aplicativos de linha de negócios) ao fazê-lo, tornando a empresa mais ágil. Existe um custo de oportunidade associado à compra de software, porque sua empresa (e não apenas sua TI) fica bloqueada na maneira do fornecedor de ver seu domínio.

Para a maioria das coisas, isso não importa. É melhor que seu sistema contábil não seja criativo. Seu processador de texto será igual ao de qualquer outra pessoa. Mas o que faz você ser melhor escrito internamente, para que ele possa se adaptar ao que sua empresa está tentando realizar.

Michael
fonte
0

É, como praticamente todas as outras respostas disseram, uma decisão de custo-benefício:

  • Quanto vai me custar em horas de trabalho, materiais, etc., para entregar este projeto a um desenvolvedor interno ou a um contratado externo, para o desenvolvimento personalizado? (geralmente alto; contando sua parte das despesas gerais, mais salário e benefícios, um desenvolvedor experiente custará cerca de US $ 1 por dia; talvez um pouco mais ou menos, dependendo das finanças envolvidas)
  • Quanto me custará comprar o produto conhecido na prateleira? (Depende do produto; programas de uso geral, como editores de texto, geralmente são baratos e até gratuitos, enquanto programas especializados, como produtos de design de caminho de circuito, podem custar milhões)
  • Quais benefícios vou obter de uma solução desenvolvida sob medida? (Normalmente, uma solução personalizada é mais adequada ao seu negócio e, portanto, pode automatizar ou pelo menos digitalizar mais)

Tudo se resume a saber se o custo, compensado pelos benefícios, de uma solução desenvolvida sob medida é menor que o custo do produto pronto para uso.

Também há custos de oportunidade a considerar. Entenda que eles não devem ser incluídos nos custos reais de desenvolvimento versus compra, mas no mundo todo, você deve considerá-los. Se sua equipe interna de desenvolvimento estiver trabalhando nesse projeto, ela não estará trabalhando em nenhum outro projeto; isso significa que, se houver outro projeto na lista que esteja custando dinheiro todos os dias, não será possível, pode ser uma prioridade mais alta, fazendo com que você arquive ou cancele o desenvolvimento personalizado e acompanhe o pacote pronto para uso. No entanto, se não fazer esse projeto significa que sua equipe interna está sentada, o custo do desenvolvedor é imenso; você está pagando à sua equipe de desenvolvimento se eles estão trabalhando ou não, por isso, custará menos se você os usar ao máximo.

KeithS
fonte
0

Suponho que você esteja perguntando em um contexto profissional e comercial e que estamos falando de uma parte importante do seu sistema, e não de uma única biblioteca.

Fazer ou comprar x Fazer ou personalizar

Há situações em que sua organização pode usar um produto pronto para uso. Por exemplo, poucas pessoas escreveriam seu próprio processador de texto - eles usam o MS Word, ou o OpenOffice, ou o que quer. O mesmo para planilhas. Observe que você pode "personalizar" seu processador de texto com seus próprios modelos ou macros, mas as pessoas não pensam nisso como personalização. Isso é apenas "usar" o processador de texto, como eles o vêem.

Pode ser possível usar sistemas mais complicados da mesma maneira, de webshops a sistemas ERP. Mas chegará um momento em que seus designers ou o pessoal de desenvolvimento de negócios desejarão uma mudança que não esteja incluída no padrão. Um redesenho da página de checkout, talvez, ou uma nova maneira de calcular ofertas de desconto.

Se você sabe disso desde o início, sua decisão é realmente Criar ou Personalizar . Just Buy não é mais uma opção. E mesmo se não houver esses requisitos no momento, você espera que seus colegas os apresentem mais tarde?

  • Você tem permissão para personalizar o sistema, além de carregar o logotipo da empresa nos lugares certos?
  • Quão difícil é e pode ser feito por sua equipe ou você precisa contratá-lo com o fornecedor? Observe que existem empresas cujo modelo de negócios inteiro é fornecer serviços premium para um software livre que eles desenvolveram.
om
fonte