Como desarrolladores de software, constantemente buscamos retos y oportunidades sobre los cuales trabajar. Muchas veces, aprendiendo alguna nueva tecnología, o una nueva herramienta, suelen recordarnos que no vale la pena reinventar la rueda.
Y las personas que lo dicen no suelen equivocarse, ya que muchas veces contamos con recursos, como librerías y frameworks, que nos permiten hacer nuestras aplicaciones más eficientes y rápidas; además de reducir el tiempo de desarrollo y el riesgo de errores.
Esos recursos suelen ser útiles para desarrollos reales, donde no es necesario entender a profundidad cómo funcionan las herramientas y librerías que usamos, así como las implicaciones que pueden tener en el desarrollo de nuestras aplicaciones.
Sin embargo, cuando nos encontramos aprendiendo cómo funcionan las herramientas y librerías; o bien, cuando buscamos profundizar en el conocimiento de una tecnología, es probable que valga la pena reinventar la rueda.
¿Por qué reinventar la rueda? Porque, cuando vemos esa herramienta como una caja negra que nos provee de un resultado determinista dado un conjunto de datos o de procesos, no entendemos cómo funciona realmente.
Y sí, es posible que no siempre necesitemos entender la profundidad de un recurso para poder usarlo. Por ejemplo, si tenemos una librería que nos provee de una función para calcular el área de un triángulo, y yo sé que trabajaré siempre con triángulos, no necesitaré entender la profundidad de la librería para poder usarla.
Sin embargo, cuando profundizamos en un tema en concreto, volver a crear cada uno de los métodos y funciones que utilizamos en el día a día, permitirá que entendamos la importancia que tiene (y las implicaciones) de cada uno de ellos.
Por ese motivo, hay ocasiones en las que vale la pena intentar reinventar React, un intérprete de un nuevo lenguaje de programación, o un Git propio, por poner algunos ejemplos.
¿No suena apasionante?