Come fare progressi consistenti verso l'obiettivo di diventare migliori, al contrario di solo codifica per divertimento? [chiuso]

6

Sono al primo anno delle superiori. Mi piace molto la programmazione (Java) e aspiro a farlo come una carriera nel futuro. Tuttavia questo non è l'argomento di questa domanda.

La mia domanda è: come posso iniziare a rendere un progresso coerente verso l'obiettivo di diventare un grande programmatore?

Ciò che intendo è questo:

Lavoro sui miei progetti, mi diverto a farlo e mi sento un po 'migliorato con ogni progetto che ho finito.

Tuttavia, non mi sento come se mi stavo costantemente muovendo verso "l'obiettivo di diventare un grande programmatore". Voglio avere un senso di 'lavorare verso l'obiettivo'.

Ciò che sento adesso è più simile a "Sto codificando roba che è molto divertente e sto migliorando, ma non mi sento di fare progressi verso il mio obiettivo" ".

"Migliorare leggermente nel tempo perché sto codificando le cose" non mi sembra davvero "fare progressi verso un obiettivo".

A quelli di voi che sono sviluppatori esperti: che consiglio mi può dare di fare progressi costanti verso l'obiettivo di diventare bravo a programmare, al contrario di solo materiale di programmazione per divertimento?

    
posta Aviv Cohn 27.04.2014 - 00:16
fonte

6 risposte

10

Non battere la codifica per divertimento. La cosa fondamentale per diventare un grande programmatore è in realtà programmare. Una volta che vai al college, e alla fine gli affari, scoprirai che pochissimo di scuola e lavoro implica una programmazione vera e propria. Avere la passione per questo da solo ha una lunga strada.

L'altra parte importante è reflection . Dopo aver scritto il codice per divertimento (o nel mezzo di esso se è lungo), prenditi un momento per valutare cosa hai fatto. Cosa è andato bene? Cosa ha succhiato? Perché le cose andavano bene / faceva schifo? Come puoi fare più cose buone e meno cose sucky?

E poi vai al codice di qualcos'altro divertente e interessante.

    
risposta data 27.04.2014 - 01:43
fonte
2

Espandi incrementalmente la tua larghezza e profondità di esperienza, ad esempio:

  • Leggi parti della Spec. linguaggio Java , le specifiche VM e Efficace Java . I programmatori dovrebbero sapere cose come "eccezioni precise", il fatto che leggere o scrivere un puntatore sia atomico e come usare i tipi generici con caratteri jolly.
  • Scrivi programmi in vari domini come app mobili, siti web, robotica e strumenti di sviluppo.
  • Ulteriori informazioni sui linguaggi di programmazione, ad esempio JavaScript, Smalltalk e Clojure.
  • Consegna del software agli utenti. Crea versioni aggiuntive, rendendole migliori per loro.
  • Scrivi un programma con altri programmatori. Utilizza il controllo del codice sorgente (ad esempio git o svn).
risposta data 27.04.2014 - 01:57
fonte
1

Soprattutto, codice. Lotti di codice E riflettici. È così che impari ad apprezzare altre cose, perché senti il dolore che porta a una motivazione per una soluzione. Mentre lo fai:

  • Lavorare con altre persone sui progetti
  • Impara dalle persone meglio di te e sii umile
  • Impara a valutare le parti che non sono strettamente codificanti, ma piuttosto aiutano con la qualità
  • Ottieni la prospettiva da altri paradigmi e linguaggi di programmazione

In altre parole, alcuni dei modi migliori per diventare un programmatore migliore sono non nuove tecniche di codifica in sé. Allo stesso modo, non sono cose che impari al college. Quindi analizziamolo un po 'di più.

Riguardo al # 1. Come osservazione, probabilmente lavorerai su una squadra in futuro, ma per molte cose probabilmente non stai lavorando su una squadra ora che sei al liceo. Lavorare in una squadra significa alcune cose: tollerare gli stili di codifica di altre persone, i progetti e le architetture di altre persone, il cattivo respiro di Bob su Taco Tuesday, inviare il codice a un repository, avere un server di build e avere altre persone che odiano il tuo amato codice. Cose che puoi fare ora:

  • Informazioni su un sistema di controllo del codice sorgente. Usane uno per i tuoi progetti personali. Raccomando Mercurial o Git. Informazioni su e utilizzare la ramificazione; la ramificazione non è solo un concetto brillante, è un vero strumento per assicurarsi che il codice prodotto da una squadra sia stabile quando raggiunge la produzione.
  • Imposta un server di generazione continua di qualche tipo. Questo non ci vorrà molto. Utilizza questo server di build con il controllo del codice sorgente per uno o più progetti.
  • Compra gomma per Bob.

Riguardo al n. 2. Trova persone migliori di te da cui imparare. Questo potrebbe essere difficile al liceo. Cerca persone che siano umili, che non ordinino regolarmente le specifiche, eviti le guerre di fiamma e siano rispettate dagli altri. Quindi leggi il loro codice e guarda come interagiscono con le persone che li circondano.

Per quanto riguarda il # 3. Scopri quali sono i test unitari se non conosci e perché le persone li scrivono (suggerimento, non è solo per la correttezza del codice). Impara un framework di test come NUnit, ecc. Scopri come il mocking può adattarsi (ma non equivale a) test delle unità. Comprendi cosa significa scrivi codice testabile - questo tende ad essere anche più modulare e avere anche un'architettura migliore. Anche se non sono sempre appropriati, comprendere gli iniettori di dipendenza / iniezione di dipendenza. Scrivo C ++ quotidianamente senza un injector delle dipendenze, ma i concetti sono ancora applicati di volta in volta nel mio codice e lo rendono migliore.

