Durante l'apprendimento è meglio usare i plugin di altri o sviluppare i miei? [chiuso]

5

Come ho imparato a programmare, sia nel mio internato che a scuola, ho spesso incontrato situazioni in cui è necessario un software aggiuntivo (da abbastanza semplice a piuttosto complesso) e mi viene quasi sempre detto che Non dovrei sprecare il mio tempo a sviluppare una soluzione e usare qualcosa che qualcun altro ha già fatto.

Ha senso fare questo o dovrei prendermi il tempo per cercare e sviluppare il mio? Al momento sto facendo il mio progetto finale che ho 15 settimane per completare, ma il tutor ed i miei compagni di classe mi dicono di non disturbare. Non posso fare a meno di pensare che sto lasciando passare le opportunità.

    
posta The_Cthulhu_Kid 13.01.2013 - 21:59
fonte

7 risposte

5

Wow questa è una domanda davvero difficile e ad essere onesti non esiste una risposta giusta o sbagliata. Quasi ogni programmatore ha il proprio modo di programmare e quindi di imparare / migliorare le proprie capacità. Direi che ci sono principalmente quattro fasi diverse nell'apprendimento su come codificare e quando / perché devi usare moduli / plug-in / framework:

  1. Se sei all'inizio della tua carriera di programmazione devi imparare a scrivere il codice da solo. Devi giocare con il linguaggio per ottenere una sensazione di ciò che è possibile e cosa non lo è e anche per dare un'occhiata a quali sono i pattern, dove si verificano e come usarli.

  2. In una certa fase, dopo aver scoperto le basi di ciò che significa programmazione, sei pronto per utilizzare moduli / plug-in / framework esistenti. È una necessità imparare a leggere e usare il codice di altre persone. Scopri dove e come i modelli sono stati applicati al codice che altri hanno scritto. L'obiettivo principale di questa fase è imparare che i moduli / plugin / framework possono facilitare il tuo lavoro quotidiano, ma anche che non tutti i moduli / plugin / framework valgono la pena.

  3. Allo stesso tempo stai padroneggiando la seconda fase in cui stai per entrare nella terza. Riproduzione! Non utilizzerai solo moduli / plug-in / framework, dovrai capirli / riprodurli per poterli utilizzare o persino modificarli per contribuire. Quasi ogni volta che utilizzerai il codice di altre persone, estrai e riproduci i dettagli che ti interessano.

  4. Non affidarti mai mai completamente ai framework che altri hanno scritto. Di tanto in tanto riconoscerai anti-schemi o solo codice scritto male (per non parlare degli errori). Anche se non te lo aspetti, quasi ogni modulo / plugin / framework presenta errori e / o comportamenti scorretti (a volte la documentazione non corrisponde al codice reale).

    Quindi l'ultima fase di apprendimento su come programmare e utilizzare moduli / plug-in / framework è di scriverli da soli. Potete vederlo come un buon esercizio per fare alcune delle cose che un modulo / plugin / framework potrebbe fornire da soli. A volte questo ti aiuterà a comprendere appieno il codice che altri hanno scritto.

Per rispondere alla tua domanda devi chiarire te stesso in quale fase sei con le tue capacità di programmazione e, come sembra, quale sia l'obiettivo del tuo progetto finale. Riguarda la creazione di un'applicazione funzionale che utilizza "tanti" moduli / plug-in / framework quanti sono necessari per facilitare il tuo lavoro. Tuttavia, se questo è un compito educativo, molto spesso non si tratta di creare un'applicazione, ma piuttosto di imparare come fare il lavoro. La domanda su cui si aspetta il tuo tutor può essere risolta solo da lui, quindi vai a chiedere.

PS: buona fortuna.

    
risposta data 14.01.2013 - 13:07
fonte
7

Se hai poco tempo per completare un progetto, è una buona idea usare il codice di terze parti. L'unica cosa è capire come funziona (a livello di interfacce) per usarlo correttamente e non ottenere "sorprese".

L'approccio più razionale, penso, è utilizzare il codice di terze parti e completare il tuo progetto. Se dopo ti rimane del tempo, potresti iniziare a sviluppare il tuo codice e sostituire il codice di terze parti con il tuo. Potresti iniziare con i pezzi più interessanti / difficili / stimolanti. E potresti lasciare quelli che si basano, ad esempio, sulla copertura di molti casi diversi e ovvi (come un calendario a tendina). In questo modo eviterai il rischio di non fare il progetto in tempo.

