Questo è sempre un compromesso.
In qualità di programmatore principiante, dovresti porsi due domande quando consideri riutilizzare il codice e reinventare la ruota quadrata:
- Imparerò di più sul problema che voglio risolvere scrivendo tutto da zero o concentrandomi sul dominio del problema e mettendo da parte la complessità non critica per il problema a cui sono interessato?
- È più importante per me risolvere il problema in questione o è più importante capire alcuni concetti fondamentali?
Se non hai bisogno di finire il tuo progetto, va bene girare le ruote su problemi complessi che altre persone hanno già risolto, perché imparerai qualcosa. Ma probabilmente passerai a qualcos'altro prima che tu "finisca", il che può o non ha importanza per te. Gli altri progetti inizieranno a sembrare lucidi velocemente quando ti metti in testa su un dominio complesso che sembra semplice finché non inizi a provare a risolverlo da solo.
Non essere ossessionato dal rinunciare al controllo perché stai rimandando al modo di pensare di qualcun altro; concentrati maggiormente su ciò che stai cercando di realizzare.
Se il tuo obiettivo è scrivere un parser HTML perché vuoi capire come funzionano i parser, provaci. Se il tuo obiettivo è scrivere un parser HTML perché vuoi disinfettare l'input dell'utente o trasformare alcuni bit casuali di HTML, probabilmente sei concentrato sulla cosa sbagliata, perché probabilmente sei più interessato all'applicazione del parsing piuttosto che all'analisi stessa .
Se hai voglia di scrivere un parser HTML perché non vuoi perdere tempo a capire la libreria di qualcun altro, stai probabilmente perdendo tempo, perché, almeno in questo caso, garantisco che qualcun altro ha trascorso più tempo a capire come per risolvere questo problema in modo efficace di quello che avrai. In casi davvero banali, puoi risparmiare tempo non riutilizzando il codice, ma in quelli complessi, a meno che la libreria che usi risucchi o la tua capacità di leggere la documentazione e gli esempi di codice facciano schifo, ti farà perdere tempo.
D'altra parte, direi che vale la pena scrivere la tua libreria di grafi, dal momento che sarai più focalizzato su algoritmi trasferibili, fondamentali e strutture dati che sarai in grado di applicare ad altri domini, anche se tu finisci usando la libreria di qualcun altro quando lavori su questi problemi.