Nella mia situazione, come potrei imparare a programmare senza un mentore? [chiuso]

4

Quindi il mio problema potrebbe essere relativamente raro, almeno la maggior parte delle domande su "come imparare a codificare" mi sono imbattuto in una mancanza di comprensione fondamentale di computer o lingue. Sono fluente con Linux, riparando i PC in una certa misura, l'apprendimento di nuove lingue non è un problema per me (ho imparato un po 'di Scheme a consegnare compiti di laboratorio in un solo giorno), ecc. Sono stato nell'open source di KDE progetto e bug corretti e segfaults con successo, anche se quest'ultimo ha richiesto un po 'di assistenza dal momento che mi mancava la necessaria conoscenza del sistema operativo. Ma , c'è un grosso problema.

Non riesco a scrivere codice da zero, specialmente nel mio linguaggio C ++ preferito. Capisco la lingua stessa, senza problemi. Ogni volta che devo progettare una serie di classi per il mio programma (molto semplice), per abbattere le responsabilità tra le funzioni, per scegliere una lingua o una funzione di libreria da utilizzare tra quelle disponibili, vengo a una stalla e trascorro i giorni a partire al maledetto schermo. Ho un ottimo PC, display e presto una nuova tastiera. Ho un sacco di tempo, ma è sprecato girovagando, incapace di fare una scelta o decisione di progettazione. L'essenza del problema è probabilmente che non so cosa sia più corretto o appropriato, e, soprattutto, qual è il modo "comune" per fare questo o quello - Non voglio reinventare la ruota o prendere il torto aproach: guarda l'ultimo paragrafo per capire perché è così.

La radice come sento che sia qui: ho un disperato bisogno di input sulle mie idee, perché siano convalidate o rifiutate, o almeno discusse. La mia università, e nessuna università russa per quel problema (o nessun Uni nel mondo? Come è fatto in Occidente?) Non offre un tale servizio di "consulenza", e nessuno si interessa veramente del vero codice che scrivo. Ieri ho appreso che una volta terminato il corso, non ho il permesso di chiedere aiuto a quel professore sui progetti, il che è comprensibile dal momento che hanno una quantità limitata di tempo libero e gli studenti sono molti. Ho imparato l'inglese con un insegnante molto, molto grande, che mi ha insegnato a parlare effettivamente invece di conoscere solo la grammatica. Forse potrei o dovrei trovare un mentore per farmi passare attraverso le bancarelle all'inizio?

Come posso risolvere questo? In che modo tutte le persone che postano codice su GitHub lo scrivono in primo luogo, ovviamente non c'è alcuna validazione o revisione per progetti personali?

Nel caso in cui ti chiedi da dove provenga, nella mia scuola di matematica ci è stato insegnato ad agire sui probemi in modo "alfabetizzato" e su un feedback costante, oltre a seguire le regole e le pratiche stabilite. Tuttavia, sono comunque riuscito a trovare le mie soluzioni e ovviamente sono state accettate. Ma con questo problema di programmazione che sto descrivendo, sento semplicemente di non conoscere abbastanza regole o esempi da seguire ..

    
posta iksemyonov 19.03.2016 - 16:00
fonte

1 risposta

24

Blog e podcast sono i tuoi mentori. I libri sono i tuoi mentori. I video sono i tuoi mentori. Internet ha reso possibile avere queste cose in abbondanza. Perseguili con vigore.

So che questo mi farà sembrare un veterano, ma quando avevo la tua età non avevo nessun mentore. Non c'erano mentori, perché non esistevano. Internet non esisteva. Buone classi di programmazione non esistevano. Tutto ciò che era disponibile per me era il mio intelletto e un computer. Sapevo più di chiunque altro intorno a me in quel momento. Questo non è un vanto; è proprio così com'era. Gli unici mentori possibili sarebbero stati Bill Gates, Steve Jobs o Steve Wozniak, ma sono abbastanza sicuro che nessuno di questi ragazzi sarebbe venuto a casa mia per insegnarmi come programmare.

Quindi ecco l'accordo. Finché non hai scritto, testato, debugato, riformattato e riscritto, ad esempio, centomila righe di codice in un'applicazione reale, il tuo codice sta per succhiare . Devi capire cosa funziona e cosa no, nel momento, mentre scrivi il codice. In questo modo, non è diverso dall'apprendimento di uno strumento musicale; devi mettere in pratica.

Certamente, ti incoraggio a leggere libri, ascoltare podcast e guardare video. Ti insegneranno i principi di base. Ma nessuno di questi strumenti ti insegnerà come programmare finché non ti eserciti a programmare scrivendo molto buon codice. Ed ecco il problema: nessuno ti guiderà finché non conoscerai i fondamenti, che puoi ottenere senza istruzioni supervisionate, se hai abbastanza talento per essere un programmatore.

Una nota cautelativa: non impazzire troppo nelle regole, nelle "best practice" o nei pattern software finché non comprendi i fondamenti della programmazione abbastanza bene da capire perché queste massime esistono. Se non hai mai scritto alcun codice, è troppo presto per studiare il Principio di Responsabilità Unica, perché non lo capirai e applicheresti erroneamente questo. Non farti risucchiare troppo presto dalla mania dei "modelli software". Se devi chiedere "quale martello dovrei usare per sistemare questo tetto", allora non ne sai abbastanza per riparare il tetto.

E infine, un avvertimento: se stai entrando in programmazione per qualsiasi motivo che non sia quello di amarlo ed essere il migliore che tu possa avere (motivi come soldi, stile di vita, ecc.), sarai infelice e renderai tutti intorno a te infelici. La programmazione è abbastanza aggravante senza che si tratti di una chiamata, e ci sono già troppi programmatori marginali là fuori. Fai un favore al mondo e sii bravo a farlo, o non farlo affatto.

    
risposta data 19.03.2016 - 16:46
fonte

Leggi altre domande sui tag