Reinventa la rueda frecuentemente
Autor: Jason P Sage

“Sólo tienes que utilizar algo existente, es una tontería reinventar la rueda…”

¿Alguna vez has oído esto o alguna variación? ¡Seguro que sí! Todos los desarrolladores y estudiantes probablemente han escuchado un comentario como éste con frecuencia. ¿Por qué pensarlo? ¿Por qué reinventar la rueda es tan mal visto? Porque, con frecuencia o no, el código existente es código en funcionamiento. Ya ha pasado por algún tipo de control de calidad, pruebas rigurosas y se está utilizando con éxito. Adicionalmente, el tiempo y esfuerzo invertido en la reinvención es poco probable que pague tan bien como usar producto o código base existente. ¿Deberías preocuparte por reinventar la rueda? ¿Por qué? ¿Cuándo?

Quizá has visto publicaciones sobre patrones en el desarrollo de software o libros sobre diseño de software. Estos libros pueden ser aburridos independientemente de la maravillosa información contenida en ellos. Del mismo modo en que ver una película sobre navegación es muy diferente a salir a navegar, así también es usar código existente frente a diseñar tu propio software desde cero, probándolo, rompiéndolo, reparándolo y mejorándolo a lo largo del camino.

Reinventar la rueda no es sólo un ejercicio en dónde colocar constructos de código: se trata de cómo conseguir un conocimiento profundo del funcionamiento interno de varios componentes que ya existen. ¿Sabes cómo funcionan los gestores de memoria? ¿La paginación virtual? ¿Podrías implementarlo por ti mismo? ¿Qué tal las listas doblemente enlazadas? ¿Clases de matrices dinámicas? ¿Clientes ODBC? ¿Podrías escribir una interfaz gráfica de usuario que funcione como alguna otra muy popular que conozcas o te guste? ¿Puedes crear tu propios widgets de navegador web? ¿Sabes cuándo escribir un sistema multiplexado contra uno multihilo? ¿Cómo decidir entre una base de datos basada en archivos o en memoria? La mayoría de los desarrolladores nunca han creado estas implementaciones de software central por sí mismos y, por lo tanto, no tienen un conocimiento profundo de cómo funcionan. Como consecuencia, todo este tipo de software es visto como misteriosas cajas negras que simplemente funcionan. Comprender sólo la superficie del agua no es suficiente para revelarnos los peligros ocultos debajo de ella. No saber las cosas más profundas en el desarrollo de software limitará tu habilidad para crear trabajo estelar.

Reinventar la rueda y hacerlo mal es más valioso que equivocarse la primera vez. ¡Hay lecciones aprendidas en la prueba y error que tienen un componente emocional que la lectura de un libro técnico no te puede ofrecer!

Los hechos aprendidos y la información en los libros son cruciales, pero convertirse en un gran programador es mucho más sobre adquirir experiencia que la recolección de hechos. Reinventar la rueda es tan importante para la educación y habilidades de un desarrollador como lo es el levantamiento de pesas para el fisicoculturista.

Traducción: Espartaco Palma

Leer contribución original