secciones

El síndrome NIH (Not Invented Here)

En Why we use Ant (or: NIH), Bruce Eckel nos advierte de los peligros del síndrome de “No inventado aquí” (NIH, Not Invented Here). Cuando pienses en crear tu solución propia en lugar de usar el componente o software pre-existente, piensa que:

  1. Nunca es tan sencillo como parece. Empiezas pensando que lo puedes hacer en dos días, y acabas invirtiendo meses.
  2. Probablemente no es la guerra en la que deberías estar. Sería mejor invertir ese tiempo en tu negocio que en hacer algo que ya existe.
  3. Mucha gente lo ha intentado antes y falló. Todos nos creemos los programadores más listos sobre la tierra, pero es para pensarlo.
  4. Consideraciones políticas. Si piensas comercializarlo después, tu producto se encontrará con la barrera de entrada de los productos pre-existentes. Aunque sean peores que el tuyo, el cliente conoce los otros productos.

El artículo es entretenido en si mismo, lleno de jugosas anécdotas, el tipo de relatos que nos gusta a los programadores :-) (por lo menos, el tipo que a mi me gustan) .

7 Comentarios
mig21
7 enero 2004, 18:09 — #1
Es cierto, que el sindrome existe y es grave, pero existe también el contrario: "¿inventar nosotros?, NO" y creo que también es un error. Para dar otra visión un artículo de Joel Spolsky "In Defense of Not-Invented-Here Syndrome". En resumen: inventa en lo que sabes, en lo que eres un experto.Saludos y gracias por tu weblog.
Epaminondas Pantulis
7 enero 2004, 18:11 — #2
Curiosamente, hoy he encontrado otro artículo que habla del síndrome NIH, en el weblog de Russell Beattie:

http://www.russellbeattie.com/notebook/1005616.html

Y creo que en el caso de SWT, le viene como anillo al dedo.
mig21
mig21
7 enero 2004, 18:12 — #3
Creo que no se admiten tags HTML, verdad?, bueno, el link es:

http://www.joelonsoftware.com/articles/fog0000000007.html

Saludos
Juanjo Navarro
8 enero 2004, 19:07 — #4
mig21, efectivamente no se admite HTML. Muy bueno el enlace de Joel on Software, aunque en mi opinión demasiado extremista. Quizá Microsoft se lo pueda permitir, pero para cualquier empresa "de este planeta" hacer su propio compilador es absurdo aunque tenga los más inteligentes programadores de la galaxia.

En cualquier caso la conclusión es interesante: Si quieres diferenciar a tu empresa en algo, no subcontrates ese algo. Efectivamente, si subcontratas, el contratista puede vender lo mismo a otro y se acabo tu diferenciación.

Ahora bien, si tu haces un programa de facturación, ¿no debes usar el componente pre-existente de, por ejemplo, menú? Tu no te vas a diferenciar por ese menu de la competencia, sino por la funcionalidad de tu programa. Está claro que esto ya es una cuestión de riesgo: ¿Puedo confiar en que ese componente me va a dar toda la funcionalidad que necesito? ¿o mejor lo implemento yo? Depende, depende, es una cuestión de coste frente a riesgo.
Juanjo Navarro
8 enero 2004, 19:16 — #5
Epaminondas, no se si ese es un buen ejemplo. Como sabrás ha habido mucha discusión en la red sobre eso.

Por un lado Swing hace las cosa distintas a SWT. Hay quien dice que el modelo de Swing es más escalable, más adaptado a MVC y más fácil de programar. Hay quien dice también que el problema de Swing es cómo se utiliza (mal) y no una carencia del propio sistema (vease el proyecto jgoodies en java.net).

Finalmente creo que existen menos plataformas en las que SWT corre que en las que corre Swing, y Sun promociona tecnologías 100% java.

En cualquier caso tu sabrás más de esto. Mi negocio es java en el servidor y estos temas no los sigo demasiado.

Un saludo.
mig21
9 enero 2004, 12:51 — #6
Si, Juanjo, Joel siempre es extremista. Creo que es una de sus virtudes...

Ah, y tienes razón, la respuesta a casi todas las preguntas es "depende" ;-)
Saludos
Epaminondas Pantulis
9 enero 2004, 14:46 — #7
Juanjo, mi única experiencia al respecto es como usuario -- de hecho me gano la vida programando en C++, no en Java--. ¡Cómo voy a saber más que tú!

:-)

Comentarios cerrados para este artículo

Anterior: Vacaciones de Navidad. Siguiente: UML: Tres modos para tres objetivos