Quanto è importante l'autoapprendimento nel campo della programmazione? [chiuso]


75

Ho 16 anni. Ho iniziato a programmare circa un anno fa quando stavo per iniziare il liceo. Ho intenzione di fare carriera nella programmazione e sto facendo del mio meglio per imparare il più possibile. Quando ho iniziato, ho imparato le basi del C ++ da un libro e da lì ho iniziato a imparare le cose da solo. Oggi sono molto più esperto di un anno fa. Sapevo che dovevo studiare da solo perché il liceo non mi avrebbe (probabilmente) insegnato nulla di prezioso sulla programmazione e voglio essere preparato.

La domanda qui è: quanto è importante studiare la programmazione da soli?


12
Le lingue che uso quotidianamente non esistevano quando andavo al college. Quindi l'autoapprendimento è molto importante per l'apprendimento di nuove tecnologie se si prevede di diventare uno sviluppatore per più di qualche anno.
Jon Strayer,

5
Hai notato che ora sei molto più esperto di un anno fa, infatti scommetto un anno fa che non sapevi quanto potevi imparare! Trovo che questo accada ogni 2-5 anni, guardo indietro e dico "Wow, ho sbagliato tutto e non sapevo nemmeno che fosse possibile farlo meglio". L'autoapprendimento è fondamentale, sempre, se vuoi essere anche moderatamente bravo. Inoltre non vorrei lavorare con qualcuno che non potesse imparare in quel modo.
Bill K,

2
Quando avevo la tua età, non sarei stato in grado di non dedicarmi alla programmazione da solo, anche se ci avessi provato. È troppo divertente. E sì, si è rivelato estremamente importante e utile per la mia carriera, ma è stato solo un bel sottoprodotto. Fallo per divertirti e non dovrai pensare se avrai bisogno dell'esperienza o meno.
Ben Lee,

Risposte:


101

È fondamentale. Non credo di aver mai conosciuto un buon programmatore che non era autodidatta ad un certo livello. Come responsabile delle assunzioni in una grande azienda, posso dire che un candidato che descrive progetti personali e il desiderio di apprendere vincerà uno con una laurea impressionante ogni volta. (Anche se è meglio avere entrambi.)

Ecco la cosa del college: i corsi di informatica insegnano teoria, non tecnologia. Ti insegneranno la differenza tra una tabella hash e un albero B e le basi di come funziona un sistema operativo. Generalmente non insegneranno linguaggi informatici, sistemi operativi o altre tecnologie oltre un livello superficiale.

Ricordo nella notte dei tempi in cui ho seguito la mia prima lezione sulle strutture di dati e abbiamo ottenuto un sottile manuale per questo nuovo linguaggio chiamato "C ++" che avevano deciso di iniziare ad apprendere. Abbiamo avuto due settimane per raccoglierlo abbastanza per scrivere il codice. Questa è stata una buona lezione in sé e per sé. È così che andrà la tua carriera.

La tua scuola probabilmente non ti insegnerà ciò di cui hai bisogno per ottenere un buon lavoro. Le scuole spesso seguono le tendenze del settore da molti anni. Quindi avrai un lavoro. Qualunque compagnia tu vada, quasi certamente non spenderà alcun particolare sforzo per addestrarti. Le cattive compagnie sono troppo economiche e francamente le buone compagnie assumeranno solo persone abbastanza intelligenti da raccoglierle mentre vanno.

Mi sono laureato nel 1987. Sono andato a lavorare come programmatore C con esperienza nei programmi DOS, NetBIOS e "Terminate-and-Stay-Resident". Negli anni successivi, ho avuto poca o nessuna formazione effettiva. Guarda le offerte di lavoro ... non c'è molto bisogno di quelle abilità! L'unica ragione per cui posso essere assunto oggi è perché ho trascorso anni interminabili imparando costantemente. Per avere successo come ingegnere, devi avere l'abitudine di imparare. Cavolo, andrei oltre: devi avere l'amore per l'apprendimento. Devi essere il tipo di persona che si scherza con WebGL o Android o iOS perché sembra divertente. Se sei quel tipo di persona e mantieni l'abitudine all'apprendimento, andrai lontano nel settore.


