Proverò a dare un angolo leggermente diverso alle risposte già date.
La mia affermazione principale, ed è ciò a cui ci si abitua, concettualmente, è che nella maggior parte dei casi scrivere il codice non è l'obiettivo . Scrivere codice è il mezzo per un fine. Nella maggior parte dei casi, la fine è ottenere un prodotto software, ottenerlo con una buona qualità e farlo uscire in tempo. Se scrivendo il tuo codice si intralcia quello (e lo sarà. Per praticamente tutti i casi non banali, il tuo codice impiegherà più tempo a scrivere e sarà meno testato), piuttosto che usare le librerie esistenti, perché scrivere codice non è l'obiettivo .
Ci sono, ovviamente, sempre obiettivi secondari. Imparare e migliorare come sviluppatore è uno di questi. Sviluppare competenze interne in un settore problematico o in una tecnologia potrebbe essere un'altra. Questi devono essere tutti considerati al momento di decidere se utilizzare il codice esistente o scrivere un nuovo codice.
Se il tuo progetto sta scrivendo un nuovo strumento per l'analisi delle tendenze di mercato, non ha senso utilizzare il codice di analisi dei dati esistente, poiché è lì che desideri che i tuoi designer e programmatori diano il vantaggio sulla concorrenza. Ma non ha senso scrivere i propri controlli dell'interfaccia utente, poiché non è ciò per cui i tuoi utenti sceglieranno per te.
Tuttavia, se stai scrivendo una nuova piattaforma eCommerce, ha senso utilizzare i componenti esistenti per la gestione degli utenti, l'accesso ai dati e i gateway di pagamento, poiché questi sono materie prime e probabilmente non determinanti, ma do scrivi la tua interfaccia utente, dal momento che la facilità d'uso per clienti e venditori è il principale vantaggio che puoi offrire.
E infine, il progetto scolastico. Hai due obiettivi qui: il primo è imparare. Il secondo è passare e ottenere un buon voto. Questi due sono correlati, ma non identici, e occasionalmente anche contraddittori. Se trascorri le tue 15 settimane sviluppando i tuoi strumenti e plug-in, probabilmente non li spenderai nell'esecuzione dei compiti che ti sono stati addebitati. Ricorda sempre che sono i requisiti del prodotto, non l'eleganza del tuo codice, che contano per chi ordina il progetto.