Riguardo al n. 4. Impara in modo categoricamente nuovi modi per programmare le cose e affrontare i problemi. Questo probabilmente ha senso fare una volta che conosci bene Java. È come imparare a programmare i pattern: impara che dopo hai fatto un po 'di programmazione (> 10K linee di codice) in modo da poter davvero sentire il loro valore e riconoscere i pattern che hai già fatto. Allo stesso modo, i paradigmi di altri linguaggi possono aiutarti nel tuo linguaggio corrente a volte perché puoi simulare una parte di un concetto per risolvere al meglio un problema. Anche qui non fa male studiare un po 'di storia.

Inoltre, come bonus: impara come comunicare bene le tue idee. Ho avuto molte frustrazioni per molti anni perché ero povero nel comunicare le mie idee ed erano bloccati nella mia testa. Ciò richiede pratica e perseveranza, ma ti libera dall'essere da solo con le tue idee.

La maggior parte di queste cose che non imparerai al college. Imparerai a conoscere algoritmi, teoria, forse l'aroma delle pratiche di ingegneria del software del mese. Ma queste cose (ad eccezione di quale controllo del codice sorgente è il sapore attuale, i concetti che rimangono simili) si spera possano cambiare di meno e aiutarti di più. Questo non è per giù sulla teoria, solo per integrare. Ho scritto un paio di macchine di stato nell'ultima settimana o due.

    
risposta data 27.04.2014 - 06:14
fonte
1

Suggerirei di sfruttare la comunità di software nella tua zona. Cerca un gruppo di utenti o un gruppo di prodotti software che si riunisca regolarmente e abbini gli esercizi di programmazione. L'abbinamento con sviluppatori di talento migliorerà sicuramente le tue abilità più velocemente.

Se non si dispone di un gruppo locale, è ancora possibile trovare sviluppatori con cui condividere online utilizzando la condivisione dello schermo. Trova un progetto su Github che ti interessa e chiedi a uno degli sviluppatori di associarti a te per correggere un bug o creare una nuova funzionalità.

Il coinvolgimento nella comunità avrà anche vantaggi al di fuori del miglioramento delle capacità di codifica. Migliorare le capacità di comunicazione e collaborazione è altrettanto importante se non più importante per diventare un grande sviluppatore.

    
risposta data 27.04.2014 - 15:28
fonte
1
  • Lavorare su una piattaforma unix. Ho lavorato su Unix per 1 anno nel 1999 prima di tornare nel 2010. Non avrei mai dovuto lasciare. Confronta le tue abilità con gli altri sia a livello locale che online per giudicare i tuoi progressi.

  • Usa VI ed evita gli IDE Sono un sink di conoscenza che scadrà. Questo è uno degli elementi immateriali

  • Compra libri di programmazione e fissa obiettivi per leggere i capitoli in x giorni / settimane e assicurati di leggere completamente i libri. Vedi
    Se potessi avere solo un libro relativo alla programmazione nella tua libreria cosa sarebbe e perché? per una buona lista Segna i tuoi progressi per pagine / capitoli / libri - qualsiasi cosa tu preferisca tracciare ti aiuta a continuare.

  • acquista libri di programmazione in un formato online, ad es. un Kindle e fissa degli obiettivi per completarli.

  • migliora l'utilizzo del tuo ambiente di sviluppo sul tuo sistema operativo. È il tuo set di strumenti. Scopri come personalizzarlo e utilizzare gli strumenti e le funzioni disponibili. Questo pagherà costantemente, non sarà un obiettivo in sé.

  • Utilizza gli strumenti di analisi del codice, ad es. Fisheye. Maggiori dettagli sul link ti daranno un feedback sulla qualità del codice e ti aiuteranno a migliorare.

  • trova modi online per lavorare con altri programmatori per condividere e confrontare te stesso con milioni di altri.

  • riconosce che questo apprendimento durerà a lungo. Avere una mentalità a lungo termine.

  • prendi in considerazione l'impostazione di obiettivi su siti Stack Exchange. Ho impostato un obiettivo di 1.000 badge sulla rete e al momento sono al 972.

risposta data 08.06.2015 - 00:16
fonte
0
  • Non lasciare mai che il tuo skillset diventi stagnante - stai sempre spingendo verso nuove aree che non conosci.

  • Continua a fare progetti, perché una comprensione attiva di qualcosa è molto meglio di una comprensione passiva.

  • Raccogli nuovi strumenti, impara nuove lingue, applica nuove ideologie, entra in nuove aree. Tuffati nella parte più profonda.

  • Crea progetti più grandi e più complessi ogni volta.

  • Scrivi qualcosa con un'altra persona, quindi forse altre due o tre persone.

  • Esponiti alla community di programmazione: leggi blog , segui notizie , controlla aggregatori di link .

  • Scrivi tonnellate di codice. Una delle mie citazioni preferite sulla scrittura si applica anche alla programmazione: "Ognuno ha un milione di parolacce in esse: solo una volta che hanno scritto quelle milioni di parole possono iniziare a scrivere bene, quindi scrivere!"

risposta data 07.06.2015 - 23:12
fonte

Leggi altre domande sui tag