Esto siempre es una compensación.
Como programador principiante, debe hacerse dos preguntas al considerar la reutilización del código frente a la reinvención de la rueda cuadrada:
- ¿Aprenderé más sobre el problema que quiero resolver escribiendo todo desde cero o enfocándome en el dominio del problema y dejando de lado la complejidad que no es crítica para el problema que me interesa?
- ¿Es más importante para mí resolver el problema en cuestión o es más importante que comprenda algunos conceptos fundamentales?
Si no tiene que terminar su proyecto, está bien hacer girar sus ruedas sobre problemas complejos que otras personas ya han resuelto, porque aprenderá algo. Pero probablemente pasarás a otra cosa antes de "terminar", lo que puede o no importarte. Otros proyectos comenzarán a verse brillantes rápidamente cuando entres en un dominio complejo que parece simple hasta que comiences a tratar de resolverlo tú mismo.
No te obsesiones con ceder el control porque te estás refiriendo a la forma de pensar de otra persona; concéntrate más en lo que estás tratando de lograr.
Si su objetivo es escribir un analizador HTML porque desea comprender cómo funcionan los analizadores, hágalo. Si su objetivo es escribir un analizador HTML porque desea desinfectar la entrada del usuario o transformar algunos bits aleatorios de HTML, probablemente esté centrado en lo incorrecto, porque probablemente esté más interesado en la aplicación del análisis en lugar del análisis en sí . Si tiene ganas de escribir un analizador HTML porque no quiere tomarse el tiempo para comprender la biblioteca de otra persona, probablemente esté perdiendo el tiempo, porque, al menos en este caso, le garantizo que otra persona ha pasado más tiempo descubriendo cómo para resolver este problema de manera efectiva de lo que tendrás. En casos realmente triviales, puede ahorrar tiempo al no reutilizar el código, pero en los complejos, a menos que la biblioteca que usa sea mala o su capacidad para leer documentación y muestras de código sea mala,
Por otro lado, diría que vale la pena escribir su propia biblioteca de gráficos, ya que estará más enfocado en algoritmos y estructuras de datos fundamentales y transferibles que podrá aplicar a otros dominios, incluso si termina usando la biblioteca de otra persona cuando trabajas en esos problemas.