¿Cuándo suele escribir un módulo de software usted mismo en lugar de comprar un producto existente?

13

Estoy tratando de averiguar la razón de su decisión de cuándo hacer qué. Estoy feliz de proporcionar más contexto, pero quiero hacerlo general por ahora.

estancamiento
fuente
¿Qué pasa con la opción # 3, "usar una biblioteca de código abierto?" En realidad, eso puede ser un compromiso, porque puede ajustarlo a sus necesidades.
Nathan Long
@NathanLong: es un buen punto, pero esperaría que si el OP hace esta pregunta, significa que solo este escenario es interesante. Además, un producto puede ser de código abierto y aún venderse comercialmente, así que creo que se refería a "software libre". Y dependiendo del tipo de licencia, no necesariamente se puede ajustar según sus necesidades (si planea revender y es incompatible, por ejemplo), por lo que hay muchos factores diferentes que considerar en este camino. (sin decir que es una mala sugerencia, sin embargo)
haylem

Respuestas:

17

Supongo que está demasiado simplificado, pero eso es cierto como una guía general:

En un ambiente personal

  • ¿Me divierto codificándolo?
  • ¿O aprendo algo al codificarlo?

Y:

  • ¿Tengo suficiente tiempo para codificarlo?

En caso afirmativo, prefiero escribirlo que comprarlo.

En un entorno profesional

Si el costo total de propiedad del producto (incluidos el desarrollo, las pruebas, el mantenimiento, el soporte o cualquier gasto relacionado) es mayor que el costo del producto, y el rendimiento calculado de la inversión no compensará este costo, entonces mejor comprarlo y seguir adelante.

haylem
fuente
1
+1 es muy importante codificar ocasionalmente algunas cosas usted mismo, de lo contrario terminará uniendo una cosa a otra como un Fontanero de Internet. También debe equilibrar el "aprender algo de él" y determinar si desea / necesita aprender ese algo.
Gary Rowe
2
@GaryRowe: gracias. Debe resistirse a hacer una broma sobre "Fontanero de Internet" y las tendencias web actuales y el mercado de trabajo de desarrollo web. Arggghhhh, es bastante tentador ...
haylem
En un entorno profesional, no es solo el costo de desarrollo, sino también el costo de mantenimiento continuo y el tiempo perdido en el desarrollo.
Gilbert Le Blanc
1
@GilbertLeBlanc: cierto, Gilbert. Me refería al costo de extremo a extremo, pero aclararé como sugirió, ya que realmente debería ser sobre el costo total de propiedad del producto.
haylem
9

Cosas a considerar para una decisión de hacer o comprar

  • costo de desarrollo / costo de mantenimiento versus costo del producto / costo del contrato de mantenimiento: por supuesto, eso es lo obvio, pero en realidad no es lo único. Por ejemplo, si voy a usar el software no solo para mi propia empresa, sino que también quiero venderlo a otros, entonces el cálculo se ve de manera bastante diferente

  • Disponibilidad de un producto adecuado. Para muchos procesos de negocios, simplemente no hay un software estándar disponible. O bien, hay algo disponible, pero no es adecuado, ya que contiene 100 características de las que solo necesita 3 de una manera ligeramente diferente, mientras que faltan otras 2 características importantes.

  • ¿Se quiere depender de un proveedor externo? Los vendedores especialmente pequeños le brindan siempre el riesgo de que el vendedor desaparezca del mercado en el futuro, o el desarrollo posterior del producto no va en la dirección que necesita. Para un producto que tiene bajo su propio control, puede dirigir la dirección del desarrollo mucho mejor.

  • ¿Cuándo necesito un software específico y qué es más rápido: desarrollarlo por mi cuenta o comprar algo, adaptarlo hasta que se ajuste a mis procesos y ponerlo en práctica? Comprar algo de la estantería puede parecer la alternativa más rápida y a veces más barata, pero personalmente también he visto escenarios en los que desarrollar un software exactamente para las necesidades de una empresa, que se ajusta a los procesos comerciales existentes, ahorró mucho tiempo en comparación con comprar algo y enseñar varios cientos de usuarios para hacer su trabajo de una manera nueva y diferente, que el costo de desarrollo era despreciable.

Doc Brown
fuente
8

Cualquier cosa que tenga que ver con la criptografía. Hay 100.000 maneras de hacerlo mal y exponer su software a serias vulnerabilidades de seguridad y solo algunas maneras de hacerlo bien. Se necesita una gran experiencia para esto.

