Sviluppo della ruota che reinventa le tendenze in un'abilità invece di imparare a riluttanza le abilità di ricerca delle ruote? [duplicare]

4

Sono più un reinventore di ruota di alto livello . Sicuramente preferisco utilizzare le funzionalità API esistenti incorporate in un linguaggio e framework popolari di terze parti che so risolvere il problema, tuttavia quando ho un problema particolare che mi sento in grado di risolvere in un tempo ragionevole I am molto riluttante a trovare la soluzione di qualcun altro .

Here are a few reasons why I reinvent:

  1. It takes time to learn a new API
  2. API restrictions might exist that I don't know about
  3. Avoiding re-work of unfamiliar code

Sono in conflitto tra fare quello che so e passare a una nuova tecnica con cui non mi sento a mio agio.

Da una parte ho voglia di seguire il mio istinto e di essere davvero bravo a risolvere i problemi, specialmente quelli con cui non mi sfiderei mai se tutto ciò che facevo fosse cercare di trovare risposte. E d'altra parte mi sento come se potessi perdere alcune importanti competenze come risparmiare tempo trovando la giusta struttura e ampliando le mie conoscenze apprendendo come usare un nuovo framework.

Credo che la mia domanda si riferisca a questo:

La mia attitudine attuale è di attenermi alle API e alle API integrate che conosco bene * e di non passare il mio tempo a cercare github per una soluzione a un problema, so che posso risolverlo entro un ragionevole lasso di tempo. È un ragionevole equilibrio per un programmatore di successo?

* Ovviamente cercherò ancora nuovi framework che risparmino tempo e risolvano / semplificino problemi difficili.

    
posta Korey Hinton 03.06.2013 - 20:04
fonte

2 risposte

17

Le librerie esterne sono, in un certo senso, una forma di YAGNI . Non ne avrai bisogno, fino a quando non lo farai.

Ecco perché. Ogni libreria ampiamente utilizzata è progettata per soddisfare un'ampia gamma di esigenze del programmatore. È generalizzato, in altre parole. Questa generalizzazione aggiunge molta complessità interna e una curva di apprendimento.

Apartelanaturacheiltuoproblemagiustificaquellacomplessitàaggiuntivaelacurvadiapprendimento,èmeglioscrivereautonomamentelasoluzione,perchéotterraiunadattamentomiglioreallatuaapplicazione,menocodicecomplessivoe,inmolticasi,prestazionimigliori.

Naturalmente,cisonotuttiitipidieccezioniaquestaregola.Setroviunasolaclasselàfuoriconunalicenza"fai quello che vuoi con esso" che risolva perfettamente il tuo problema, saresti sciocco a scriverlo da solo. Se hai bisogno di un framework che ti permetta di scrivere applicazioni web leggere con un eccellente controllo del markup, una struttura organizzativa pulita e una filosofia di "fuori mano", saresti pazzo a reinventare MVC.

Per dirla in parole povere, non hai bisogno di una libreria matematica da 100.000 linee da risolvere per 2 + 2. Ma potresti, se stai facendo un'analisi statistica approfondita. Né avresti necessariamente bisogno di un trapano elettrico con una punta Phillips se stai solo prendendo la targa dalla tua auto (anche se probabilmente funzionerebbe). Utilizza lo strumento più adatto per il lavoro.

    
risposta data 03.06.2013 - 20:23
fonte
7

La prossima volta che vai a fare una passeggiata, prova a contare tutte le diverse implementazioni che vedi del concetto wheel . Il fatto che qualche uomo delle caverne molto tempo fa ha inventato la ruota non spinge la gente a creare continuamente nuove versioni di ruote per vari scopi. Nel mondo della programmazione, le librerie e i framework non sono come il concetto wheel , sono come implementazioni wheel . Nel linguaggio di programmazione, wheel è un modello di progettazione.

Quindi no, ovviamente non c'è niente di sbagliato nel creare i propri strumenti, librerie, framework, qualunque cosa. Questo potrebbe essere l'approccio più conveniente, e sei sicuro di ottenere esattamente quello che vuoi.

D'altra parte, dovresti davvero superare la tua riluttanza a usare cose che altre persone hanno scritto. Riusare il codice è spesso meglio che crearne uno proprio perché si ottiene uno strumento che è già stato scritto, testato, debugato e migliorato, e tutto ciò che si deve fare per usarlo è imparare un po 'sulla sua interfaccia. Questo può farti risparmiare un sacco di tempo e denaro. Non è sempre la scelta giusta, ma non è quella che dovresti rifiutare automaticamente.

Se un set di ruote originali si adatta al veicolo che stai costruendo, la lavorazione di un set di cerchioni personalizzati e la fabbricazione dei tuoi pneumatici è spesso eccessivo. Ma se le ruote di scorta non si adattano, o costano troppo, o non funzionano abbastanza bene, costruire la tua potrebbe essere l'opzione migliore.

    
risposta data 03.06.2013 - 21:06
fonte

Leggi altre domande sui tag