3
Questo. Anche la teoria è molto importante ed è più difficile essere autodidatta. Tuttavia, non sono d'accordo sulla formazione aziendale. Il nostro settore è molto richiesto in questi giorni e le aziende hanno difficoltà a trovare buoni talenti. (Almeno nella mia zona)
user606723

+1, ho notato un vecchio "TSR in C" nella mia biblioteca della scuola nel 2004. Mi chiedo se sia ancora lì.
Jesvin Jose,

3
La teoria è importante, ma è più facile impararla da soli che in passato, poiché i video di molte classi universitarie sono disponibili online. Oserei dire che si potrebbe imparare di più guardando le lezioni di un grande professore online piuttosto che essere fisicamente presenti alle lezioni di un mediocre.
Jeanne Pindar,

@Steven Burnap: "I corsi di informatica insegnano teoria, non tecnologia" - non è vero. Nella mia università (KIT, Germania), dobbiamo imparare Java (e realizzare alcuni piccoli progetti), nonché alcuni esercizi in C. Una preparazione per ICPC (una competizione come TopCoder) dove impariamo a risolvere i problemi velocemente in C ++ è offerto. Dobbiamo anche realizzare un progetto abbastanza grande (un gruppo ha creato un'applicazione per Windows Phone che può automaticamente decentralizzare stabilire una rete mobile se la rete non funziona a causa di catastrofi naturali). Abbiamo anche un'introduzione a Scala / Haskell.
Martin Thoma,

1
Ma è vero che dovresti sempre realizzare tu stesso dei progetti. L'università offre solo molti punti di partenza. Immagino che se non sei curioso, se non vuoi provare alcune cose, non dovresti voler lavorare come programmatore (come lavoro a tempo pieno).
Martin Thoma,

29

L'autodidatta è molto importante. Non puoi fare affidamento su un'istruzione formale per insegnarti tutto ciò che devi sapere sul tuo campo. Tuttavia, detto ciò, un'istruzione formale è anche molto importante se si vuole entrare in quel campo di carriera ben preparato e ben attrezzato.

Sto andando al college e ho trascorso gli ultimi quattro anni a insegnare a me stesso lo sviluppo del software, di conseguenza ora lavoro per una grande azienda ben nota che mantiene applicazioni aziendali. Non ci vuole un sacco di talento, ma ci vuole un sacco di lavoro e motivazione. Penso che la letteratura e la pratica siano la soluzione migliore per l'apprendimento. È anche importante scegliere un campo specifico in quanto, sebbene sia possibile trasportare lingue e logica in tutti i campi, è possibile diventare veramente "fantastici" solo con una pratica e una comprensione sufficienti in un campo specifico.


8
C'è un'educazione formale e autonoma, ma stai lasciando fuori un mentore sul posto di lavoro, che può essere il modo migliore per ampliare le tue abilità e imparare come è veramente realizzato il software.
JeffO,

1
"Tuttavia, detto ciò, un'educazione formale è anche molto importante se vuoi entrare in quel campo di carriera pronto a prendere una posizione attiva nella forza lavoro". ... Questa frase è molto vaga. Una "posizione attiva" nella "forza lavoro"? Veramente? Che cosa vuol dire, anche?
carne

@blesh Concordato. Modificato il testo.
Johnny Rotten

1
Penso che l'esperienza lavorativa sia la più importante ... ma gran parte di essa è autodidatta. Non puoi aspettarti che tutti nel tuo ufficio ti insegnino tutto, e il meglio prende la loro esperienza da ogni luogo in cui possono ottenerlo ..
user606723

11

Imparare da soli è molto importante. Avere la disciplina per ricercare e raccogliere le conoscenze necessarie per svolgere un compito ti porterà molto più avanti di molti altri che si affidano alla formazione formale per svolgere lo stesso compito. Questo vale per qualsiasi settore, non solo per l'industria del software.

Non fraintendermi, è utile ricevere un addestramento o un'istruzione formale, ma la tua motivazione personale per migliorare le tue abilità ti aiuterà a diventare uno sviluppatore di software migliore. C'è sempre qualcosa da imparare: nuove piattaforme o linguaggi di programmazione con cui sperimentare, metodologie di sviluppo da implementare, strumenti e algoritmi da utilizzare, l'elenco continua. Non tutto ti verrà presentato attraverso la formazione formale e quindi spetta a te conoscere altri argomenti e idee che potrebbero interessarti che ti aiuteranno durante la tua carriera nella programmazione.


6

Nella programmazione, l'auto-insegnamento è ciò che farai ogni giorno. Dovrai insegnarti molte cose, non solo i linguaggi e gli strumenti del computer che continuano a cambiare. Dovrai imparare il codice scritto da altre persone e dovrai risolverlo anche con istruzioni e supervisione minime. In alcune organizzazioni è raro ottenere una vera formazione più di 1 volta all'anno (se mai!). Assicurati di poter fare (e divertirti), altrimenti, considera una carriera diversa mentre sei ancora giovane.


4

L'autoistruzione è un'abilità indispensabile per un programmatore. Troppi no. Se sei bravo, userai questa abilità per il resto della tua carriera.


1
-1: Sono d'accordo sul fatto che l'autoapprendimento è un'abilità indispensabile, ma solo dire che non lo è.
Jim G.

1
+1 Non sono d'accordo con il voto negativo. Direi lo stesso ed è basato anche sulla mia esperienza.
CodeART

1
@Jim - che ragionamento assolutamente assurdo hai lì. Cosa dovrei fare anche io? "Sono d'accordo, ma -1 perché l'hai detto." O_o
Edward Strange,

@CrazyEddie: solo dire qualcosa di vero senza fornire alcune ragioni di supporto non è utile in un forum come questo.
Jim G.

@Jim - Una revisione rudimentale delle tue risposte mi porta a rispondere con "Le persone che vivono nelle case di vetro non dovrebbero lanciare pietre".
Edward Strange,

3

Lo studio autonomo è molto importante perché non avrai sempre opportunità di formazione formale. Quando inizi a cercare un progetto, uno stage o un lavoro, trova quelli che hanno solidi sviluppatori senior che possono davvero insegnarti qualcosa. Essere in un ambiente che fa le cose bene può essere la strada espressa verso il codice di qualità.


3

Posso dirti che ci sono stati diversi posti in cui ho lavorato in cui non avrebbero nemmeno considerato qualcuno che non aveva i propri progetti al di fuori del lavoro. Mostra amore per la programmazione oltre a presentarsi a un lavoro e raccogliere un assegno. Ho intenzione di uscire di qui e dire questo: tutti i programmatori che non amano programmare fanno schifo nel loro lavoro. Ancora peggio, non hanno nulla da aggiungere a qualsiasi squadra a cui potrebbero unirsi.

Prenderei uno sviluppatore junior inesperto che ama ciò che fa così tanto che gioca con il codice nel suo tempo libero su tre sviluppatori di medio livello che stanno solo seguendo i movimenti: quello sviluppatore junior sarà fantastico un giorno e gli altri lo faranno non essere mai meglio di loro.

Se non stai imparando cose nuove, stai solo seduto a dimenticare ciò che sai.


2

Il talento è sopravvalutato.

Ci vogliono almeno 10 anni di pratica prima di poter diventare grandi in una determinata area. Quindi è importante iniziare presto.

Il fatto che tu abbia iniziato in una fase precoce della tua vita a fare qualcosa che ti piace ti porta già molto avanti rispetto al gruppo. Quindi, a meno che tu non abbia ripensamenti sull'area in cui lavorerai, non fermarti ... non fermarti mai!

Considero l'autoapprendimento una delle migliori competenze di un determinato sviluppatore e il secondo è un diploma universitario. Una buona laurea è importante solo perché aggiunge tanta qualità alle tue conoscenze che probabilmente non saresti in grado di raccogliere da solo. Ci sono certamente delle eccezioni a questa regola, ma è tutto ciò che sono; eccezioni.

Inoltre, più esperienza accumuli in anticipo, meglio ti godrai l'università e meglio assorbirai nuovi concetti presentati. All'inizio troverai tutto così facile e inutile, ma molto rapidamente ti sentirai sfidato e desidererai saperne di più.

Dopo aver lasciato il college non smettere mai di imparare in quanto sarà una delle tue migliori caratteristiche. Consiglio di leggere "Il talento è sopravvalutato". Puoi dare un'occhiata a questo breve articolo su quel libro:

http://www.devlounge.net/strategy/the-talent-myth


A proposito di miti ... credo che anche i 10 anni di pratica del mantra siano un mito. Puoi dare a molte persone 100 anni di pratica con alcune abilità e ancora non lo capiranno mai. Certo, potrebbero essere migliori di quando hanno iniziato, ma se non è ancora abbastanza buono, non è abbastanza buono. Inoltre, ho visto i neolaureati girare intorno a sviluppatori molto esperti nello sviluppo di software. Certo, avevano ancora cose da imparare, ma anche sviluppatori molto esperti, anche quelli con 10 anni di pratica. Il talento è molto, molto importante. Senza di essa, puoi arrivare solo così lontano.
Dunk,

@ Dun Sono d'accordo. Penso che l'idea sia più nel senso che anche le persone di talento hanno bisogno di almeno 10 anni per imparare qualcosa di buono e il talento non è un passaporto per la celebrità. Una combinazione di talento e dedizione vera per molti anni è.
Alex,

Sono d'accordo con te. Il talento senza pratica non va oltre. Tuttavia, mi sembra di ricordare di aver letto l'articolo originale e l'autore sosteneva che anche le persone con un talento normale in una determinata abilità possono diventare abbastanza abili con le 10.000 ore di pratica. Sono totalmente in disaccordo con questa valutazione. Diventa davvero ovvio nel campo dello sviluppo del software, specialmente se lavori su applicazioni anche con una media complessità. La stragrande maggioranza degli sviluppatori è in grado di fare solo cose relativamente semplici. Nessuna pratica sembra portarli oltre il punto
Dunk

@Dunk allora forse mancano la passione, non il talento.
Alex,

: Penso che sia abbastanza facile individuare i talenti, anche quando è crudo e inesperto, contro mai.
Dunk,

2

Rispetto a quasi qualsiasi altro campo mi viene in mente, la programmazione è fondamentalmente tutto su auto-educazione. L'istruzione formale in informatica / ingegneria del software è utile, ma non è proprio dove impari a programmare.

Quello che dovresti davvero fare è solo iniziare a lavorare su progetti: costruisci qualcosa che vuoi esistere. E poi unisciti a un progetto open source per lavorare su qualcosa che vuoi essere ancora migliore. L'apprendimento arriva gratuitamente quindi ...


2

Devi imparare tu stesso nuove cose: vai dove ti porta la tua curiosità.

Ottieni anche un'istruzione formale: il 90% di ciò che ti viene insegnato in un'istruzione formale non verrà utilizzato sul posto di lavoro. Ma il 10% che verrà utilizzato sarà qualcosa di strano e oscuro che pensavi in ​​quel momento non sarebbe mai stato di alcuna utilità.

Senza l'educazione formale, soffri del problema meglio descritto come "non sai cosa non sai". L'istruzione formale ti offre un'ampia e ampia copertura di molte cose nella piena consapevolezza che nessuno uscirà mai e userà tutto. Perché quello che userete è qualcosa che non saprete fino a quando non ne avrete bisogno, si tratta di essere preparati in modo da sapere dove andare a cercare.

L'autoapprendimento / curiosità guidata è ciò che ti rende una persona molto più informata e completa. Per non parlare di più prezioso per un datore di lavoro.

Nota a margine: ho trascorso tutta la mia carriera, da quando ho iniziato a programmare all'età di circa 15 anni (sheesh, oltre 25 anni ... quasi 30 anni) scoprendo che oltre alla mia istruzione universitaria, la maggior parte dei corsi di formazione (sai ... impara BLAH in 3 giorni a tempo pieno) sono piuttosto inutili. Questi sono generalmente superficiali, e per quanto riguarda il mantra molto sostenuto "mantenendo le tue abilità", non molto utile per chi ha bisogno di entrare in un profondo dettaglio tecnico. Acquistare libri, usare Internet, approfondire matematica / fisica / architettura / qualunque cosa mi abbia reso utile e prezioso. A un certo punto ero una delle circa 10 persone al mondo con competenze specifiche su una materia particolare - tutte queste conoscenze sono state acquisite dall'autoapprendimento e dall'apprendimento sul posto di lavoro.

L'unica volta per smettere di imparare è quando sei sotto un piede in una scatola di pini.


2

C'è una buona parabola al riguardo:

Il campionato mondiale annuale che si tiene nella Columbia Britannica. I finalisti erano canadesi e norvegesi.

Il loro compito era il seguente. Ognuno di loro che una certa porzione della foresta. Il vincitore è colui che potrebbe abbattere il maggior numero di alberi dalle 8:00 alle quattro del pomeriggio.

Alle otto fischiò e due taglialegna presero posizione. Tagliarono un albero dietro un albero, mentre il canadese non aveva sentito che il norvegese si fermava. Rendendosi conto che questa era la sua occasione, il canadese raddoppiò i suoi sforzi.

Alle nove in punto nel canadese venne a sapere che il norvegese andava di nuovo a lavorare. E ancora, hanno lavorato quasi contemporaneamente, quando da dieci a dieci canadesi hanno sentito che il norvegese si è fermato di nuovo. E ancora, il canadese è andato a lavorare, volendo approfittare della debolezza del nemico.

Alle dieci in norvegese rientrare nel lavoro. Fino alle undici meno dieci, non interruppe brevemente. Con il crescente senso di giubilo canadese ha continuato a lavorare con lo stesso ritmo, sentendo già l'odore della vittoria.

Durò tutto il giorno. Ogni ora del norvegese rimase per dieci minuti e il canadese continuò a lavorare. Quando si sente parlare della fine della competizione, alle quattro del pomeriggio, il canadese era abbastanza sicuro che il premio in tasca.

Puoi immaginare come è stato sorpreso di apprendere che ha perso.

  • Come è successo? - Ha chiesto al norvegese. - Ogni ora, ti ho sentito per dieci minuti di stop. Dannazione, sei riuscito a tagliare più legna di me? È impossibile.

  • In effetti, tutto è molto semplice - ha appena detto il norvegese. - Ogni ora, mi sono fermato per dieci minuti. E mentre continui a tagliare la legna, stavo affilando la mia ascia.

Quindi dovresti studiare tutto il tempo per mantenere la tua ascia affilata .


1
  • È fondamentale, altrimenti resterai indietro

  • Imparo ogni giorno, al lavoro, qui, leggendo libri, ponendo e rispondendo a domande. Più imparo, più capisco quanto poco so.


1

L'autodidatta è molto importante per due motivi:

  • dopo i tuoi studi : come già affermato in altre risposte, l'autoapprendimento è ciò che farai nella tua vita quotidiana come sviluppatore. Non puoi sapere tutto e le aziende lo sanno. Quello che DEVI sapere è come migliorare te stesso. I migliori sviluppatori hanno la capacità di apprendere nuove lingue e nuove tecnologie rapidamente da soli.
  • durante i tuoi studi : la distanza tra ciò che i corsi universitari ti insegneranno e la realtà di quale sarà il tuo lavoro è enorme. In particolare sto parlando di manutenzione e manutenibilità. Una parte essenziale del lavoro di uno sviluppatore consiste nel mantenere il codice legacy (correzioni di bug, miglioramenti, aggiunta di funzionalità, ecc.). È possibile leggere La creazione di software nuovissimo è generalmente una parte importante della maggior parte dei lavori di programmazione? per ulteriori dettagli.
    Poiché il mantenimento del codice legacy è essenziale, dovrai anche scrivere tu stesso un codice manutenibile, e questo viene raramente insegnato con lezioni formali (vedi Come migliorare la formazione degli studenti riguardo alla manutenibilità?). Se non pratichi l'autoapprendimento e leggi molto durante gli studi, è improbabile che tu acquisisca le competenze necessarie che ti renderanno uno sviluppatore migliore della media.
    Non cercare di imparare molte lingue / tecnologie durante gli studi, ma apprendi le buone pratiche e il codice pulito. Ad esempio, durante i tuoi studi dovrai leggere il "Codice pulito" di Robert C. Martin piuttosto che il "Java The Complete Reference" di Herbert Schildt.

-1

L'autoapprendimento è molto importante poiché interiorizzi i concetti a modo tuo e questo aiuta davvero. Scegliere una lingua con cui autoapprendimento è molto importante. Le lingue che hanno una chiara documentazione sono molto importanti e ciò che non vuoi essere è molto ambizioso nel voler imparare troppe lingue popolari troppo in fretta. Da quando hai detto che hai iniziato con c ++, consiglierei java per te, funziona sempre così bene per i programmatori autodidatta.


-1

Probabilmente ho imparato il 95 +% di ciò che so legato alla programmazione provando cose da solo e imparando come funziona. La scuola può aiutare con l'insegnamento di un buon stile di programmazione e l'ottimizzazione del codice per la velocità, ecc., Ma non diventerai mai un "buon" programmatore solo leggendo un libro di testo. Un ottimo modo per sviluppare le capacità di programmazione è trovare i problemi quotidiani che potresti usare un computer per risolvere e provare a scrivere del codice per farlo. Rimanere bloccato fa parte dell'apprendimento. Ho iniziato a voler diventare un sviluppatore web, quindi avrei creato siti Web fittizi abbastanza spesso (non ospitandoli o qualcosa del genere) per testare nuove cose che volevo provare. Ha funzionato abbastanza bene per me!


-1

Ho iniziato a programmare 2 anni fa. La mia scuola non è stata in grado di insegnare bene le lingue e devo andare online e fare molte ricerche su me stesso. Sono uno studente più lento e quindi mi ci sono voluti 2 anni per scrivere il mio primo programma, mentre tutti i miei compagni di scuola stanno ancora lottando o hanno rinunciato alla programmazione.

Ciò dimostra che è meglio che un programmatore sia autodidatta piuttosto che dipendere dalla scuola. La scuola nasconderà sempre le informazioni, poiché pensano che non siamo pronti per questo.


Non sono sicuro di essere d'accordo. Penso che l'auto-insegnamento sia importante, ma c'è sicuramente molto materiale di base che puoi ottenere dall'istruzione formale che ti fornirà gli strumenti per comunicare con gli altri e imparare ad affrontare nuovi problemi invece di quelli che sono già stati risolti.
jmort253,

durante quel periodo ognuno fa fatica a capire cosa sta insegnando la scuola e sta insegnando a un ritmo molto veloce che tutti non sono riusciti a raggiungere.
Jie Liang,

La scuola è un programma di indottrinamento progettato per darci una base di concetti di base, ma spetta a noi continuare quell'istruzione in seguito e continuare ad apprendere da soli.
jmort253,

Sono d'accordo con quello che dici. Questo è autodidatta è un must se vogliamo migliorare con la programmazione.
Jie Liang,

-3

Come sempre in matematica e informatica - ci sono 2 punti di vista: 1. Necessari e 2. Contesti sufficienti

  1. È necessario (auto) imparare durante la tua vita. Nessun'altra opzione per essere e rimanere un buon programmatore.
  2. Il punto sopra riportato non è una condizione sufficiente - è necessario avere una solida preparazione in matematica - il liceo e quindi la laurea in buona università nel campo dell'informatica. Questa è (forse) la condizione sufficiente. Al tuo cervello deve essere insegnato a pensare in modo algoritmico. Questo NON PUO 'essere raggiunto con l'autoapprendimento.

1
Al tuo cervello può essere insegnato a pensare in modo algoritmico senza l'università. Vorrei anche suggerire che ci sono modi migliori per imparare questo che andare all'università (un apprendistato, per esempio, sarebbe più efficace per molte persone). D'altra parte, ci sono molte persone che non riescono a pensare in modo algoritmico indipendentemente da quanti corsi di informatica seguono. L'università è certamente di grande aiuto per la maggior parte dei programmatori, ma non è nemmeno richiesta.
Phil

Se sei esperto nella lettura di libri di testo, la lettura di diversi libri e l'utilizzo di strumenti online come stackexchange.com e i programmatori dovrebbero fornire un ampio background in informatica e algoritmi.
Peter Smith,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.