¿Cuándo es un buen momento para “reinventar la rueda” en el desarrollo de software?

Creo que realmente puede depender de lo que estás haciendo y cuál es tu objetivo.

En un extremo del espectro, tome los programas COBOL típicos que se ejecutan en los mainframes de IBM en los bancos. Estos programas probablemente sean bastante antiguos, y siempre habrá un arma joven que piense que puede reemplazarlo con Node.js en una PC de $ 500.

Sin embargo, ¿cuál es el costo de la falla si el reemplazo sale mal? El costo es catastrófico . Los bancos no son como Quora, el tiempo de actividad es importante , el hecho de que Quora falle varias veces al día es un poco molesto, pero básicamente no importa. Con los bancos, es importante, no puedes tener

“¡Vaya! esa transferencia de un millón de dólares no se realizó, ¿te importaría volver a hacerlo mañana? Por cierto, el tipo de cambio ha cambiado, por lo que ha perdido 50 mil dólares. ¡Lo siento no lo siento!”

Ahí es donde la reinvención de la rueda probablemente no sea una gran idea. Si tiene un código crítico, funcionando bien, con décadas de depuración, debe pensar mucho en reemplazarlo.

Sin embargo, en el otro extremo del espectro, creo que la reinvención de la rueda es buena y debería alentarse.

Nuestra resistencia a reinventar la rueda significa que el desarrollo de UNIX comenzó hace casi 50 años, y todavía pretendemos que sus copias (GNU / Linux) sean de alta tecnología ahora. No es porque UNIX sea genial (aunque lo es), es porque estamos en una industria increíblemente resistente al cambio.

La gente habla como si la industria de la informática se moviera rápidamente, pero en muchas áreas es glacial, mira un automóvil hoy y un automóvil que tiene 50 años. Mire una consola Linux hoy y una consola UNIX de 48 años.

Ahora, obviamente, hay cambios, muchos cambios, pero al mismo tiempo, la resistencia a reinventar la rueda ha significado que los reemplazos de UNIX como el Plan 9 se ignoraron a favor de simplemente copiar UNIX.

Creo que a menudo es una buena idea, y debería alentarse , solo para deshacerse de todo y comenzar de nuevo.

No creo que veamos mucha innovación en esta industria mientras insistimos firmemente en usar solo las mismas cosas y hacer copias de esas mismas cosas.

Cuando la rueda actual no encaja, y la nueva rueda será demostrablemente mejor.

La frase “reinventar la rueda”, para ser claros, significa crear su propio código, desde cero o desde un nivel inferior, en lugar de usar una biblioteca, herramienta o marco que ya existe.

Hay muchas ocasiones en que las bibliotecas existentes a las que tiene acceso no hacen exactamente lo que necesita. Cuando este es el caso, no solo está bien reinventar la rueda, es importante tomar esa decisión.

Es completamente posible usar una biblioteca que no sea una buena combinación para un problema. Esto es similar al problema común en el que las personas aplican mal los patrones de diseño. A veces es fácil usar las herramientas que son útiles en lugar de las herramientas apropiadas.

El uso de herramientas inapropiadas puede terminar con un código difícil de entender, difícil de mantener y con un rendimiento que es literalmente cientos o miles de veces más lento.

Dicho esto, hoy hay muchas bibliotecas en diferentes niveles de granularidad. Si el gran marco no hace lo que necesita, quizás haya componentes más pequeños que puede ensamblar para crear un marco más apropiado para sus necesidades específicas.

Si necesita alguna funcionalidad específica que no pueda encontrar en una biblioteca apropiada existente, entonces, por todos los medios, cree esa funcionalidad.

Pero siempre que pueda, use los componentes existentes.

¿El mejor momento para “reinventar la rueda” en el desarrollo de software? ”Depende de muchos factores: costos, cambios requeridos y / o características, personal, base de usuarios, detalles de implementación, etc. Continúa …,

Pero el mejor momento para MIRAR “reinventar la rueda” es inmediatamente después de cada lanzamiento. Algunas características planificadas pueden ser difíciles o imposibles con la estructura actual. Si eso sucede, podría desperdiciarse un tiempo valioso, mejor planificarlo.

More Interesting

Trabajando como desarrollador profesional, ¿cuánto tiempo consigues dedicar a tu codificación personal, como la programación competitiva o el desarrollo de aplicaciones?

¿Cómo debe comportarse un desarrollador en estas condiciones?

¿Hay suficientes desarrolladores / ingenieros de software en la India?

¿Cuál es la mejor ciudad para moverse entre Ciudad del Cabo y Johannesburgo para un profesional de TI (desarrollador de software)?

¿Cuáles son algunas cosas que necesito saber si quiero convertirme en desarrollador de software / informático?

¿Existe una desconexión entre los desarrolladores y los usuarios finales? ¿Por qué o por qué no?

Cómo pasar de un trabajo académico al desarrollo de software

¿Qué se debe esperar con una carrera en desarrollo de software?

¿Hay algún récord para la cantidad de código que una persona, o la persona que conduce una organización, ha podido escribir y comercializar?

¿Cómo pueden los desarrolladores de software desarrollar mejor sus habilidades y competencias profesionales?

¿Por qué los desarrolladores de software no escriben para cada código, un 'Documento de diseño'?

Soy un desarrollador de copiar y pegar, ¿cómo me convierto en un verdadero desarrollador de software?

Estoy buscando comenzar una carrera como desarrollador de software, ¿qué habilidades necesito para ingresar al sector de TI y conseguir mi primer trabajo?

Cómo encontrar un buen trabajo desafiante como desarrollador de software

Como hay muchos tipos de desarrolladores de software, ¿podría contarme sobre su área de especialización?