Pieter B
fuente
+1 Véase también: programmers.stackexchange.com/q/175489/7167
Gary Rowe
Es un buen punto, aunque creo que hay muchas otras cosas que también merecerían caer bajo la etiqueta "no joder con esto". Sin embargo, para uso personal (y siempre que no haya exposición y no sea para datos confidenciales), darle una oportunidad a usted mismo sigue siendo divertido con el cifrado. Puse en práctica algunos cifrados por diversión y autoaprendizaje hace unos años. Muchos problemas geniales para mirar, me divertí mucho haciéndolo y aprendí muchísimo.
haylem
Evitaría comprar crypto. Las bibliotecas criptográficas de confianza suelen ser de código abierto o parte del sistema operativo. Confiaría en mi propio código sobre la mayoría de las bibliotecas de código cerrado. No usaría ninguna biblioteca que al menos no publique una especificación clara y completa de cómo funciona su código criptográfico.
CodesInChaos
@CodesInChaos bastantes paquetes comerciales de "código cerrado" le dan el código fuente.
Pieter B
En realidad, creo que un código revisado por pares es mejor, y que asumir que el atacante no conoce el algo es un error. Pero, ¿por qué vinculas eso con la criptografía?
Ramzi Kahil
0
  • alto esfuerzo de tiempo, producto de montaje existente >> comprar producto
  • interés personal en la técnica o no existe ningún producto que se ajuste a todos los requisitos >>
    desarrollar por mi cuenta
bummi
fuente
0

A nivel personal, desarrollo una extraña combinación de lo que quiero y lo que sería interesante escribir.

A nivel profesional, @haylem hace un buen punto general sobre cuándo comprar versus cuándo escribir. Diré que hay un gran elemento que se pasa por alto: la oportunidad. Para las empresas más grandes, a menudo tiene sentido, en mi opinión, escribir aplicaciones de línea de negocio centrales personalizadas (no todas las aplicaciones de línea de negocio) cuando hacerlo hace que la empresa sea más ágil. Hay un costo de oportunidad asociado con la compra de software porque entonces su empresa (no solo su TI) está bloqueada en la forma en que el proveedor mira su dominio.

Para la mayoría de las cosas, no importa. Es mejor que su sistema contable no sea creativo. Su procesador de textos será el mismo que el de cualquier otra persona. Pero las cosas que te hacen estar mejor escrito en casa para que pueda adaptarse a lo que tu negocio está tratando de lograr.

Miguel
fuente
0

Es, como casi todas las otras respuestas han dicho, una decisión de costo-beneficio:

  • ¿Cuánto me costará en horas hombre, materiales, etc. dar este proyecto a un desarrollador interno o un contratista externo para que lo desarrolle a medida? (generalmente alto; contando su parte de los gastos generales, más el salario y los beneficios, un desarrollador experimentado le costará alrededor de un gran día; tal vez un poco más o menos dependiendo de las finanzas involucradas)
  • ¿Cuánto me costará comprar el producto conocido de la estantería? (Depende del producto; los programas de uso general, como los editores de texto, suelen ser baratos, incluso gratuitos, mientras que los programas especializados como los productos de diseño de circuitos pueden costar millones)
  • ¿Qué beneficios obtendré de una solución desarrollada a medida? (Normalmente, una solución personalizada se ajusta más a su negocio y, por lo tanto, puede automatizar o al menos digitalizar más)

Todo se reduce a si el costo, compensado por los beneficios, de una solución desarrollada a medida es menor que el costo del producto comercial.

También hay costos de oportunidad a considerar. Comprenda que estos no deben incluirse en los costos reales de desarrollo frente a compra, sino que en el mundo en general, debe considerarlos. Si su personal de desarrollo interno está trabajando en este proyecto, no está trabajando en ningún otro proyecto; eso significa que si hay otro proyecto en la lista que le está costando dinero todos los días que no se realiza, es muy posible que sea una prioridad más alta que haga que deje de lado o incluso cancele el desarrollo personalizado y vaya con el paquete estándar. Sin embargo, si no hacer este proyecto significa que su personal interno está sentado en sus manos, el costo del desarrollador es bajo; le está pagando a su personal de desarrollo si están trabajando o no, por lo que le costará menos en general si los está utilizando a su máximo potencial.

KeithS
fuente
0

Supongo que está preguntando en un contexto profesional y comercial, y que estamos hablando de una parte importante de su sistema en lugar de una sola biblioteca.

Hacer o comprar versus hacer o personalizar

Hay situaciones en las que su organización puede usar un producto comercial. Por ejemplo, pocas personas escribirían su propio procesador de textos: usan MS Word, OpenOffice o lo que sea. Lo mismo para las hojas de cálculo. Tenga en cuenta que puede "personalizar" su procesador de textos con sus propias plantillas o macros, pero la gente no lo considera personalización. Eso es solo "usar" el procesador de textos, tal como lo ven.

Es posible utilizar sistemas más complicados de la misma manera, desde tiendas web hasta sistemas ERP. Pero llegará un momento en que sus diseñadores o la gente de desarrollo de negocios querrán un cambio que no esté incluido en el estándar. Un rediseño de la página de pago, tal vez, o una nueva forma de calcular las ofertas de descuento.

Si lo sabe desde el principio, entonces su decisión es realmente Hacer o Personalizar . Just Buy ya no es una opción. E incluso si no hay tales requisitos en este momento, ¿ espera que sus colegas los mencionen más adelante?

  • ¿Se le permite personalizar el sistema, más allá de cargar el logotipo de su empresa en los lugares correctos?
  • ¿Qué tan difícil es, y puede hacerlo su personal o tiene que contratarlo con el proveedor? Tenga en cuenta que hay empresas cuyo modelo de negocio completo es proporcionar servicios premium para un software gratuito que desarrollaron.
om
fuente