Quando sviluppi il tuo codice e sostituisci quello di terze parti con esso, puoi studiare le tecniche usate in quei codici e cercare di migliorarli. Inoltre, ci sono librerie che sono molto efficienti e ben progettate, quindi studiarle sarebbe molto più utile che creare la stessa funzionalità da solo.

    
risposta data 13.01.2013 - 22:14
fonte
4

Se hai bisogno di fare un lavoro (e il tuo progetto finale probabilmente conta come "un lavoro" in quel contesto) allora l'approccio che tendo ad usare è scrivere il codice cruciale per il problema in questione e usare le librerie dove mi fa risparmiare tempo e non è il nocciolo del problema.

Ad esempio, l'importazione di un file CSV può essere un problema sorprendentemente complesso da risolvere correttamente, se devi gestire tutte le sottigliezze della codifica dei caratteri, interruzioni di riga incorporate, virgolette nidificate, dati formattati in modo errato ecc. È anche (di solito) non è qualcosa che ha un'importanza commerciale speciale, è solo "qualcosa che deve essere fatto".

In tal caso, troverei una libreria, usarla e passare a qualcosa di più importante piuttosto che perdere tempo a reinventare la ruota.

Questo non vuol dire che potrebbe non essere interessante, o istruttivo, o semplicemente divertente fare quelle cose "non-core" tu stesso e probabilmente imparerai molto facendole ma devi imparare a scegliere il tuo battaglie. Dare la priorità a ciò che è importante ti aiuterà a determinare che cosa hai bisogno di scrivere da solo e cosa puoi ottenere da altre fonti.

    
risposta data 14.01.2013 - 10:24
fonte
2

Riutilizza il codice esistente se e quando possibile.

Leggere e comprendere il codice di altre persone è una parte importante dell'apprendimento per diventare un programmatore.

Il codice di altre persone è una grande fonte di idiomi che puoi usare nel tuo lavoro. Se provi a risolvere il problema da solo, senza dubbio lo farai funzionare, e diventerai più abile con le tecniche che già conosci, ma è improbabile che impari nuove tecniche. E i libri di testo di solito si limitano a brevi esempi e quindi a un numero limitato di idiomi.

Cercando di capire il codice di altre persone vedrai anche ciò che è facile da capire. I compiti che ricevi durante l'apprendimento in genere non includono la manutenzione, quindi non devi guardare il codice che hai scritto un anno dopo per vedere se riesci ancora a capirlo, ma in pratica ne avrai bisogno piuttosto spesso. Quindi il codice di altre persone può darti un'idea di cosa usare e cosa evitare per mantenere il codice comprensibile.

È anche una sua abilità importante, dal momento che quando inizi a programmare per vivere, la maggior parte del tempo lavori in una squadra e la maggior parte del tempo lavora su un'applicazione che, almeno in parte, esisteva prima che tu venissi , quindi dovrai capire molto del codice esistente.

Pertanto suggerisco di usare il codice esistente, a meno che non contraddica il compito, ovviamente. E prenditi del tempo per capire prima come usarlo correttamente e poi cercare di capire come funziona.

    
risposta data 14.01.2013 - 11:06
fonte
2

Le priorità. Concentrati su ciò che vuoi raggiungere e in quanto tempo. Sì, è naturale pensare che alcuni elementi costitutivi potrebbero essere migliori, se lo faccio io stesso. Ma tieni presente che ti porterebbe via dall'obiettivo primario e dalle richieste del progetto.

Riutilizza ciò che è disponibile e popolare. I componenti disponibili più comuni sono usati, testati e hanno contribuito a molti sviluppatori (probabilmente più intelligenti di noi). Puoi anche contribuire, molte opportunità di It can be better ci sono. Se non esiste, crea e condividi.

Infine, non riutilizzare solo senza saperlo. Se usi un codice esterno, prenditi del tempo per guardare dentro e vedere come funziona. Impareresti molto.

    
risposta data 14.01.2013 - 11:50
fonte
2

Se stiamo parlando di un progetto scolastico, generalmente penso che la maggior parte del codice dovrebbe essere la tua. Penso che la produttività non sia il pensiero più importante in questa fase.

Deciderei individualmente per ciascun problema, in base alla scala del problema e in che modo il problema è correlato al tuo compito.

Ad esempio, quando stavo facendo un gioco come un progetto scolastico (clone di Breakout con fisica più complicata) ho scritto io stesso il motore fisico, perché era parte essenziale del compito e ho imparato qualcosa da esso. Tuttavia non ho scritto il Serializer XML perché potrebbe essere un progetto a sé stante e non è molto correlato al compito.

    
risposta data 14.01.2013 - 13:48
fonte
2

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.

    
risposta data 14.01.2013 - 13:55
fonte

Leggi altre domande sui tag